Практическая работа. Циклические алгоритмы в Pascal Цель работы: повторить способы записи циклических алгоритмов на языке Pascal, закрепить основные этапы информационного компьютерного моделирования при решении учебных задач, научиться составлять программы с использованием вложенных циклических структур.
Теоретические сведения
Цикл с параметром в языке Паскаль обозначается ключевым словом for и имеет одну из двух форм:
for переменная := начальное значение to конечное значение do оператор или
for переменная := начальное значение downto конечное значение do оператор
Текст от слова for до слова do включительно называется заголовком цикла, а оператор после do - телом цикла.
Переменная после слова for называется параметром цикла.
Переменная-параметр цикла также называется «итератор» по своей функции, т. к. она отсчитывает итерации.
Для первой формы цикла с ключевым словом to параметр цикла меняется от начального значения до конечного значения, увеличиваясь всякий раз на единицу, а для второй формы ключевым словом downto — уменьшаясь на единицу. Для каждого значения переменной-параметра выполняется тело цикла. Однократное повторение тела цикла называется итерацией цикла.
Значение параметра цикла после завершения цикла считается неопределенным. Переменная-параметр цикла может иметь любой порядковый тип (к ним относятся целые типы, логический, символьный, перечислимый и диапазонный тип). При этом начальное и конечное значения должны быть совместимы по присваиванию с переменной-параметром цикла.
Например:
var en: (red,green,blue,white); begin
for en := red to blue do write(Ord(en):2); Writeln; for var c := 'a' to 'z' do write(c); end.
Если для цикла for … to начальное значение переменной цикла больше конечного значения или для цикла for … downto начальное значение переменной цикла меньше конечного значения, то тело цикла не выполнится ни разу. Если цикл используется в подпрограмме, то переменная-параметр цикла должна быть описана как локальная.
Изменение переменной-параметра цикла внутри цикла является логической ошибкой. Например, следующий фрагмент является ошибочным: for i := 1 to 10 do begin i := 1; write(i); end;
Для создания вложенного цикла необходимо использовать вторую переменнуюпараметр.
Пример программы, использующей вложенный цикл для отображения таблицы умножения:
var i, j: integer; begin for i := 1 to 10 do begin for j := 1 to 10 do write((j*i):4); Writeln; end; end.
Использование одной переменной в качестве параметра для двух вложенных циклов является логической ошибкой. Например, следующий фрагмент со вложенным оператором for является ошибочным: for i := 1 to 10 do for i := 1 to 5 do write(i);
Оператор цикла while в Pascal Цикл с предусловием - цикл, который выполняется пока истинно некоторое условие, указанное перед его началом. Это условие проверяется до выполнения тела цикла, поэтому тело может быть не выполнено ни разу (если условие с самого начала ложно).
while <условие> do begin
<тело цикла> end;
Условие представляет собой выражение логического типа, а оператор после do называется телом цикла. Перед каждой итерацией цикла условие вычисляется, и если оно истинно, то выполняется тело цикла, в противном случае происходит выход из цикла. Если условие всегда оказывается истинным, то может произойти зацикливание:
while 2 > 1 do write(1);
Оператор цикла repeat-until в Pascal Цикл с постусловием - цикл, в котором условие проверяется после выполнения тела цикла. Отсюда следует, что тело всегда выполняется хотя бы один раз. В языке Паскаль этот цикл реализует оператор repeat..until; в Си - do…while. На языке Pascal цикл с постусловием имеет следующий вид:: repeat
<тело цикла> until <условие>
В отличие от цикла while, условие вычисляется после очередной итерации цикла, и если оно истинно, то происходит выход из цикла. Таким образом, операторы, образующие тело цикла оператора repeat, выполняются по крайней мере один раз.
Обычно оператор repeat используют в ситуациях, где условие нельзя проверить, не выполнив тело цикла. Например:
repeat read(x); until x = 0;
Если условие всегда оказывается ложным, то может произойти зацикливание, как и в случае с while-do:
repeat write(1); until 2 = 1;
1. Составьте программу, выводящую на экран квадраты чисел от 10 до 20.
2. Составьте программу, которая вычисляет сумму чисел от 1 до n. Значение n вводится с клавиатуры.
3. Составьте программу, составьте программу, которая вычисляет произведение чисел от 1 до n. Значение n вводится с клавиатуры.
4. С клавиатуры вводятся n чисел. Составьте программу, которая определяет кол-во отрицательных, кол-во положительных и кол-во нулей среди введённых чисел. Значение n вводится с клавиатуры.
5. Составьте программы перевода старинных русских мер длины, торгового и аптекарского веса (счетчик цикла от 1 до 10)
5.1 саженей в метры (1 сажень равна 2,1366 м)
5.2 из дюймов в сантиметры (1 дюйм равен 2,5 см)
5.3 футов в метры (1 фут равен 0,3048 м)
5.4 драхм в граммы (1 драхма равна 3,7325 г)
5.5 унций в граммы (1 унция равна 29,86 г)
5.6 фунтов в килограммы (1 фунт равен 0,40951 кг)
5.7 аршинов в метры (1 аршин равен 0,7112 м)
5.8 золотников в граммы (1 золотник равен 4,2657 г)
5.9 дюймов в миллиметры (1 дюйм равен 25,3995 мм)
6. В сберкассу на трёхпроцентный вклад положили S рублей. Какой станет сумма вклада через N лет.
7. Даны натуральные числа от 20 до 50.Напечатать те из них, которые делятся на 3, но не делятся на 5.
8. Даны натуральные числа от 35 до 87. Найти и напечатать те из них, которые при делении на 7 дают остаток 1, 2 или 5.
9. Даны натуральные числа от 1 до 50. Найти сумму тех из них, которые делятся на 5 или на 7.
10. Напечатать те из двузначных чисел которые делятся на 4, но не делятся на
6.
11. Найти произведение двузначных нечетных чисел кратных 13.
12. Найти сумму чисел от 100 до 200 кратных 17.
13. Составьте программу, которая вычисляет сумму квадратов чисел от 1 до введенного вами целого числа N.
14. В бригаде, работающей на уборке сена, имеется N сенокосилок. Первая сенокосилка работала m часов, а каждая следующая на 10 минут больше, чем предыдущая. Сколько часов проработала вся бригада?
15. В ЭВМ вводятся по очереди данные о росте N студентов группы. Определить средний рост студентов группы.
16. Задано натуральное число N. Найти количество натуральных чисел, не превосходящих N и не делящихся ни на одно из чисел 2,3,5. 17. Два двузначных числа, записанных одно за другим , образуют четырёхзначное число, которое делится на их произведение. Найти эти числа.
18. Дано натуральное n. вычислить 1/(2 в квадрате) + 1/(4 в квадрате)+ ... +
1/(2n в квадрате) ( в квадрате только n)
19. Дано натуральное n. вычислить: 1 + 1/2 + 1/3 + 1/4 + ... + 1/n.
20. Вычислить : 1+2+4+8+...+ 2 в 10 степени.
21. Вычислить: (1+2)*(1+2+3)*...*(1+2+...+10).
22. Даны действительное (а) и натуральное (n). вычислить: a(a+1)...(a+n-1).
23. Даны действительно х и натуральное n. вычислить: sin x + sin x в квадрате + ... sin x в степени n.
24. Бизнесмен взял ссуду m тысяч рублей в банке под 20% годовых. через сколько лет его долг превысит s тысяч рублей, если за это время он не будет отдавать долг.
25. С помощью оператора while напишите программу вывода всех четных чисел в диапазоне от 2 до 100 включительно.
26. С помощью оператора while напишите программу определения суммы всех нечетных чисел в диапазоне от 1 до 99 включительно.
Вариант |
Задание 1 |
Задание 2 |
Задание 3 |
1. |
1 |
6 |
18 |
2. |
2 |
7 |
19 |
3. |
3 |
8 |
20 |
4. |
4 |
9 |
21 |
5. |
5.1 |
10 |
22 |
6. |
5.2 |
11 |
23 |
7. |
5.3 |
12 |
24 |
8. |
5.4 |
13 |
25 |
9. |
5.5 |
14 |
26 |
10. |
5.6 |
15 |
18 |
11. |
5.7 |
16 |
19 |
12. |
5.8 |
17 |
20 |
13. |
5.9 |
6 |
21 |
14. |
1 |
7 |
22 |
15. |
2 |
8 |
23 |
16. |
3 |
9 |
24 |
17. |
4 |
10 |
25 |
18. |
5.1 |
11 |
26 |
19. |
5.2 |
12 |
18 |
20. |
5.3 |
13 |
19 |
21. |
5.4 |
14 |
20 |
22. |
5.5 |
15 |
21 |
23. |
5.6 |
16 |
22 |
24. |
5.7 |
17 |
23 |
25. |
5.8 |
6 |
24 |
© ООО «Знанио»
С вами с 2009 года.