Как уже было сказано, циклы с условием делятся на циклы с предусловием и на циклы с постусловием. В этой статье рассказывается об использовании цикла с постусловием Repeat. Until для написания программ на языке Pascal.
Предположим, нужно написать программу, в которой мы будем вводить с клавиатуры числа, и подсчитывать их сумму.
Цикл с постусловием Repeat..Until.
program ciklih4; uses crt; var sum, A:real; begin clrscr; SUM:=0; A:=0; repeat sum:=sum+A; write (‘Ведите число:’); readln (A); until A
В строке №3 запишем 2 переменные: «SUM» – для хранения суммы и «A» для хранения значения введенного нами числа.
В строке №6 обнуляем сумму. Каждый раз, когда в той или иной программе следует подсчитать сумму чего-нибудь, нужно сначала обнулить эту сумму.
В строке №7 указываем первоначальное значение для переменной «A».
В строке №8 записываем оператор цикла Repeat (от англ. «повторять»). Все действия, которые записаны после оператора Repeat (строка №9 — №11) будут выполняться до тех пор, пока не выполнится условие в строке №12 (Until в пер с англ. «до»), т.е. пока переменная «A» не станет отрицательным числом.
Загрузка картинки в модуль GraphABC и ее дальнейшее преобразование
Таким образом, получается, что в цикле выполняется 3 действия (строка №9 — №11). Сначала подсчитывается сумма (строка №9). Она, первоначальна, равна 0, т.к. sum=0 и A=0. Затем выводится сообщение на экран (строка №10), затем мы вводим с клавиатуры какое-нибудь число, и оно записывается в переменную «A».
Если мы вводим положительное число, то опять подсчитывается сумма (строка №9), только теперь значение переменной «A» равно не 0, а тому числу, которое мы введем с клавиатуры. Соответственно, и сумма (sum) увеличится на это число.
При вводе положительных чисел, программа будет продолжать работать. Как только мы введем отрицательное число, цикл перестанет работать, и на экран выведится сумма всех введенных с клавиатуры чисел.
Дополнение к материалу.
Конструкция Repeat. Until подобна операторным скобкам Begin. End. Поэтому перед Until не обязательно ставить точку с запятой. Т. е. в конце строки №11 можно пропустить точку с зяпятой без каких-либо последствий для программы.
Следует сказать, что для решения одних и тех же задач программирования можно использовать как циклы с предусловием, так и циклы с постусловием. Выбор того или иного варианта во многом будет зависеть от ваших личных предпочтений.
Источник: mojainformatika.ru
Как сделать чтоб программа повторялась — Pascal ABC
вообщем после одного действия программа заканчивается. как сделать так чтобы она шла бесконечно пока я ее не закрою.
Простая программа на Pascal
Код к задаче: «Как сделать чтоб программа повторялась»
Листинг программы
Program Calculator; uses crt; Var a,b,c: real; fl:char; Begin textbackground(lightblue); clrscr; textcolor(15); repeat clrscr; Writeln (‘Выберите действие’); Writeln (‘1-сложение’); Writeln (‘2-вычитание’); Writeln (‘3-умножение’); Writeln (‘4-деление’); Writeln (‘другое — выход’); Readln (fl); case fl of ‘1’:begin clrscr; write (‘1 слагаемое=’); read(a); write (‘2 слагаемое=’); read (b); c:=a+b; writeln (‘Сумма=’,c); readln end; ‘2’:begin write(‘Уменьшаемое=’);read(a); write(‘Вычитаемое=’);read(b); c:=a-b; writeln(‘Разность=’,c); readln end; ‘3’:begin Write(‘1 множитель=’);read(a); write(‘2 множитель=’);read(b); c:=a*b; writeln(‘Произведение=’,c); readln end; ‘4’:begin write(‘Делимое=’);read(a); write(‘делитель=’);read(b); c:=a/b; writeln(‘частное=’,c); readln end; end; until not(fl in [‘1’..’4′]) end.
Источник: studassistent.ru
Как сделать чтобы программа повторялась паскаль
Суть такая, программа простейшая и ее написать не составило труда, но вот сделать так чтобы она повторялась по желанию пользователя не получилось, пожалуйста подскажите где ошибка(писал через Turbo Pascal)
var l1,l2 : integer;
flag : char;
repeat
textcolor(green);
textbackground(blue);
Writeln(‘Введите расстояние в см : ‘);
read(l1);
l2:=l1 div 100;
Writeln(l1,’ см равно = ‘,l2,’ метров’);
Writeln(‘Повторить (Y/y) ?’);
readln(flag);
until upcase(flag)<>’Y’;
Регистрация: 08.03.2016
Сообщений: 0
Хозяин Медной Горы
Регистрация: 01.08.2011
Адрес: Армавир
Сообщений: 12,159
Записей в дневнике: 8
Сказал(а) спасибо: 751
Поблагодарили 85 раз(а) в 26 сообщениях
Репутация: 57266
Можно с помощью метки и оператора goto, но это не самый лучший вариант, хотя и самый простой.
Регистрация: 11.12.2011
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
Я тоже об этом думал, но во всех источниках говориться что этого лучше избежать, я хочу сделать с помощью операторов repeat и until, но через них не выходит >
Vladimir_S
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,809
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
Ну да, есть несколько ошибок.
1. Не вдаваясь в подробности, прошу запомнить: экранный ввод следует делать оператором ReadLn, а ни в коем случае не Read, ну или по крайней мере им заканчивать. Read следует применять с осторожностью. В Вашей программе первое считывание с помощью Read привело к тому, что программа не останавливается при запросе символа продолжения работы.
2. Формат чисел l1 и l2 лучше задать, как LongInt. С Integer диапазон в сантиметрах уж больно убогий.
3. Эти CRT-шные игрушки-побрякушки с цветом шрифта и фона вовсе ни к чему загонять в тело цикла — достаточно их задать в начале программы.
4. Readln в конце, да еще в двух экземплярах, там вовсе лишний: программа и так останавливается при вводе очередного значения длины.
Итого:
uses crt ; var l1,l2 : LongInt; flag : char; BEGIN clrscr; textcolor(green); textbackground(blue); repeat Write(‘Введите расстояние в см : ‘); readln(l1); l2:=l1 div 100; Writeln(l1,’ см равно ‘,l2,’ метров’); Writeln(‘Повторить (Y/N) ?’); readln(flag); until upcase(flag)<>’Y’; END.
Источник: www.tehnari.ru