Практическая работа №3
Программирование циклических алгоритмов на языке Паскаль
Цель работы: научиться программировать алгоритмы циклической структуры, освоить приемы организации цикла с предусловием, цикла постусловием и цикла с параметром на языке Паскаль.
Краткие теоретические сведения
Циклический алгоритм это алгоритм, в котором используется многократное выполнение набора команд, которые повторяются указанное число раз, или пока не выполнено заданное условие.
В Паскале существуют три оператора цикла:
• цикл while … do с предусловием
• цикл repeat … until с постусловием
• цикл for … to… do (с параметром)
Особенность данного вида цикла: операторы цикла будут повторяться до тех пор, пока условие истинно. Его проверка делается каждый раз перед выполнением операторов цикла. Цикл может ни разу не выполниться, если его условие ложно.
На рисунке показано два варианта записи данной структуры на языке программирования Паскаль: с использованием операторных скобок (begin end), выполнение двух и более команд; запись с одной командой.
Пример 1. Вывести на экран первые 10 натуральных чисел.
Program primer1; var i: integer; begin i:=1;
while i<=10 do begin writeln(i); i:=i+1; end; readln; end.
Пример 2. Напечатать слово «Привет» указанное количество раз.
Program primer2; var i,n:integer; begin
write ('количество слов='); readln(n); i:=1; while i<=n do begin {составной оператор} writeln('Привет'); i:=i+1 end; end.
Пример 3. Определить сумму введенных с клавиатуры чисел до тех пор, пока не будет введен ноль.
Решение данной задачи основывается на использовании цикла WHILE, т.к. мы не знаем, когда будет введен ноль, и мы перестанем вводить числа.
program primer3; var a,s:integer; begin s:=0;
writeln('Введите число'); readln(a); while(a<>0) do begin
s:=s+a; {подсчет суммы S} writeln('Введите число'); readln(a); end; writeln('Сумма чисел равна ',S); end.
Пример 4. Вычислить сумму ряда 1+1.5+2+2.5+3+3.5+ .. + 30.
program primer4; var sum:real; n:real; BEGIN sum:=0; n:=1; while n <= 30 do begin sum:=sum+n; n:=n+0.5; end;
writeln('Сумма равна ',sum); end.
Пример 5. Составить таблицу значений функции на отрезке [ -5; 5 ] с шагом 0.5. |
program primer5; var x, y: real; begin
x := -5;
writeln(' x y '); while x <= 5 do begin y := 5 - x*x/2; writeln(x:4:1,' | ',y:5:2); x := x + 0.5
end; end.
Пояснение: Под дробное число x выделяется четыре знакоместа. При этом значение числа x округляется до одного знака после запятой (x:4:1).
Для значения y выделяется пять знакомест, а округление идет до двух знаков после запятой (y:5:2)
Пример 6. Используя алгоритм Евклида, найти НОД двух чисел. |
program NOD; var
M, N: integer; begin
writeln('Введите М и N'); readln(M, N); while M<>N do begin
if M>N then M:=M-N else N:=N-M; end; write('Н0Д = ',M); end.
Особенность данного вида цикла: операторы цикла будут повторяться до тех пор, пока условие ложно. Его проверка делается каждый раз после выполнения операторов цикла. Команды, входящие в тело цикла, всегда выполняются хотя бы один раз.
Пример 7. Выполнить деление числа 100 на 2 до тех пор пока не получим число меньше 10.
program primer7; var b:real; begin b:=100; repeat b:=b/2; until b<10; writeln(b); end.
Пример 8. Вывести на экран числа, начиная с 1 до тех пор пока число не станет равным 50.
program primer8; var b:real; begin b:=0; repeat b:=b+1; writeln(b); until b=50; end.
У данного цикла есть и другие названия: цикл-для, цикл со счетчиком (оператор for to do, оператор цикла с параметром). Особенность данного цикла заключается в том, что использовать его нужно, когда заранее известно количество повторений команд. На рисунке представлена блок схема for (блок-схема цикла с параметром) и его запись на языке программирования Паскаль.
Параметр это целая величина, которая обозначается любой латинской буквой. Чаще всего используют символ i. Начальные и конечные значения параметра тоже целые числа. Счетчик цикла может работать в двух направлениях: увеличение или уменьшение значения параметра.
Как работает цикл с параметром?
Разберемся, как работает оператор for в Паскале. Выполнение начинается с получения переменной i начального значения а. Затем проверяется это значение с конечным значением n. Выполнение операторов цикла происходит в случае, когда i меньше или равно n (при положительном шаге счетчика) или i больше или равно n (при отрицательном шаге счетчика).
Пример 9. Напишите программу, которая выводит на экран 10 строк следующего содержания:
«**++==++**»
program for1; { название программы } var i:integer; { описание переменных } begin { начало программы }
for i:=1 to 10 do { цикл выполняется 10 раз } writeln('**++==++**'); {вывод строки символов на экран } end. { конец программы }
Пример 10. Напишите программу вывода на экран чисел от 1 до 10.
program for2; {Вывод чисел} var i : integer; begin
for i:=1 to 10 do writeln (i); readln; end.
Пример 11. Напишите программу вывода на экран чисел от 10 до 1.
program for3; {Вывод чисел} var i : integer; begin
for i:=10 downto 1 do writeln (i); readln; end.
Пример 12. Дано целое число N (> 0). Найти сумму чисел 1 · 2 · 3 · . . . (N слагаемых).
program for4; { название программы } var i,n,s:integer; begin
write ('введите число слагаемых n='); read(n);
s:=0; {первоначальное произведение не должно быть нулевым} for i:=1 to n do s:=s+i; { вычисление сомножителей} write('s=',s); end.
Пример 13. Дано целое число N (> 0). Найти произведение 1 · 2 · 3 · . . . (N сомножителей).
program for5; { название программы } var i,n:integer; p:real; begin
write ('введите число сомножителей n='); read(n);
p:=1; {первоначальное произведение не должно быть нулевым} for i:=1 to n do
p:=p*i; { вычисление сомножителей} write('p=',p); end.
Пример 14. Напишите программу, которая выводит значения функции y=kx+b на интервале [2, 8] с шагом 1.
rogram for6; { название программы }
var x,a,n:integer; { x- параметр цикла, a,n - интервал} k,b:real; { коэффициенты функции} begin { начало программы } write('Введите значение k = '); readln(k);
write('Введите значение b = '); readln(b);
write('Введите значение начала интервала = '); readln(a);
write('Введите значение конца интервала = '); readln(n);
for x:=a to n do { цикл с параметром } writeln('x=',x,' y=',k*x+b); {вывод значений аргумента и функции } end. { конец программы }
Самостоятельно:
1. Вычислить сумму первых 40 чисел натурального ряда.
2. Вывести на экран 20 раз свое имя и название группы.
3. Вывести на экран все двухзначные числа. Найти их сумму.
4. Вывести на экран все двухзначные числа в порядке их убывания.
5. Вычислить значение функции y = sin(x), для х меняющегося от - до с шагом /4.
6. Вычислить значение функции y = x2 - 1 для х меняющегося от n1 до n2 с шагом 1.
7. Вычислить значение функции y = x2 для х меняющегося от -6 до 6 с шагом 1.
8. Даны 10 чисел, найти их произведение.
9. Даны n действительных чисел. Найти среднее арифметическое всех элементов.
10. Дано натуральное число n. Вывести квадраты чисел от 1 до n.
Выводы:
1. Цикл с предусловием While выполняется до тех пор, пока условие выполнения не станет
ложным, и продолжается, если условие истинно.
2. Цикл с постусловием Repeat выполняется до тех пор, пока условие не станет истинно, если условие ложно, цикл продолжается.
3. Цикл с параметром For используется переменная, называемая параметром цикла или счётчиком. Перед выполнением цикла параметру (счётчику) устанавливается начальное значение. После выполнения шага цикла значение параметра увеличивается на единицу. Цикл продолжается до тех пор пока параметр не достигнет своего конечного значения, которое указывается после to (downto).
Материалы на данной страницы взяты из открытых источников либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.