
- •Содержание
- •Линейные алгоритмы
- •Язык программирования Turbo Passcal
- •Типы переменных в Паскале:
- •Стандартные операции и функции от скалярных данных.
- •Структура программы на Pascal
- •Команда присваивания
- •Команды ввода и вывода
- •Справка по работе с системой Turbo Pascal
- •Условный оператор, оператор множественного выбора Алгоритмы с ветвлением
- •Ветвление в Pascal Логические выражения
- •Логические операции
- •Команды ветвления
- •1. Условный оператор if
- •2. Оператор Case.
- •3. Команда безусловного перехода goto
- •Циклы Алгоритмы с циклами
- •1. Цикл с предусловием
- •2. Цикл с постусловием.
- •Циклы в Pascal
- •1. Цикл с параметром
- •2. Цикл с предусловием.
- •3. Цикл с постусловием
- •Вложенные циклы
- •Подпрограммы
- •Функции пользователя
- •Процедуры
- •Массивы Одномерные массивы
- •Стандартные задачи обработки массивов:
- •Двумерные массивы
- •Обработка строк и символов
- •Процедуры и функции обработки строк.
- •Основные алгоритмы обработки строк
- •Графика в Pascal
- •Основные графические процедуры и функции
- •Работа с файлами
- •Процедуры и функции для работы с файлами.
Циклы в Pascal
Паскаль предусматривает использование трех операторов цикла:
• оператор цикла с параметром for
• оператор цикла с предусловием while
• оператор цикла с постусловием repeat
1. Цикл с параметром
Цикл с параметром используется в тех случаях, когда число повторений заранее известно.
Общий вид: for <параметр>:=<начальное значение> to <конечное значение> do <оператор>;
Значение параметра меняется с шагом 1. Оператор представляет тело цикла, которое может быть простым или составным оператором.
Пример 1. Вывести квадраты первых десяти натуральных чисел.
Program primer;
Var i, x: integer;
begin
for i:=1 to 10 do begin {перебираем натуральные числа от 1 до 10}
x:=sqr(i); {возводим очередное число в квадрат}
write(x, ' '); {выводим полученное значение}
end;
readln
end.
Пример 2. Найти сумму 1 + 1/3 + 1/5 +...(N слагаемых).
Program primer;
Var I, N: integer;
S: real;
begin
Write('N='); Readln(N); {вводим количество слагаемых}
S:=0; {обнуляем сумму}
For I:=1 to N do {выполняем цикл N раз, добавляя к сумме по од ному слагаемому}
S:=S+1/(2*I-1);
Writeln('S=',S:5:2); {выводим значение суммы с двумя десятичными знаками}
Readln
end.
Пример 3. Подсчитать количество двузначных чисел, кратных 3.
Program primer;
Var i, k: integer;
begin
k:=0; for i:=10 to 99 do begin
if i mod 3=1 then k:=k+1;
end;
writeln ('k=', k);
readln;
end.
Пример 4. Найти сумму четных делителей введенного целого числа.
Program primer;
Var i, S, n: integer;
begin
Write (‘n=’); Readln(n);
S:=0;
for i:=2 to (n div 2) do
if (n mod i=0) and (i mod 2=0) then s:=s+i;
writeln('S=', S);
readln;
end.
Если необходимо, чтобы параметр цикла менялся с шагом -1, следует вместо to записать downto.
For i:=10 downto 1 do Writeln (i);
2. Цикл с предусловием.
While <условие> do <оператор>;
Цикл выполняется, пока условие остается истинным.
Пример. Первоначальный вклад составил S рублей. Через сколько лет сумма вклада более, чем в 2 раза превысит первоначальный вклад, если годовой процент составляет x%.
Например, S=1000 р, x=10%
1 год S=1000+1000*10/100=1100
2 год S=1100+1100*10/100=1210
Program primer;
Var s, sum, x: real;
n: integer;
Begin
Write(‘S=’); Readln(S);
Write(‘x=’); Readln(x);
Sum:=2*s; n:=0;
S:=0; a:=1; b:=2;
While S<=Sum do begin
s:=s+x/100;
n:=n+1;
end;
write('через ', n, ‘ лет’);
readln
end.
Пример 5. Задана арифметическая прогрессия -21; - 16;… Определить номер первого положительного члена прогрессии.
a – очередной член прогрессии, n – его порядковый номер
a=a+5 n=n+1 |
повторять, пока a<=0 |
Program primer; var a, n: integer; begin a:= -21; n:=1; while a<=0 do begin a:=a+5; n:=n+1; end; writeln(‘n=’, n); readln; end. |
Program primer; var a, n: integer; begin a:= -21; n:=1; repeat a:=a+5; n:=n+1; until a>0; writeln(‘n=’, n); readln; end. |
Примечание: необходимо учитывать следующую особенность: команды, составляющие тело цикла, должны содержать по крайней мере, одну команду, влияющую на значение логического выражения (условия).