Циклы в паскаль: repeat until for

При решении задач может возникнуть необходимость повторить одни и те же действия несколько или множество раз. В программировании блоки кода, которые требуется повторять не единожды, оборачиваются в специальные конструкции –циклы. У циклов выделяют заголовок и тело. Заголовок определяет, до каких пор или сколько раз тело цикла будет выполняться. Тело содержит выражения, которые выполняются, если в заголовке цикла выражение вернуло логическую истину (True, не ноль). После того как достигнута после... Цикл for Часто цикл for называют циклом со счетчиком. Этот цикл используется, когда число повторений не связано с тем, что происходит в теле цикла. Т.е. количество повторений может быть вычислено заранее (хотя оно не вычисляется). В заголовке цикла указываются два значения. Первое значение присваивается так называемой переменной-счетчику, от этого значения начинается отсчет количества итераций (повторений). Отсчет идет всегда с шагом равным единице. Второе значение указывает, при каком значении счетчика ... Цикл while Цикл while является циклом с предусловием. В заголовке цикла находится логическое выражение. Если оно возвращает true, то тело цикла выполняется, еслиfalse – то нет. Когда тело цикла было выполнено, то ход программы снова возвращается в заголовок цикла. Условие выполнения тела снова проверяется (находится значение логического выражения). Тело цикла выполнится столько раз, сколько раз логическое выражение вернет true. Поэтому очень важно в теле цикла предусмотреть изменение переменной, фигурирующ... Цикл repeat Цикл while может не выполниться ни разу, если логическое выражение в заголовке сразу вернуло false. Однако такая ситуация не всегда может быть приемлемой. Бывает, что тело цикла должно выполниться хотя бы один раз, не зависимо оттого, что вернет логическое выражение. В таком случае используется цикл repeat – цикл с постусловием. В цикле repeat логическое выражение стоит после тела цикла. Причем, в отличие от цикла while, здесь всё наоборот: в случае true происходит выход из цикла, в случае false...
Раздел Информатика
Класс -
Тип Конспекты
Автор
Дата
Формат docx
Изображения Есть
For-Teacher.ru - все для учителя
Поделитесь с коллегами:

Циклы в паскаль: repeat until for

При решении задач может возникнуть необходимость повторить одни и те же действия несколько или множество раз. В программировании блоки кода, которые требуется повторять не единожды, оборачиваются в специальные конструкции -циклы. У циклов выделяют заголовок и тело. Заголовок определяет, до каких пор или сколько раз тело цикла будет выполняться. Тело содержит выражения, которые выполняются, если в заголовке цикла выражение вернуло логическую истину (True, не ноль). После того как достигнута последняя инструкция тела, поток выполнения снова возвращается к заголовку цикла. Снова проверяется условие выполнения цикла. В зависимости от результата тело цикла либо повторяется, либо поток выполнения переходит к следующему выражению после всего цикла.

В языке программирования Паскаль существует три вида циклических конструкций.

Цикл for

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

В заголовке цикла указываются два значения. Первое значение присваивается так называемой переменной-счетчику, от этого значения начинается отсчет количества итераций (повторений). Отсчет идет всегда с шагом равным единице. Второе значение указывает, при каком значении счетчика цикл должен остановиться. Другими словами, количество итераций цикла определяется разностью между вторым и первым значением плюс единица. В Pascal тело цикла не должно содержать выражений, изменяющих счетчик.

Цикл for существует в двух формах:

for счетчик:=значение to конечное_значение do

тело_цикла;

for счетчик:=значение downto конечное_значение do

тело_цикла;

Счетчик - это переменная любого из перечисляемых типов (целого, булевого, символьного, диапазонного, перечисления). Начальные и конечные значения могут быть представлены не только значениями, но и выражениями, возвращающими совместимые с типом счетчика типы данных. Если между начальным и конечным выражением указано служебное слово to, то на каждом шаге цикла значение параметра будет увеличиваться на единицу. Если же указано downto, то значение параметра будет уменьшаться на единицу.

Количество итераций цикла for известно именно до его выполнения, но не до выполнения всей программы. Так в примере ниже, количество выполнений цикла определяется пользователем. Значение присваивается переменной, а затем используется в заголовке цикла. Но когда оно используется, циклу уже точно известно, сколько раз надо выполниться.

var

i, n: integer;

begin

write ('Количество знаков: ');

readln (n);

for i := 1 to n do

write ('(*) ');

readln

end.

Цикл while

Цикл while является циклом с предусловием. В заголовке цикла находится логическое выражение. Если оно возвращает true, то тело цикла выполняется, еслиfalse - то нет.

Когда тело цикла было выполнено, то ход программы снова возвращается в заголовок цикла. Условие выполнения тела снова проверяется (находится значение логического выражения). Тело цикла выполнится столько раз, сколько раз логическое выражение вернет true. Поэтому очень важно в теле цикла предусмотреть изменение переменной, фигурирующей в заголовке цикла, таким образом, чтобы когда-нибудь обязательно наступала ситуация false. Иначе произойдет так называемое зацикливание, одна из самых неприятных ошибок в программировании.

var

i, n: integer;

begin

write ('Количество знаков: ');

readln (n);

i := 1;

while i <= n do begin

write ('(*) ');

i := i + 1

end;

readln

end.

Цикл repeat

Цикл while может не выполниться ни разу, если логическое выражение в заголовке сразу вернуло false. Однако такая ситуация не всегда может быть приемлемой. Бывает, что тело цикла должно выполниться хотя бы один раз, не зависимо оттого, что вернет логическое выражение. В таком случае используется цикл repeat - цикл с постусловием.

В цикле repeat логическое выражение стоит после тела цикла. Причем, в отличие от цикла while, здесь всё наоборот: в случае true происходит выход из цикла, в случае false - его повторение.

var

i, n: integer;

begin

write ('Количество знаков: ');

readln (n);

i := 1;

repeat

write ('(*) ');

i := i + 1

until i > n;

readln

end.


В примере, даже если n будет равно 0, одна звездочка все равно будет напечатана.

Задачи к данной теме

Возведение числа в степень

Вывод на экран таблицы ASCII

Вычисление суммы ряда чисел

Заполнение массива и вычисление суммы элементов

Заполнение массива и его вывод на экран

Перевод римских чисел в арабские. Пример автоматного распознавателя

Программа "Угадай число"

Таблица умножения на Паскале

Фильтр строки

Функции вычисления площади геометрических фигур

Функция, вычисляющая наибольший общий делитель

‹ Вложенные конструкции if-elseВверхОператоры goto, break, continue и прекращения программы ›

  • Циклы

  • Версия для печати

  • Добавить комментарий

Комментарии

чт, 12/19/2013 - 14:40 - Гость

Цикл со счетчиком

Мне нужна помощь. Программа нахождения скорости, времени и расстояния. Как использовать цикл со счетчиком чтобы программа завершалась не только при одном из выбранных действий но и после сразу трех т.е при нахождении скорости времени расстояния

program variant4;

uses crt;

var n:integer;{ввод переменных}

t,v,s:real;

begin

ClrScr;

writeln('1.Вычислить расстояние.');

writeln('2.Вычислить скорость.');

writeln('3.Вычислить время.');

readln(n);

case n of

1:begin

write('Введите скорость:');readln(v);

write('Введите время:');readln(t);

S:=t*v;

writeln('Расстояние = ',s:5:2);

end;

2:begin

write('Введите расстояние:');readln(s);

write('Введите время:');readln(t);

v:=s/t;

writeln('Скорость = ',v:5:2);

end;

3:begin

write('Введите расстояние:');readln(s);

write('Введите скорость:');readln(v);

t:=s/v;

writeln('Время = ',t:5:2);

end;

end;

readln;

end.

  • ответить

Пнд, 12/17/2012 - 19:13 - Гость

У основания столбика высотой

У основания столбика высотой L см сидит улитка.
Днем (с 7:00 до 20:00) она проползает вверх К см. Ночью - улитка спит, поэтому сползает вниз на Н см.
Определите и выведите на экран на какие сутки улитка доберется до вершины столбика, при условии, что полностью восстановить силы за ночь ей не удается, и каждые новые сутки ее продвижение вверх уменьшается на М см. А может это ей и вовсе не удасться?
Значения L, К, Н и М - целые числа, которые вводятся с клавиатуры и лежат в пределах от 0 до 1000 включительно.

  • ответить

ср, 09/04/2013 - 15:22 - Гость

Решение

var

L, K, H, M, S, i: integer;

begin

S:=0;

write ('Введите высоту столба: ');

readln (L);

write ('Введите сколько за день проползет улитка: ');

readln (K);

write ('Введите на сколько за ночь сползет улитка: ');

readln (H);

write (Введите на сколько улитка будет уставать каждый день: ');

readln (M);

begin

i := 0;

repeat

S:=S+K-H-M*(i);

i := i + 1

until (S >= L) or (S<0);

end;

If S >= L then

write ('Улитке нужно', i,' дней что бы добраться до верха')

Else

write ('Улитка через', i,' дней сползет до земли');

readln

end.

  • ответить

Втр, 11/27/2012 - 20:08 - Гость

Построить таблицу

Построить таблицу соответствий между мерами, используя цикл с постусловием (repeat....until). Начальное и конечное значения меры, шаг изменение этого значения задать самостоятельно в режиме диалога. Оформить таблицу применяя форматы вывода. Количество строк в таблице (10-15).

1 чейн строительный = 30.48м. =100 футов

  • ответить

ср, 11/14/2012 - 22:09 - Гость

чашке находится n микробы их

чашке находится n микробы их количество с каждой минутой удваивается составить программу нахождения количества микробов за время t

  • ответить

вс, 05/13/2012 - 14:36 - Гость

старинная задача

дано 100 рублей на эти 100 рублей мужику надо купить 100 голов скота теленок стоит 0.5 рубля корова 5 рублей бык 10 рублей. решить надо с помощью цикла

  • ответить

ср, 11/28/2012 - 11:16 - Гость

uses crt;var b,k,t,s:

uses crt;

var b,k,t,s: integer;

zb,zk,zt: real;

begin

zb:=10; zk:=5; zt:=0.5;

for b:=0 to 100 do

for k:=0 to 100 do

for t:=0 to 100 do

if ((b*zb)+(k*zk)+(t*zt)=100) and

(b+t+k=100) then writeln(b,' быков, ',k,' коров, ',t,' телят');

end.

  • ответить

пт, 01/24/2014 - 07:11 - Гость

s: integer;

s - для чего?

  • ответить

ср, 03/28/2012 - 18:23 - Гость

Задачи нужно решить тремя способами (циклы)

Все задачи нужно решить тремя способами:
1)счетчик (for to do)
2)предпроверка условия (while do)
3)постпроверка условия (repeat until)

Задача№1
В бригаде, работающей на уборке сена, имеется N сенокосилок. Первая сенокосилка работала m часов, а каждая следующая на 10 минут больше, чем предыдущая. Сколько часов проработала вся бригада?

Задача№2
На воду опущен шар радиуса r, изготовленный из вещества плотности p (p<1). Найти расстояние от центра шара до поверхности воды. Указание. При составлении программы воспользоваться формулой объема шарового сегмента высоты h: V = пи*h^2 (3r - h)/3, где r - радиус шара, h - высота шарового сегмента.

В первой задачке нужно узнать время всей бригады - это время первой сенокосилки + время второй: м1+м2+м3.....+мn например всего 3 косилки, время 1-ой косилки 5 часов + время второй 5 часов 10 минут + время третьей 5 часов 20 минут=15 часов 30 минут.

у меня есть 2 варианта решения но у меня не получается сложить время каждой неправильно высчитывает пробовал и в 1-ый и во второй вариант решения добавить сложение

begin

Writeln('Vvedite kollichestvo senokosilok:');

readln(n);

Writeln('Vvedite vremya raboti 1-oy senokosilki:');

readln(m);

m:=m*60;

for i:=2 to n do

m:=m+10;

m:=m/60;

Writeln('Vremya raboti vsey brigadi=',m,' chasa(ov)');

readln;

end.

и

begin

Writeln('Vvedite kollichestvo senokosilok:');

readln(n);

Writeln('Vvedite vremya raboti 1-oy senokosilki:');

readln(m);

t:=m;

for i:=2 to n do

t:=t+1/6+i+i;

Writeln('Vremya raboti vsey brigadi=',t:0:2,' chasa(ov)');

readln;

end.

10 мин это 1/6 часа

помогите пожалуйста если несложно никак не получается решение этих двух задач.

  • ответить

ср, 11/20/2013 - 16:49 - Гость

program z1;var

program z1;

var n,m,i:integer;

begin

writeln('введите N');

readln(N);

writeln('введите m в минутах');

readln(m);

i:=1;

repeat

m:=m+10;

i:=i + 1

until (i=N);

writeln (m);

end.

  • ответить

вс, 05/20/2012 - 23:32 - Гость

В первой задаче ты просто

В первой задаче ты просто добавляешь по 10 минут с каждой итерацией. Если внимательно прочесть задачу, то можно заметить, что каждая следующая работала НА 10 минут больше предыдущей.
Мой вариант программы без перевода в часы:

program seno;

var a,n,b,i:integer; m:real;

begin

write('kosilok:');

readln(a);

write('1 rabotala:');

readln(b);

n:=a*60;

for i:=1 to a-1 do

begin

n:=n+10;

m:=n+m;

end;

write('otvet:',m:3:2,' minut');

end.

  • ответить

чт, 05/03/2012 - 15:19 - Гость

for i:=2 to n do

for i:=2 to n do BEGIN

m:=m+10;

m:=m/60; END;

  • ответить

ср, 04/04/2012 - 19:31 - Гость

вот 3

program tech;

var n,i: integer; m,j: real;

begin

writeln('Vvedite kollichestvo senokosilok');

readln(n);

writeln('Vvedite vremya raboti 1-oy senokosilki');

readln(m);

j:=0;

for i:=1 to n do

begin m:=m+j;

j:=j+(1/10);

end;

writeln('Vremya raboti vsey brigadi=',t:0:2,' chasa(ov)');

readln;

end.

  • ответить

ср, 04/04/2012 - 19:29 - Гость

Вот еще вариант

program tech;

var n,j: integer; m,k: real;

begin

writeln('Vvedite vremya raboti 1-oy senokosilki:');

readln(n);

writeln('Vvedite vremya raboti 1-oy senokosilki:');

readln(m);

k:=0;

j:=0;

while Jdo

begin

m:=m+k;

k:=k+(1/10);

j:=j+1;

end;

writeln('Vremya raboti vsey brigadi=',m:2:2,' chasa');

readln;

end.

  • ответить

вс, 04/22/2012 - 15:35 - Гость

Вот вариант у мня работает может кому пригодится.

program senokos;

uses crt;

var n, m, i :integer;

begin

writeln('Введите количество сенокосилок n ');

readln(n);

writeln('Введите время работы первой сенокосилки m ');

readln(m);

m:=m*60;

for i:=1 to n-1 do

m:=m+10;

writeln('Общее время работы бригады= ',m);

readln

end.

  • ответить


© 2010-2022