Методические указания для студентов всех форм обучения Киев -2006 Тема1 : числовые типы. Оператор присваивания icon

Методические указания для студентов всех форм обучения Киев -2006 Тема1 : числовые типы. Оператор присваивания




НазваМетодические указания для студентов всех форм обучения Киев -2006 Тема1 : числовые типы. Оператор присваивания
Сторінка5/8
Дата конвертації26.02.2013
Розмір1.33 Mb.
ТипМетодические указания
1   2   3   4   5   6   7   8
Тема 12: РЕКУРСИЯ

12.1*.

function fib(n:integer):integer;

begin if n<=1

then fib: = 1

else fib:=fib(n-1)+fib(n-2)

end;

Вычислить fib(2) и fib(4).

12.2* Какие из следующих описаний функции f(n), которая должна вычислять факториал от n, правильны?

a) function f(n:integer):integer;

begin f:—n*f(n—1) end; ,

б) function f(n:integer):integer;

begin if n=0 then f:=l

else f:=f(n+l)/(n+l) end;

в) function f(n:integer):integer;

begin if n=0 then f: = l

else f:=n*(n—l)*f(n—2) end;

г) function f(n:integer):integer;

begin if n=0 then f: = l else f:=n*f(n—1) end

12.3* Описать рекурсивную функцию pow(x,n) от вещественного х (х≠0) и целого n, которая вычисляет величину хn согласно формуле



12.4* Рекурсивно описать функцию С(m,п), где 0≤m≤n для вычисления биномиального коэффициента Сmn по следующей формуле:

при 0
12.5* type имя=(Алла, .... Юрий, нет);

Предполагая уже описанными функции Отец(х) и Мать(х), значениями которых являются имена соответственно отца и матери человека по имени х или идентификатор нет, если отсутствуют сведения о соответствующем родителе, описать логическую функцию Потомок(а,b), проверяющую, является ли человек с именем b потомком (ребенком, внуком, правнуком и т. п.) человека с именем а.

12.6 Решить предыдущую задачу в предположении, что имеются функция ЧислоДетей(х), указывающая число детей человека с именем х, и функция Pe6enoK(x,k) указывающая имя k-го ребенка человека с именем x; (k не должно превышать число детей человека х).

12.7* function f(n:integer):integer;

begin if n>100 then f:=n—10

else f:=f(f(n+ll)) end;

Вычислить f(106), f(99) f(85). Какие вообще значения принимает эта функция?

12.8 Описать рекурсивную функцию root(f,a,b,eps), которая методом деления отрезка пополам находит с точностью eps корень уравнения f(x)=O на отрезке [а,Ь].(Считать, что eps>0, aи f(x)—непрерывная и монотонная функция на отрезке [а,6].)

12.9*. const n=40;

type вектор=array [l..n] of real;

Описать функцию min(x) для определения минимального элемента вектора х, введя вспомогательную рекурсивную функцию min1(k), находящую минимум среди последних элементов вектора х, начиная с k-ro.

12.10 type строка=packed array [1..100] of char;

Описать рекурсивную логическую функцию cuмм(s,i,j), проверяющую, является ли симметричной часть строки s, начинающаяся i-м и кончающаяся j-м ее элементами

12.11* Во входном файле задана непустая последовательность положительных вещественных чисел, за которой следует отрицательное число. Описать рекурсивную функцию sum без параметров для нахождения суммы этих положительных чисел.

12.12 Описать рекурсивную функцию digits без параметров, которая подсчитывает количество цифр в тексте, заданном во входном файле (за текстом следует точка).

12.13 Программа. Напечатать в обратном порядке заданный во входном файле текст (за текстом следует точка).

12.14 Программа. Дана последовательность ненулевых целых чисел, за которой следует 0. Напечатать сначала все отрицательные числа этой последовательности, а затем -все положительные (в любом порядке).

12.15* Программа. Во входном файле записана (без ошибок) формула следующего вида:

< формула >::=< цифра >│(< формула > < знак >< формула >)

< знак >::=+│-│*

< цифра >::=0│1│2│3│4│5│6│7│8│9

Ввести эту формулу и вычислить ее значение. (Например, 5→5, ((2-4)*6) →-12.)

  1. Программа. Во входном файле задан текст, за которым следует точка. Проверить, является ли этот текст правильной записью «формулы”(см. предыдущую задачу).

  2. Программа. Во входном файле записано без ошибок логическое выражение следующего вида:

<логическое выражение>::= true | false |

<операция> (<операнды> )

<операция>::=not│ and | or

<операнды>::=<операнд> | <операнд>,.<операнды>

<операнд>::=<логическое выражение>

(У операций and и or может быть любое число операндов, у not—только один.)

Ввести это выражение и вычислить его значение. (Например, and(or(false,not(false)),. true,not(true))→ false)

12.18 Программа. Вo входном файле задан текст, за которым следует точка. Проверить, удовлетворяет ли его структура следующему определению:

<текст>::=<элемент> │ <элемент> <текст>

<элемент>::—а | b | (<текст> )| [<текст>] | {<текст>}

12.19 Программа. Заданный вещественный массив из п различных элементов (n=100) упорядочить по возрастанию следующим методом быстрой сортировки: выбрать какой-нибудь (например, средний) элемент массива и переставить элементы массива так, чтобы слева от выбранного элемента Оказались только меньшие элементы, а справа—только большие (тем самым выбранный элемент окажется .на своем окончательном месте), после чего рекурсивно применитьэтот же метод к левой и правой частям массива










Рис. 6

12.20 («Ханойские башни»). Имеются три колышка А, В и С и п дисков разного размера, перенумерованных от 1 до л в порядке возрастания их размеров. Сначала все диски надеты на колышек А так, как показано на рис. 6, а. Требуется перенести все диски с колышка A на колышек С (рис. 6, в), соблюдая при этом следующие условия: диски можно переносить только по одному, больший диск нельзя ставить на меньший.

Написать программу, которая печатает последовательность действий (в виде «перенести диск с q на r, где q и r—это A, В или С), решающую указанную задачу для п дисков, где п—заданное натуральное число. (Подсказка: при правильном переносе п дисков с Л на С обязательно встретится конфигурация, показанная на рис. 6,б.)

12.21 Программа. Имеется п населенных пунктов, пере нумерованных от 1 до п (п=10). Некоторые пары пунктов соединены дорогами. Определить, можно ли попасть по этим дорогам из 1-го пункта в n-й.

Информация о дорогах задается в виде последователь­ности пар чисел i и j (iуказывающих, что i-й и j-й пункты соединены дорогой; признак конца этой последо­вательности—пара нулей.

  1. Программа. Дано п различных натуральных чи­сел (n=5). Напечатать все перестановки этих чисел.

  2. Задача о 8 ферзях: на шахматной доске расста­вить 8 ферзей так, чтобы они не «били» друг друга.

Написать программу, которая печатает:

а) одну из таких расстановок;

б) все 92 такие расстановки.


Тема 13:^ КОМБИНИРОВАННЫЕ ТИПЫ. ОПЕРАТОР ПРИСОЕДИНЕНИЯ

13.1 Описать комбинированный тип для представления следующего понятия:

а) цена в рублях и копейках;

б)* время в часах, минутах и секундах;

в) дата (число, месяц, год);

г) адрес (город, улица, дом, квартира);

д) семинар (предмет, преподаватель, номер группы, день недели, часы занятия, аудитория);

е) бланк требования на книгу (сведения о книге: шифр, автор, название; сведения о читателе: номер читательского билета, фамилия; дата заказа);

ж)* экзаменационная ведомость (предмет, номер группы, дата экзамена, 25 строчек с полями: фамилия студента, номер его зачетной книжки, оценка за экзамен).

13.2* type масть=(пики,трефы,бубны,червы);

достоинство=(шесть,семь,восемь,девять, десять,валет, дам а,король,туз);

карта=record m:масть; d:достоинство end;

Описать логическую функцию бьет(К1,К2 КМ), проверяющую, «бьет» ли карта К1 карту К2, с учетом того, что масть КМ является козырной.

13.3*.

type строка =packed array [1..15] of char;

вершина=rесоrd название: строк a;

высота:1000. .9999

end;

список=аrrау [1..30] of вершина;

Описать процедуру СамаяВысокая(С), печатающую назва­ние самой высокой вершины из списка С.

13.4 Ответить на следующие вопросы.

а) Верно ли, что все поля записи должны быть раз­ных типов?

б) Почему при описании записи ее поля могут пере­числяться в любом порядке?

в) Верно ли, что названия полей записи могут совпа­дать с именами переменных, констант и других объектов программы, но не могут совпадать с названиями полей других записей?

г) Почему в переменной-поле (т. е. конструкции r.f) имя поля (f) должно указываться явно и не может быть задано в виде выражения?

13.5 Описать следующее понятие в виде массива или в виде записи, а если возможно, то в том и другом виде:

а) обозначение поля шахматной доски (а5, h8 и т. п.);

б) комплексное число;

в) точка в 50-мерном пространстве.

13.6 type точка1=array [(x,y)] of real;

точка2=гесord x,y:real end;

var р1:точка1; р2:точка2; d:real;

а) Почему допустим данный раздел типов, хотя в нем одними и теми же именами и у) обозначены разные объекты (индексы и поля)?

б)* Переменной d присвоить расстояние между точками р1 и р2.

в) Допустимы ли конструкции pl[succ(x)] и p2.succ(x)?

13.7*

type строка=packed array [1..8] of char;

адрес=гесоrd город, улица:строка;

дом, квартира:1. .999

end;

var Адр1,Адр2:адрес;

Используя оператор присоединения, присвоить переменной Адр1 значение, соответствующее адресу «Москва, ул. Ар­бат, д. 1, кв. 5». Кроме того, переменной Адр2 присвоить такое же значение, заменив в нем номер дома на 17.

13.8* type Kpyr=record радиус:геаl;

центр:гесоrd x,y:real end

end;

var К:круг;

Требуется переменной К присвоить значение, соответствующее кругу радиуса 2.5 с центром в точке (0, 1.8). В каких из следующих операторов присоединения правильно решается эта задача, а в каких нет и почему?

а) with К do

begin радиус:=2.5; х:=0; у:=1.8 end;

б) with К do

begin радиус:=2.5; центр.х:=0;

центр.у: = 1.8 end;

в) with К do

begin радиус:=2.5;

with центр do

begin x:=0; у: = 1.8 end

end;

г) with К, центр do

begin радиус:=2.5; х:=0; у: = 1.8 end;

д) with центр, К do

begin радиус:=2.5; х:=0; у:=1,8 end

13.9 Определить комбинированный тип для представления анкеты школьника, включающей в себя, его ФИО, возраст, номера школы и класса и оценки по каким-то пяти предметам.

Описать некоторую переменную данного типа и присвоить ей значение, соответствующее следующей анкете: Петров Иван Ильич, 16 лет, 194-я школа, класс 96, оценки 5. 3, 4, 5, 2.

13.10* type complex=record re,im:real end;

point=record x,y:real end;

var z,w:complex; p:point; re:real;

Определить, какие значения будут иметь переменные z, w, р и re после выполнения следующих операторов:

with z do begin re:=O; im:=l end;

w:=z do re:=l;

with z, w do im:=—im;

with p do begin x:=re; y:=2 end

13.11 Найти ошибки в следующей программе:

program errors (input, output);

type поле=(а,b);.

запись= record a:integer; b:char end;

var х,у:запись; c:char;

function f (var r:запись):запись;

var р:поле;

begin for p:=a to b do f.p:=succ(z.p) end;

begin read(c);

with x do begin a:=ord(c); b:=c end;

y:=x; if x=у then y:=f(x);

with у do writeln(a,x)

end.

13.12 type декарт=record x, y:real end;

поляр=rесоrd г, fi:real end;

{r≥0,-π
Описать процедуры ДП(d, p), преобразующую координаты точки на плоскости из декартовых d в полярные р, и ПД(р, d), выполняющую обратное преобразование.

13.13 type пoлe=record ветр:(a,b,c,d,e,f,g,h);

гориз:1..8

end;

Описать логическую функцию ходферзя(п1, n2), проверя­ющую, может ли ферзь за один ход перейти с поля п1 шахматной доски на поле п2.

13.14 type время=record час:0..23; мин, сек:0..59 end;
Описать:

а) логическую функцию раньше (t1,t2) для проверки, предшествует ли время t1 времени t2 (в рамках суток);

б)* процедуру следсек (t1,t2), присваивающую пара­метру t1 время, на 1 секунду большее времени t (учесть смену суток);

в) процедуру интервал (d t2,t1), которая вычисляет время d, прошедшее от времени t1 до времени t2: d=t2—t1 (считать, что t2>t1).

13.15 type имя=(Аня, Валя, Женя, Петя, Саша, Таня,Шура, Юра);

данные=rесоrd пол: (муж, жен);

рост: 14О. .200 end;

группа=аrrау [имя] of данные;

Описать:

а) функцию средрост (ГР), определяющую средний рост женщин из группы ГР;

б) функцию высокий (ГР) для определения имени самого высокого мужчины из группы ГР;

в) логическую функцию одинрост(ГР), проверяющую, есть ли в группе ГР хотя бы два человека одного роста.

13.16 type paц=record чисел:integer;

знам:l..maxint end;

массив=аrrау [1..20] of рац;

Описать:

а)* логическую функцию равно(а,b), -сравнивающую два рациональных числа а и Ь;

б) процедуру слож(с,а,b), которая складывает рацио­нальные числа а и b и присваивает их сумму рациональному параметру с;

в) процедуру сокр(z), приводящую рациональное число r к несократимому виду;

г) процедуру тах(х,т), присваивающую параметру т наибольшее из рациональных чисел массива х.

13.17 type complex= record re, im:real end;

coeff=record a,b,c;complex end; {a≠0}

Описать процедуру value(p,x,y, которая вычисляет у— значение квадратного трехчлена ах2+bх+с с коэффи­циентами из р в комплексной точке х.

13.18 type костьдомино= record лев, прав:0..6 end;

ряд=аrrау [1..28] of костьдомино;

Описать логическую функцию правильный ряд(r) которая проверяет, правильно ли выставлены кости домино в ряду r (равна ли правая цифра очередной кости левой цифре сле­дующей кости).

13.19 type число=1..31; месяц=1..12;

год=1..2000;

дата=гесord ч:число; м:месяц;

г:год end;

деньнеделн=(пн,вт,ср,чт,пт,сб,вс);

Считая, что все даты даются по григорианскому кален­дарю («новому стилю»), описать:

а) функцию nocлчисло(d) вычисляющую количество дней в том месяце, которому принадлежит дата d;

б) логическую функцию вернаядата(й), проверяющую правильность даты d (т. е. чтобы не было 31 июня и т.п.);

в) функцию числодней(3), подсчитывающую, сколько дней прошло от 1 января 1-го года нашей эры до даты d;

г) функцию MH(d) для определения дня недели, на который приходится дата d (учесть, что 1 января 1-го года нашей эры было понедельником).

13.20. type строка=packed array [1..20] of char;

житель-record

фамилия, город;строка; адрес:гесогd улица:строка; дом, квартира: 1.999

end

end;

список= array [1..15] of житель;

Описать процедуру ИронияСудьбы(С), которая печатает фамилии двух (любых) жителей из списка С, живущих в разных городах по одинаковому адресу.

13.21. type строка=packed array [1..16] of char;

датa=record число:1..31;

месяц: 1.. 12;

год: 1900… 1 979

end;

анкета=гесord фамилия:cтрока;
пол:(муж, жен);
деньрожд:дата

end;

группа= array [1..25] of анкета;

Описать:

а) процедуру старший(Гр, Фам), присваивающую строке Фам фамилию самого старшего мужчины из группы ^ Гр (считать, что такой есть и он единственный);

б) процедуру печ(Гр,Бук), печатающую все фамилии людей из группы Гр, начинающиеся с литеры Бук, и Даты рождения этих людей.

13.22. type слово= packed array [1..9] of char;

номертелефона= 1000000.. 9999999;

знакомый=record фамилия:слово;

номер: номерте лефона

end;

страница=array [1..20] of знакомый;

записнаякнижка= array ['A'..'Z'] of страница;

Считая, что на каждой странице записной книжки указаны фамилии, начинающиеся с одной и той же буквы— индекса этой страницы, описать логическую функцию:

а) номер(ЗП,Ф,НТ) определяющую, есть ли в записной книжке ЗП сведения о знакомом с фамилией ^ Ф, и, если есть, присваивающую параметру НТ номер его телефона;

б) фамияия(ЗП,НТ,Ф), определяющую, есть ли в записной книжке ЗП сведения о знакомом, имеющем телефон с номером НТ, и, если есть, присваивающую параметру Ф фамилию этого знакомого

13.23. const n=300;

type запись=rесоrd ключ:integer;

тело:аrrау [1..99] of 'a'.. 'z'

end;

таблица=array [l..n] оf запись;

Считая, что в таблице записи имеют различные ключи, описать:

а) процедуру упор(Т), упорядочивающую записи таблицы Т по возрастанию их ключей;

б) логическую функцию поиск(Т,К,Н), определяющую, есть ли в таблице Т (все записи которой уже упорядочены по возрастанию их ключей) запись с ключом К, и, если есть, присваивающую ее номер параметру Н.

13.24. Промоделировать работу машины Тьюринга (см., например, [9]):

  • выбрать представление для ленты, автомата и про граммы машины, считая, что лента имеет конечный размер, который так же, как и алфавит машины и набор состояний автомата, известен заранее;

  • написать процедуру, которая начиная с исходной конфигурации (автомат находится в определенном состоянии и «видит» самый левый символ входного слова) моделирует работу машины согласно заданной программе. (Если машина не останавливается через определенное число шагов, процедура должна прекратить вычисления.)

13.25. Программа. Даны комплексное число z (пара вещественных чисел) и вещественное число ε > 0. Вычислить с точностью е значение следующей комплексной функции:

а) ez=1+z/1!+z2/2!+…+zn/n!+….;

б) shz=z+z3/3!+z5/5!+...+z8n+1/(2n+l)!+...;

в) chz=l+z2/2!+z4/4!+...+z2n/(2n) +...;

г) sinz=zz3/3!+z5/ 5!—...+(—l)nz2n+1/(2n+1)!...;

д) cosz=l—z2/2!+z4/4!—...+(—1)nz2n/(2n)!+…;

е) lп(1+z)=z—г2/2+г3/3—...+(— 1)n-1zn/n+…(│z│<1)

ж) arctg z=z—z3/3+z5/5—.,.+(-1)nz2n+1/(2n+1)+1….(│z│<1)._

  1. Программа. Найти корни квадратного трехчлена с заданными комплексными коэффициентами.

  2. Во входном файле содержится информация об итогах зимней сессии на 1 курсе. Сведения о каждом студенте-первокурснике (всего их 400) заданы в виде следующего текста:

<фамилия>, <номер группы>,

<оценка1>, <оценка2>, <оценкаЗ>

причем в фамилии—не более 12 букв, номер группы — целое от 101 до 116, каждая оценка—это 2, 3, 4 или 5, причем первая оценка—за экзамен по матанализу, вторая—по алгебре, третья—по программированию. Сведения о студентах отделены друг от друга точкой с запятой.

Написать программу, которая вводит эту информацию и печатает следующие данные:

а) фамилии студентов, имеющих задолженность хотя бы по одному предмету;

б) «качество».успеваемости, т. е. процент студентов, сдавших все экзамены на 5 и 4;

в) название предмета, который был сдан лучше всего;

г) номера групп в порядке убывания средней успеваемости их студентов.

13.28 Во входном файле записана следующая инфор­мация о каждом из 2000 студентов некоторого вуза: <фамилия>, <имя>, <отчество>, <пол>, <возраст>, <курс> причем в фамилии, имени и отчестве—не более 12 букв, пол указывается буквами М и Ж, возраст—целое от 16 до 35, курс целое от 1 до 5. Сведения о студентах отделены друг от друга точкой с запятой.

Написать программу, которая вводит эту информацию и печатает следующие данные:

а) номер курса, на котором наибольший процент мужчин;

б) самые распространенные мужское и женское имена;

в) фамилии (в алфавитном порядке) и инициалы всех студенток, возраст и отчества которых являются одновременно самыми распространенными.

1   2   3   4   5   6   7   8



Схожі:

Методические указания для студентов всех форм обучения Киев -2006 Тема1 : числовые типы. Оператор присваивания iconМетодические указания и задания по дисциплине «Статистика. Часть 1» для студентов экономических специальностей всех форм обучения печ
Статистические показатели, Статистическое наблюдение, Сводка и группировка статистических данных, Средние величины Методические указания...
Методические указания для студентов всех форм обучения Киев -2006 Тема1 : числовые типы. Оператор присваивания iconМетодические указания для самостоятельной подготовки студентов всех специальностей запорожье, зиэит, 2003
Защита населения в чрезвычайных ситуациях мирного и военного времени / Методические указания для самостоятельной работы студентов...
Методические указания для студентов всех форм обучения Киев -2006 Тема1 : числовые типы. Оператор присваивания iconМетодические указания к подготовке и защите магистерских работ по специальности
Методические указания к подготовке и защите магистерских работ по специальности 050206 «Менеджмент внешнеэкономической деятельности»...
Методические указания для студентов всех форм обучения Киев -2006 Тема1 : числовые типы. Оператор присваивания iconМетодичні вказівки до них. Для студентів ycix спеціальностей ycix форм навчання
Методические указания и задания по курсу «Введение в профессию» для слушателей подготовительных курсов всех форм обучения
Методические указания для студентов всех форм обучения Киев -2006 Тема1 : числовые типы. Оператор присваивания iconМетодические указания к выполнению курсовой работы по дисциплине «Основы маркетинга» для студентов 2 курса дневной формы обучения
Бобрушева В. В. Методические указания к выполнению курсовой работы по дисциплине «Основы маркетинга» для студентов 2 курса дневной...
Методические указания для студентов всех форм обучения Киев -2006 Тема1 : числовые типы. Оператор присваивания iconМетодические указания и контрольные задания по дисциплине «основы программирования и алгоритмические языки» для студентов заочной формы обучения
Методические указания и контрольные задания по дисциплине «основы программирования и алгоритмические языки» для студентов заочной...
Методические указания для студентов всех форм обучения Киев -2006 Тема1 : числовые типы. Оператор присваивания iconМетодические указания рассмотрены и утверждены на заседании кафедры Технология машиностроения
Технологические методы проектирования и производства заготовок деталей машин для студентов специальностей 09. 0202, 09. 0203 дневной...
Методические указания для студентов всех форм обучения Киев -2006 Тема1 : числовые типы. Оператор присваивания iconМетодические указания по оформлению технической и научной документации для студентов специальности
Автоматизация проектирования компьютерных систем. Методические указания по курсовому проектированию для студентов специальности “Компьютерные...
Методические указания для студентов всех форм обучения Киев -2006 Тема1 : числовые типы. Оператор присваивания iconМетодические указания к практическим занятиям №1÷7 по дисциплине: "Размерный анализ технологических процессов" для студентов специальности 09. 0202
Размерный анализ технологических процессов для студентов специальности 09. 0202 «Технология машиностроения» дневной и заочной форм...
Методические указания для студентов всех форм обучения Киев -2006 Тема1 : числовые типы. Оператор присваивания iconМетодические указания к практическим занятиям и разделу курсового проекта по дисциплинам «Детали машин» и«Прикладная механика» для студентов технических специальностей
«Детали машин» и «Прикладная механика» для студентов технических специальностей дневной и заочной форм обучения/Перераб. В. И. Пахалюк,...
Додайте кнопку на своєму сайті:
Документи


База даних захищена авторським правом ©te.zavantag.com 2000-2017
При копіюванні матеріалу обов'язкове зазначення активного посилання відкритою для індексації.
звернутися до адміністрації
Документи