Лекция №6. - Форум Регистрация Вход
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум » Учёба » Программирование. Лекции » Лекция №6. (Операторы: простые, структурированные. Форматы записи)
Лекция №6.
inqusiionДата: Четверг, 07.04.2011, 16:15 | Сообщение # 1
Лейтенант
Группа: Администраторы
Сообщений: 47
Награды: 0
Репутация: 0
Статус: Offline
Лекция №6.
Операторы: простые, структурированные. Форматы записи.

Основная часть программы на языке ТР представляет собой последовательность операторов, каждый из которых производит некоторые действия по преобразованию данных. Операторы выполняются последовательно в том порядке, в котором они записаны в тексте программы. Идущие друг за другом операторы программы разделяются точкой с запятой.
Все операторы языка ТР можно разбить на три группы:
• простые;
• ввода-вывода;
• структурированные (структурные).
Фактически операторы ввода-вывода являются обращением к стандартным процедурам, т.к. в Паскале нет операторов ввода-вывода. Но по установившейся традиции такие обращения называют операторами.
простые операторы
Операторы, не содержащие в себе никаких других операторов, называются простыми. К ним относятся:
• оператор присваивания;
• оператор вызова процедуры;
• оператор безусловного перехода;
• пустой оператор.
оператор присваивания
С помощью этого оператора переменной или функции присваивается значение выражения. Для записи этого оператора используется знак (:=), слева от которого записывается идентификатор переменной или функции, которым присваивается выражение, а справа – выражение, значение которого вычисляется перед присваиванием. Переменная (функция) и выражение должны иметь один и тот же тип. Исключение составляет случай, когда переменная имеет вещественный тип, а выражение – целочисленный, или переменная имеет строковый тип, а выражение символьный. Допустимо присваивание любых типов данных, кроме файловых.

Формат записи.
< идентификатор > := < выражение >;[u]

 
СообщениеЛекция №6.
Операторы: простые, структурированные. Форматы записи.

Основная часть программы на языке ТР представляет собой последовательность операторов, каждый из которых производит некоторые действия по преобразованию данных. Операторы выполняются последовательно в том порядке, в котором они записаны в тексте программы. Идущие друг за другом операторы программы разделяются точкой с запятой.
Все операторы языка ТР можно разбить на три группы:
• простые;
• ввода-вывода;
• структурированные (структурные).
Фактически операторы ввода-вывода являются обращением к стандартным процедурам, т.к. в Паскале нет операторов ввода-вывода. Но по установившейся традиции такие обращения называют операторами.
простые операторы
Операторы, не содержащие в себе никаких других операторов, называются простыми. К ним относятся:
• оператор присваивания;
• оператор вызова процедуры;
• оператор безусловного перехода;
• пустой оператор.
оператор присваивания
С помощью этого оператора переменной или функции присваивается значение выражения. Для записи этого оператора используется знак (:=), слева от которого записывается идентификатор переменной или функции, которым присваивается выражение, а справа – выражение, значение которого вычисляется перед присваиванием. Переменная (функция) и выражение должны иметь один и тот же тип. Исключение составляет случай, когда переменная имеет вещественный тип, а выражение – целочисленный, или переменная имеет строковый тип, а выражение символьный. Допустимо присваивание любых типов данных, кроме файловых.

Формат записи.
< идентификатор > := < выражение >;[u]


Автор - inqusiion
Дата добавления - 07.04.2011 в 16:15
inqusiionДата: Четверг, 07.04.2011, 16:15 | Сообщение # 2
Лейтенант
Группа: Администраторы
Сообщений: 47
Награды: 0
Репутация: 0
Статус: Offline
Пример.
argum1:= 34; argum2:= 87.7;
z:= a + b;
result:=sin(a) + cos(b);
оператор вызова процедуры
Этот оператор служит для активизации предварительно определенной пользователем или стандартной процедуры.

Формат записи.
< имя процедуры > {(список параметров)};
Пример.
Program _ttt;
procedure yyy;
begin
... {тело процедуры yyy}
end;
procedure xxx;
begin
... {тело процедуры xxx}
end;
Begin
...
yyy; {вызов процедуры yyy}
...
xxx {вызов процедуры xxx}
...
End.
оператор безусловного перехода (goto).
Оператор goto позволяет изменить естественный порядок выполнения операторов и перейти к выполнению программы, начиная с оператора, отмеченного меткой. Метка может содержать как цифровые, так и буквенные символы.
Формат записи.
goto < метка >;

 
СообщениеПример.
argum1:= 34; argum2:= 87.7;
z:= a + b;
result:=sin(a) + cos(b);
оператор вызова процедуры
Этот оператор служит для активизации предварительно определенной пользователем или стандартной процедуры.

Формат записи.
< имя процедуры > {(список параметров)};
Пример.
Program _ttt;
procedure yyy;
begin
... {тело процедуры yyy}
end;
procedure xxx;
begin
... {тело процедуры xxx}
end;
Begin
...
yyy; {вызов процедуры yyy}
...
xxx {вызов процедуры xxx}
...
End.
оператор безусловного перехода (goto).
Оператор goto позволяет изменить естественный порядок выполнения операторов и перейти к выполнению программы, начиная с оператора, отмеченного меткой. Метка может содержать как цифровые, так и буквенные символы.
Формат записи.
goto < метка >;


Автор - inqusiion
Дата добавления - 07.04.2011 в 16:15
inqusiionДата: Четверг, 07.04.2011, 16:16 | Сообщение # 3
Лейтенант
Группа: Администраторы
Сообщений: 47
Награды: 0
Репутация: 0
Статус: Offline
Пример.
...
label 44, Metka;
...
44:
goto Metka;
...
Metka: goto 44;
...
Помни:
• Метка, на которую передается управление, должна быть описана в разделе Label того блока процедуры, функции, основной программы, в котором эта метка используется.
• Областью действия метки является тот блок, в котором она описана; переход возможен только в пределах блока.
• Попытка выйти за пределы блока или передать управление внутрь другого блока вызывает программное прерывание.
В соответствии с правилами структурного программирования оператор goto рекомендуется применять как можно реже, т.к. считается, что его частое употребление резко усложняет понимание логики программы. В крайнем случае, он может использоваться для преждевременного выхода из операторов повтора.
Если все же используется оператор goto, то необходимо придерживаться следующих правил:
• Применять оператор для передачи управления только вниз (вперед) по тексту программы; при необходимости передачи управления назад следует использовать операторы цикла;
• Расстояние между меткой и оператором перехода на нее не должно превышать одной страницы текста (или высоты экрана дисплея).
пустой оператор.
Пустой оператор не содержит никаких символов и не выполняет никаких действий. Он может быть расположен в любом месте программы, где синтаксис языка допускает наличие оператора. Как и другие операторы, он может быть помечен меткой. Чаще всего этот оператор применяют для организации выхода из середины программы или составного оператора.
 
СообщениеПример.
...
label 44, Metka;
...
44:
goto Metka;
...
Metka: goto 44;
...
Помни:
• Метка, на которую передается управление, должна быть описана в разделе Label того блока процедуры, функции, основной программы, в котором эта метка используется.
• Областью действия метки является тот блок, в котором она описана; переход возможен только в пределах блока.
• Попытка выйти за пределы блока или передать управление внутрь другого блока вызывает программное прерывание.
В соответствии с правилами структурного программирования оператор goto рекомендуется применять как можно реже, т.к. считается, что его частое употребление резко усложняет понимание логики программы. В крайнем случае, он может использоваться для преждевременного выхода из операторов повтора.
Если все же используется оператор goto, то необходимо придерживаться следующих правил:
• Применять оператор для передачи управления только вниз (вперед) по тексту программы; при необходимости передачи управления назад следует использовать операторы цикла;
• Расстояние между меткой и оператором перехода на нее не должно превышать одной страницы текста (или высоты экрана дисплея).
пустой оператор.
Пустой оператор не содержит никаких символов и не выполняет никаких действий. Он может быть расположен в любом месте программы, где синтаксис языка допускает наличие оператора. Как и другие операторы, он может быть помечен меткой. Чаще всего этот оператор применяют для организации выхода из середины программы или составного оператора.

Автор - inqusiion
Дата добавления - 07.04.2011 в 16:16
inqusiionДата: Четверг, 07.04.2011, 16:17 | Сообщение # 4
Лейтенант
Группа: Администраторы
Сообщений: 47
Награды: 0
Репутация: 0
Статус: Offline
структурированные операторы
Структурированные (структурные) операторы представляют собой структуры, построенные из других операторов по строго определенным правилам. Все структурированные операторы делятся на три группы:
• составные;
• условные;
• повтора.

составной оператор.
Составной оператор представляет собой группу из произвольного числа операторов, отделенных друг от друга точкой с запятой, и ограниченную операторными скобками begin и end.

Формат записи.
begin
< оператор >;
< оператор >
end;
Пример.
begin
A:= A*B-C*D;
writeln ('результат=', A);
end;

Составной оператор воспринимается, как единое целое и может находиться в любом месте программы, где синтаксис языка допускает наличие оператора. Обычно составной оператор используется при написании условных операторов и операторов повтора.
В составном операторе могут быть другие составные операторы произвольной глубины вложенности. Например,
Begin …
Begin … - вложенный составной
End; … оператор
End;

 
Сообщениеструктурированные операторы
Структурированные (структурные) операторы представляют собой структуры, построенные из других операторов по строго определенным правилам. Все структурированные операторы делятся на три группы:
• составные;
• условные;
• повтора.

составной оператор.
Составной оператор представляет собой группу из произвольного числа операторов, отделенных друг от друга точкой с запятой, и ограниченную операторными скобками begin и end.

Формат записи.
begin
< оператор >;
< оператор >
end;
Пример.
begin
A:= A*B-C*D;
writeln ('результат=', A);
end;

Составной оператор воспринимается, как единое целое и может находиться в любом месте программы, где синтаксис языка допускает наличие оператора. Обычно составной оператор используется при написании условных операторов и операторов повтора.
В составном операторе могут быть другие составные операторы произвольной глубины вложенности. Например,
Begin …
Begin … - вложенный составной
End; … оператор
End;


Автор - inqusiion
Дата добавления - 07.04.2011 в 16:17
inqusiionДата: Четверг, 07.04.2011, 16:18 | Сообщение # 5
Лейтенант
Группа: Администраторы
Сообщений: 47
Награды: 0
Репутация: 0
Статус: Offline
условные операторы.
Условные операторы обеспечивают выполнение или невыполнение некоторого оператора, группы операторов или блока в зависимости от заданных условий. ТР допускает использование двух условных операторов: if и case.
Оператор условия if является одним из самых популярных средств, изменяющих естественный порядок выполнения операторов программы. Оператор If реализует алгоритмическую конструкцию развилка или неполную ее конструкцию - коррекцию. Он может принимать одну из следующих форм:

1. if < условие > then < оператор1 > {полная развилка}
else < оператор2 >;
2. if < условие > then < оператор >; {укороченная развилка - коррекция}

Здесь служебные слова if, then, else означают "если", "то", "иначе".
<условие>- это выражение булевского типа. Оно может быть простым или сложным. Сложные условия образуются при помощи логических операций and, or, not. При записи условий можно использовать все возможные операции отношения. Результат выражения всегда имеет булевский тип.
<оператор1>, <оператор2> - один выполняемый оператор – простой или составной.
В первом случае, если значение выражения истинно, выполняется <оператор1>, если ложно - <оператор2>.
Пример.
read(a, b);
if a > b then writeln('А больше В')
else writeln('В больше А');
Помни:
Перед служебным словом else точка с запятой не ставится.

Во втором случае, если значение выражения истинно, выполняется <оператор>, если значение выражения ложно, выполняется оператор, следующий сразу за оператором if.
Пример.
if a > b then c:= - a;
writeln('А меньше В');
Пример.

 
Сообщениеусловные операторы.
Условные операторы обеспечивают выполнение или невыполнение некоторого оператора, группы операторов или блока в зависимости от заданных условий. ТР допускает использование двух условных операторов: if и case.
Оператор условия if является одним из самых популярных средств, изменяющих естественный порядок выполнения операторов программы. Оператор If реализует алгоритмическую конструкцию развилка или неполную ее конструкцию - коррекцию. Он может принимать одну из следующих форм:

1. if < условие > then < оператор1 > {полная развилка}
else < оператор2 >;
2. if < условие > then < оператор >; {укороченная развилка - коррекция}

Здесь служебные слова if, then, else означают "если", "то", "иначе".
<условие>- это выражение булевского типа. Оно может быть простым или сложным. Сложные условия образуются при помощи логических операций and, or, not. При записи условий можно использовать все возможные операции отношения. Результат выражения всегда имеет булевский тип.
<оператор1>, <оператор2> - один выполняемый оператор – простой или составной.
В первом случае, если значение выражения истинно, выполняется <оператор1>, если ложно - <оператор2>.
Пример.
read(a, b);
if a > b then writeln('А больше В')
else writeln('В больше А');
Помни:
Перед служебным словом else точка с запятой не ставится.

Во втором случае, если значение выражения истинно, выполняется <оператор>, если значение выражения ложно, выполняется оператор, следующий сразу за оператором if.
Пример.
if a > b then c:= - a;
writeln('А меньше В');
Пример.


Автор - inqusiion
Дата добавления - 07.04.2011 в 16:18
inqusiionДата: Четверг, 07.04.2011, 16:18 | Сообщение # 6
Лейтенант
Группа: Администраторы
Сообщений: 47
Награды: 0
Репутация: 0
Статус: Offline
Ввести целое число и вывести символ, соответствующий этому числу по коду ASCII, если он существует, в противном случае вывести сообщение, что такого символа нет (управляющие символы не учитывать).
program Symbol;
var x: integer;
begin
write(' Введите целое число: ');
readln(x);
if (x>31) and (x<256) then writeln('соответствующий символ - Chr(x))
else writeln('такого символа нет');
end.

Помни:
• Один оператор if может входить в состав другого оператора if. В таком случае говорят о вложенности операторов, при этом каждое служебное слово else соответствует тому then, которое ему непосредственно предшествует. Конструкции со степенью вложенности 2-3 лучше избегать из-за сложности их анализа при отладке программ.

Оператор выбора (условный оператор) case. Этот оператор является обобщением оператора if и позволяет сделать выбор из произвольного числа имеющихся вариантов. Он состоит из выражения, называемого селектором, и списка параметров, каждому из которых предшествует список констант выбора (список может состоять и из одной константы). Как и в операторе if, здесь может присутствовать слово else, имеющее тот же смысл.

Формат записи:
case <выражение-селектор> of
<список1>: <оператор1;>
<список2>: <оператор2;>
. . .
<списокN>: <операторN>
else <оператор>
end;

Действие оператора case:

 
СообщениеВвести целое число и вывести символ, соответствующий этому числу по коду ASCII, если он существует, в противном случае вывести сообщение, что такого символа нет (управляющие символы не учитывать).
program Symbol;
var x: integer;
begin
write(' Введите целое число: ');
readln(x);
if (x>31) and (x<256) then writeln('соответствующий символ - Chr(x))
else writeln('такого символа нет');
end.

Помни:
• Один оператор if может входить в состав другого оператора if. В таком случае говорят о вложенности операторов, при этом каждое служебное слово else соответствует тому then, которое ему непосредственно предшествует. Конструкции со степенью вложенности 2-3 лучше избегать из-за сложности их анализа при отладке программ.

Оператор выбора (условный оператор) case. Этот оператор является обобщением оператора if и позволяет сделать выбор из произвольного числа имеющихся вариантов. Он состоит из выражения, называемого селектором, и списка параметров, каждому из которых предшествует список констант выбора (список может состоять и из одной константы). Как и в операторе if, здесь может присутствовать слово else, имеющее тот же смысл.

Формат записи:
case <выражение-селектор> of
<список1>: <оператор1;>
<список2>: <оператор2;>
. . .
<списокN>: <операторN>
else <оператор>
end;

Действие оператора case:


Автор - inqusiion
Дата добавления - 07.04.2011 в 16:18
inqusiionДата: Четверг, 07.04.2011, 16:18 | Сообщение # 7
Лейтенант
Группа: Администраторы
Сообщений: 47
Награды: 0
Репутация: 0
Статус: Offline
1. Вычисляется значение выражения-селектора.
2. Обеспечивается выполнение того оператора, константа выбора которого равна текущему значению селектора.
3. Если ни одна из констант не равна текущему значению селектора, выполняется оператор, стоящий за словом else.
4. Если слово else отсутствует, выполняется оператор, находящийся за словом end, т.е. первый оператор за границей case.

Помни:
• Селектор должен относится к одному из целочисленных (т.е. находящихся в диапазоне
– 32768 .. 32767), булевскому или пользовательскому типов. Вещественные и строковые типы в качестве селектора запрещены.
• Список констант выбора состоит из произвольного количества значений или диапазонов, разделенных запятыми.
• В отличие от оператора if перед словом else можно ставить точку с запятой.
• Если для нескольких констант необходимо выполнить один и тот же оператор, их можно перечислить через запятую (или даже указать диапазон, если возможно), сопроводив их одним оператором.
• Все метки вариантов оператора должны быть различны, т. е. каждая из них должна быть в списке одного CASE только один раз.
• На метку вариантов нельзя переходить с помощью оператора goto.

Пример.
1. Селектор целочисленного типа:

write('Введите целое число');
read(i);
case i of
1: Z:= I+10;
2: Z:= I+100;
3: Z:= I+1000
end;

 
Сообщение1. Вычисляется значение выражения-селектора.
2. Обеспечивается выполнение того оператора, константа выбора которого равна текущему значению селектора.
3. Если ни одна из констант не равна текущему значению селектора, выполняется оператор, стоящий за словом else.
4. Если слово else отсутствует, выполняется оператор, находящийся за словом end, т.е. первый оператор за границей case.

Помни:
• Селектор должен относится к одному из целочисленных (т.е. находящихся в диапазоне
– 32768 .. 32767), булевскому или пользовательскому типов. Вещественные и строковые типы в качестве селектора запрещены.
• Список констант выбора состоит из произвольного количества значений или диапазонов, разделенных запятыми.
• В отличие от оператора if перед словом else можно ставить точку с запятой.
• Если для нескольких констант необходимо выполнить один и тот же оператор, их можно перечислить через запятую (или даже указать диапазон, если возможно), сопроводив их одним оператором.
• Все метки вариантов оператора должны быть различны, т. е. каждая из них должна быть в списке одного CASE только один раз.
• На метку вариантов нельзя переходить с помощью оператора goto.

Пример.
1. Селектор целочисленного типа:

write('Введите целое число');
read(i);
case i of
1: Z:= I+10;
2: Z:= I+100;
3: Z:= I+1000
end;


Автор - inqusiion
Дата добавления - 07.04.2011 в 16:18
inqusiionДата: Четверг, 07.04.2011, 16:18 | Сообщение # 8
Лейтенант
Группа: Администраторы
Сообщений: 47
Награды: 0
Репутация: 0
Статус: Offline
2. Селектор интервального типа:

case i of
1..10 : writeln('число',i:4, 'в диапазоне 1 -10');
11..20 : writeln('число',i:4, 'в диапазоне 11 -20');
21..30 : writeln('число',i:4, 'в диапазоне 21 -30')
else writeln('число',i:4, 'вне пределов контроля')
end;

3. Селектор перечисляемого типа:

Var
Season: (Winter, Spring, Summer, Autum);
Begin
. . .
case Season of
Winter: writeln('Зима');
Spring: writeln('Весна');
Summer: writeln('Лето');
Autum: writeln('Осень')
end;
Аналогичным образом можно организовать ввод и вывод данных перечисляемого типа пользователя и обойти соответствующие ограничения языка ТР.
операторы повтора
Операторы повтора используются при организации циклов.
Цикл - средство многократного повторения однотипных операторов. Если количество повторов известно, используется оператор for, если количество повторов неизвестно применяются операторы repeat или while.

 
Сообщение2. Селектор интервального типа:

case i of
1..10 : writeln('число',i:4, 'в диапазоне 1 -10');
11..20 : writeln('число',i:4, 'в диапазоне 11 -20');
21..30 : writeln('число',i:4, 'в диапазоне 21 -30')
else writeln('число',i:4, 'вне пределов контроля')
end;

3. Селектор перечисляемого типа:

Var
Season: (Winter, Spring, Summer, Autum);
Begin
. . .
case Season of
Winter: writeln('Зима');
Spring: writeln('Весна');
Summer: writeln('Лето');
Autum: writeln('Осень')
end;
Аналогичным образом можно организовать ввод и вывод данных перечисляемого типа пользователя и обойти соответствующие ограничения языка ТР.
операторы повтора
Операторы повтора используются при организации циклов.
Цикл - средство многократного повторения однотипных операторов. Если количество повторов известно, используется оператор for, если количество повторов неизвестно применяются операторы repeat или while.


Автор - inqusiion
Дата добавления - 07.04.2011 в 16:18
inqusiionДата: Четверг, 07.04.2011, 16:18 | Сообщение # 9
Лейтенант
Группа: Администраторы
Сообщений: 47
Награды: 0
Репутация: 0
Статус: Offline
оператор цикла FOR (с параметром).
Оператор цикла For состоит из заголовка и тела цикла.
Формат записи:
Оператор for может быть представлен в двух форматах:

1. for < параметр цикла >:= <S1> to <S2> do < оператор>;
2. for < параметр цикла > := <S1> downto <S2> do < оператор >;
где
S1,S2 - выражения, определяющие соответственно начальное и конечное значения параметра цикла. В первом случае S1<S2, во втором - S1>S2.
for . . . do - заголовок цикла;
< оператор > - тело цикла. Тело цикла может быть простым или составным оператором.
Оператор цикла for обеспечивает выполнение тела цикла до тех пор, пока не будут перебраны все значения параметра цикла от начального до конечного.
Пример.
Оператор результат
1. for i:=15 to 20 do write(i: 3); 15 16 17 18 19 20
2. for i:=20 downto 15 do write(i: 3); 20 19 18 17 16 15
3. for Chr:='a' to 'e' write(Chr: 2) a b c d e
4. for Chr:='e' downto 'a' write(Chr: 2) e d c b a
5. Параметр цикла - переменная перечисляемого типа:
var
Sort: (s1, s2, s3);
. . .
for Sort:=s1 to s2 do < оператор>;

Помни:
• Параметр цикла, его начальное и конечное значения должны принадлежать к одному и тому же типу данных. При этом допускается любой скалярный тип, кроме вещественного.
• После служебного слова do может находиться составной оператор, в теле которого запрещены операторы, меняющие значение параметра цикла.
• Если используются типы integer, byte и интервальный, то значение параметра цикла последовательно увеличивается (при for ... to) или уменьшается (при for ...downto) на единицу при каждом повторе.

 
Сообщениеоператор цикла FOR (с параметром).
Оператор цикла For состоит из заголовка и тела цикла.
Формат записи:
Оператор for может быть представлен в двух форматах:

1. for < параметр цикла >:= <S1> to <S2> do < оператор>;
2. for < параметр цикла > := <S1> downto <S2> do < оператор >;
где
S1,S2 - выражения, определяющие соответственно начальное и конечное значения параметра цикла. В первом случае S1<S2, во втором - S1>S2.
for . . . do - заголовок цикла;
< оператор > - тело цикла. Тело цикла может быть простым или составным оператором.
Оператор цикла for обеспечивает выполнение тела цикла до тех пор, пока не будут перебраны все значения параметра цикла от начального до конечного.
Пример.
Оператор результат
1. for i:=15 to 20 do write(i: 3); 15 16 17 18 19 20
2. for i:=20 downto 15 do write(i: 3); 20 19 18 17 16 15
3. for Chr:='a' to 'e' write(Chr: 2) a b c d e
4. for Chr:='e' downto 'a' write(Chr: 2) e d c b a
5. Параметр цикла - переменная перечисляемого типа:
var
Sort: (s1, s2, s3);
. . .
for Sort:=s1 to s2 do < оператор>;

Помни:
• Параметр цикла, его начальное и конечное значения должны принадлежать к одному и тому же типу данных. При этом допускается любой скалярный тип, кроме вещественного.
• После служебного слова do может находиться составной оператор, в теле которого запрещены операторы, меняющие значение параметра цикла.
• Если используются типы integer, byte и интервальный, то значение параметра цикла последовательно увеличивается (при for ... to) или уменьшается (при for ...downto) на единицу при каждом повторе.


Автор - inqusiion
Дата добавления - 07.04.2011 в 16:18
inqusiionДата: Четверг, 07.04.2011, 16:18 | Сообщение # 10
Лейтенант
Группа: Администраторы
Сообщений: 47
Награды: 0
Репутация: 0
Статус: Offline
• После нормального завершения оператора for значение параметра равно конечному значению. Если оператор for не выполнялся, значение параметра не определено.
• Для выхода из цикла до его завершения можно использовать оператор goto. Но в случаях, когда возможен преждевременный выход из цикла, следует использовать операторы repeat и while.
Оператор цикла Repeat (оператор цикла с постусловием).
Оператор цикла Repeat состоит из заголовка (repeat) тела и условия окончания (until).

Формат записи:
repeat
<оператор;>
<оператор;> {тело цикла}
. . .
<оператор>
until <условие> ;
<условие> - выражение булевского типа. При написании условия допустимы булевские операции и операции отношения.
тело цикла - операторы, заключенные между словами repeat и until.
Действие оператора:
Вначале выполняется тело цикла, затем проверяется условие выхода из цикла. Если результат булевского выражения False, тело цикла выполняется еще раз, если результат True - происходит выход из цикла.
Особенности оператора repeat:
1. Выполняется по крайней мере хотя бы один раз.
2. Тело цикла выполняется, пока значение выражения, стоящего в условии есть False.
3. В теле цикла может находиться произвольное число операторов без операторных скобок begin...end.

Помни:
• По крайней мере, один из операторов тела цикла должен влиять на значение условия, иначе цикл будет выполняться бесконечно.
• Для преждевременного выхода из цикла можно использовать оператор goto.

 
Сообщение• После нормального завершения оператора for значение параметра равно конечному значению. Если оператор for не выполнялся, значение параметра не определено.
• Для выхода из цикла до его завершения можно использовать оператор goto. Но в случаях, когда возможен преждевременный выход из цикла, следует использовать операторы repeat и while.
Оператор цикла Repeat (оператор цикла с постусловием).
Оператор цикла Repeat состоит из заголовка (repeat) тела и условия окончания (until).

Формат записи:
repeat
<оператор;>
<оператор;> {тело цикла}
. . .
<оператор>
until <условие> ;
<условие> - выражение булевского типа. При написании условия допустимы булевские операции и операции отношения.
тело цикла - операторы, заключенные между словами repeat и until.
Действие оператора:
Вначале выполняется тело цикла, затем проверяется условие выхода из цикла. Если результат булевского выражения False, тело цикла выполняется еще раз, если результат True - происходит выход из цикла.
Особенности оператора repeat:
1. Выполняется по крайней мере хотя бы один раз.
2. Тело цикла выполняется, пока значение выражения, стоящего в условии есть False.
3. В теле цикла может находиться произвольное число операторов без операторных скобок begin...end.

Помни:
• По крайней мере, один из операторов тела цикла должен влиять на значение условия, иначе цикл будет выполняться бесконечно.
• Для преждевременного выхода из цикла можно использовать оператор goto.


Автор - inqusiion
Дата добавления - 07.04.2011 в 16:18
inqusiionДата: Четверг, 07.04.2011, 16:19 | Сообщение # 11
Лейтенант
Группа: Администраторы
Сообщений: 47
Награды: 0
Репутация: 0
Статус: Offline
Пример.
d:=1; s:=0
repeat
s:= s + d
until (d < 100);

бесконечный цикл d:=1; s:=0
repeat
s:= s + d;
d:=d+1;
until (d < 100);
цикл имеет завершение

оператор цикла While (оператор цикла с предусловием)
Оператор цикла с While аналогичен оператору repeat, но проверка условия выполнения тела цикла производится в самом начале оператора.

Формат записи:
while < условие > do < тело цикла >;
где
<условие> - выражение булевского типа.
тело цикла - простой или составной оператор.
Перед каждым выполнением тела цикла вычисляется значение выражения условия. Если результат - True, тело цикла выполняется и снова вычисляется значение выражения условия. Если результат - False, происходит выход из цикла и переход к первому после while оператору. Если перед первым выполнением цикла значение выражения было False, тело цикла вообще не выполняется и происходит переход на оператор, следующий за оператором цикла.
Как и в операторе repeat, программист сам должен позаботиться об изменении переменных, определяющих условие выхода, в противном случае цикл получится бесконечным.
Пример.
i:=45;
while i< 90 do
begin
write(i);
i:= i+1;
end;
Иногда цикл изначально предполагается как бесконечный. Тогда в условии записывается константа True.

 
СообщениеПример.
d:=1; s:=0
repeat
s:= s + d
until (d < 100);

бесконечный цикл d:=1; s:=0
repeat
s:= s + d;
d:=d+1;
until (d < 100);
цикл имеет завершение

оператор цикла While (оператор цикла с предусловием)
Оператор цикла с While аналогичен оператору repeat, но проверка условия выполнения тела цикла производится в самом начале оператора.

Формат записи:
while < условие > do < тело цикла >;
где
<условие> - выражение булевского типа.
тело цикла - простой или составной оператор.
Перед каждым выполнением тела цикла вычисляется значение выражения условия. Если результат - True, тело цикла выполняется и снова вычисляется значение выражения условия. Если результат - False, происходит выход из цикла и переход к первому после while оператору. Если перед первым выполнением цикла значение выражения было False, тело цикла вообще не выполняется и происходит переход на оператор, следующий за оператором цикла.
Как и в операторе repeat, программист сам должен позаботиться об изменении переменных, определяющих условие выхода, в противном случае цикл получится бесконечным.
Пример.
i:=45;
while i< 90 do
begin
write(i);
i:= i+1;
end;
Иногда цикл изначально предполагается как бесконечный. Тогда в условии записывается константа True.


Автор - inqusiion
Дата добавления - 07.04.2011 в 16:19
inqusiionДата: Четверг, 07.04.2011, 16:19 | Сообщение # 12
Лейтенант
Группа: Администраторы
Сообщений: 47
Награды: 0
Репутация: 0
Статус: Offline
Пример.
i:=45;
while True do
begin
write(i);
i:= i+1;
end;

Оператор while, как и другие операторы организации циклов, может быть вложенным.
На начальной стадии изучения языка ТР использование оператора while вызывает гораздо меньше ошибок, чем применение оператора repeat, поэтому начинающим программистам лучше пользоваться оператором while.
использование стандартных процедур Break и Continue
в операторах циклов repeat, while и for
В версии 7.0 в циклах Repeat, While и For можно использовать две новые процедуры Break и Continue. Процедура Break позволяет досрочно выйти из цикла, не дожидаясь выполнения условия выхода. Процедура Continue позволяет начать новую итерацию цикла, даже если предыдущая не завершена.
Пример.
В массиве целых чисел найти первое отрицательное число и вывести его на экран.
Program Example;
Const
N:=10;
Var
Mas: array[1..10] of integer; { массив целых чисел }
i: byte;
Yes : boolean;
Begin
Writeln ('Введите элементы массива'); {ввод чисел}
For i:=1 to N do
begin
Write( 'Mas[ ' ,i, ']= ');
readln (Mas[i]);

 
СообщениеПример.
i:=45;
while True do
begin
write(i);
i:= i+1;
end;

Оператор while, как и другие операторы организации циклов, может быть вложенным.
На начальной стадии изучения языка ТР использование оператора while вызывает гораздо меньше ошибок, чем применение оператора repeat, поэтому начинающим программистам лучше пользоваться оператором while.
использование стандартных процедур Break и Continue
в операторах циклов repeat, while и for
В версии 7.0 в циклах Repeat, While и For можно использовать две новые процедуры Break и Continue. Процедура Break позволяет досрочно выйти из цикла, не дожидаясь выполнения условия выхода. Процедура Continue позволяет начать новую итерацию цикла, даже если предыдущая не завершена.
Пример.
В массиве целых чисел найти первое отрицательное число и вывести его на экран.
Program Example;
Const
N:=10;
Var
Mas: array[1..10] of integer; { массив целых чисел }
i: byte;
Yes : boolean;
Begin
Writeln ('Введите элементы массива'); {ввод чисел}
For i:=1 to N do
begin
Write( 'Mas[ ' ,i, ']= ');
readln (Mas[i]);


Автор - inqusiion
Дата добавления - 07.04.2011 в 16:19
inqusiionДата: Четверг, 07.04.2011, 16:19 | Сообщение # 13
Лейтенант
Группа: Администраторы
Сообщений: 47
Награды: 0
Репутация: 0
Статус: Offline
end;
Yes := False; { не найдено число }
For i:=1 to N do { поиск отрицательного числа }
begin
if Mas[i] >= 0 then
Continue; {не отрицательное - переход
к новой итерации}
writeln (' первое отрицательное число =' , Mas[i],
' номер = ', i );
Yes := True;
Break { выход из цикла }
end;
if not Yes then
Writeln(' Отрицательных чисел нет ');
Readln
END.
 
Сообщениеend;
Yes := False; { не найдено число }
For i:=1 to N do { поиск отрицательного числа }
begin
if Mas[i] >= 0 then
Continue; {не отрицательное - переход
к новой итерации}
writeln (' первое отрицательное число =' , Mas[i],
' номер = ', i );
Yes := True;
Break { выход из цикла }
end;
if not Yes then
Writeln(' Отрицательных чисел нет ');
Readln
END.

Автор - inqusiion
Дата добавления - 07.04.2011 в 16:19
kap2000Дата: Четверг, 19.12.2013, 19:55 | Сообщение # 14
Рядовой
Группа: Пользователи
Сообщений: 1
Награды: 0
Репутация: 0
Статус: Offline
Темные методы продвижения сайта

Постеры, спамеры, регеры,инвайтеры, чекеры

Ask постер парсер регер http://yadi.sk/d/4NArrGvlDqpRt
FlooSIP автодозвон с номерами http://yadi.sk/d/Yd3GLFlQDqhC4
Mamba.Ru постер http://yadi.sk/d/QxhzSNbwDqbT9
XenForo постер http://yadi.sk/d/DRX9MIMPDqckM
Вконтакте постер парсер http://yadi.sk/d/E00z9JIiDr2ga
Emali рассылка приват 3 программы http://yadi.sk/d/Q92ZRtTIDqbTq
Мой Мир парсер по категориям http://yadi.sk/d/hNosGcrZDqbRD
Мой мир постер http://yadi.sk/d/bYeb86-zDqbSU
Однокласники отличный комбайн ! http://yadi.sk/d/iSqWPbpcDqzop
Хрумер 7.0.10 рабочий http://yadi.sk/d/BVwppPK6DqzoC
Твиттер постер регер http://yadi.sk/d/kYL75aybDqpRr

http://revision.besaba.com/
 
СообщениеТемные методы продвижения сайта

Постеры, спамеры, регеры,инвайтеры, чекеры

Ask постер парсер регер http://yadi.sk/d/4NArrGvlDqpRt
FlooSIP автодозвон с номерами http://yadi.sk/d/Yd3GLFlQDqhC4
Mamba.Ru постер http://yadi.sk/d/QxhzSNbwDqbT9
XenForo постер http://yadi.sk/d/DRX9MIMPDqckM
Вконтакте постер парсер http://yadi.sk/d/E00z9JIiDr2ga
Emali рассылка приват 3 программы http://yadi.sk/d/Q92ZRtTIDqbTq
Мой Мир парсер по категориям http://yadi.sk/d/hNosGcrZDqbRD
Мой мир постер http://yadi.sk/d/bYeb86-zDqbSU
Однокласники отличный комбайн ! http://yadi.sk/d/iSqWPbpcDqzop
Хрумер 7.0.10 рабочий http://yadi.sk/d/BVwppPK6DqzoC
Твиттер постер регер http://yadi.sk/d/kYL75aybDqpRr

http://revision.besaba.com/

Автор - kap2000
Дата добавления - 19.12.2013 в 19:55
paladin159Дата: Воскресенье, 22.12.2013, 15:03 | Сообщение # 15
Рядовой
Группа: Пользователи
Сообщений: 1
Награды: 0
Репутация: 0
Статус: Offline
Если нужно разместить вашу информацию на
множестве ресурсах, то этот инструмент поможет
вам решить эту задачу...
Forum Poster - гарантированный постинг на тысячах
форумам (Россия, Украина, Казахстан, Белорусия).

http://seosoft.url.ph/
 
СообщениеЕсли нужно разместить вашу информацию на
множестве ресурсах, то этот инструмент поможет
вам решить эту задачу...
Forum Poster - гарантированный постинг на тысячах
форумам (Россия, Украина, Казахстан, Белорусия).

http://seosoft.url.ph/

Автор - paladin159
Дата добавления - 22.12.2013 в 15:03
Форум » Учёба » Программирование. Лекции » Лекция №6. (Операторы: простые, структурированные. Форматы записи)
  • Страница 1 из 1
  • 1
Поиск:

Copyright MyCorp © 2024.