- •Алгоритм.Определение.Свойство алгоритма.
- •Технология программирования и основные этапы её развития.
- •Определение программы .Определение программирования
- •Архитектура программного обеспечения. Типы программного обеспечения.
- •Типы программного обеспечения
- •Системное программное обеспечение
- •Прикладное программное обеспечение
- •Интерфейс. Типы пользовательских интерфейсов.
- •Язык программирования высокого уровня. Особенности. Примеры.
- •Структурное программирование. Средства описания структурных алгоритмов.
- •Структура программы на языке pascal.Операторы на языке паскаль.
- •1. Составной и пустой операторы
- •2. Операторы ветвлений
- •3. Операторы повторений
- •Структурированные операторы языка паскаль.Операторы for, while, repeat.Особенности.
- •5.2.1. Составной оператор
- •5.2.2. Условный оператор if
- •5.2.3. Условный оператор case
- •5.2.4. Оператор цикла repeat
- •5.2.5. Оператор цикла while
- •5.2.6. Оператор цикла for
- •5.2.7. Использование стандартных процедур Break и Continue в операторах циклов repeat, while и for
- •Оператор выбора. Блок-схема.Синтаксис на языке паскаль.
- •Составной оператор.Синтаксис на языке паскаль.Особенности применения.
- •Оператор цикла с предусловием.Блок-схема.Синтаксис.
- •Оператор цикла с постусловием.Блок-схема.Синтаксис.
- •Простые типы данных
- •Порядковые типы данных
- •Стандартные подпрограммы, обрабатывающие порядковые типы данных
- •Типы данных, относящиеся к порядковым
- •Перечисляемый тип данных
- •1.До начала работы с файлами в Паскале необходимо установить связь между файловой переменной и именем физического дискового файла:
- •2.После окончания работы с файлами на Паскале, они должны быть закрыты.
- •3.Подготовка к записи в файл Паскаля
- •4.Запись в файл Паскаля
- •5.Подготовка файла к чтению Паскаля
- •6.Чтение из файла в Паскале
- •Interface – зарезервированное слово (интерфейс); начинает интерфейсную часть модуля;
- •Implementation – зарезервированное слово (выполнение); начинает исполняемую часть модуля;
5.2.4. Оператор цикла repeat
Оператор цикла REPEAT организует выполнение цикла, состоящего из любого числа операторов, с неизвестным заранее числом повторений. Тело цикла выполняется хотя бы один раз. Выход из цикла осуществляется при истинности некоторого логического выражения. Структура этого оператора:
repeat Instruction1; Instruction2; . . . InstructionN until S;
В этой структуре:
Instruction1, Instruction2, ..., InstructionN - выполняемые операторы, составляющие тело цикла;
S - логическое выражение, истинность которого проверяется в конце каждой итерации.
Так как слова repeat и until являются своеобразными операторными скобками, точку с запятой перед словом until ставить не обязательно.
Пример. Усовершенствованная программа, вычисляющая сумму двух чисел (см. пример п. 2).
program EXAMPLE6; var X, Y, Sum: Real; Ch: Char; begin repeat {начало цикла} Write( ' Введите числа Х и Y '); ReadLn(X, Y); Sum := X + Y; WriteLn( ' Сумма чисел X и Y равна ',Sum); Write('Завершить программу? '); ReadLn(Ch); until (UpCase(Ch) = 'Y') or (Ch = 'д') or (Ch = 'Д') {UpCase - получение заглавной буквы} end.
5.2.5. Оператор цикла while
Оператор цикла WHILE организует выполнение одного оператора неизвестное заранее число раз. Выход из цикла осуществляется, если некоторое логическое выражение окажется ложным. Так как истинность логического выражения проверяется в начале каждой итерации, тело цикла может не выполняться ни разу. Структура оператора цикла имеет вид:
while S do Instruction;
В этой структуре:
S - логическое выражение, истинность которого проверяется в начале каждой итерации;
Instruction - выполняемый оператор цикла.
Пример. Найти все делители целого положительного числа (кроме 1 и самого числа).
program EXAMPLE7; var X: Integer; Half: Integer; Divider: Integer; i : Integer; begin repeat Write('Введите число больше нуля: '); ReadLn(X); if X <= 0 then WriteLn('Неправильный ввод') until X > 0; Half := X div 2; Divider := 2; I := 0; while Divider <= Half do begin if X mod Divider = 0 then begin Inc(i); {увеличение счетчика на единицу} WriteLn(i, ' -й делитель равен: ', Divider) end ; Inc(Divider) {увеличение делителя на единицу} end; if i = 0 then WriteLn('Делителей нет'); WriteLn('Конец решения') End.
5.2.6. Оператор цикла for
Оператор цикла FOR организует выполнение одного оператора заранее известное число раз. Существует два варианта оператора:
For Param:=Start to Finish do Instruction; For Param:=Start downto Finish do Instruction;
В этих операторах:
Param - параметр цикла, являющийся переменной порядкового типа;
Start - выражение, определяющее начальное значение параметра цикла;
Finish - выражение, определяющее конечное значение параметра цикла;
Instruction - выполняемый оператор.
Start и Finish должны быть совместимы для присваивания с параметром цикла (см. п. 9.3).
Цикл действует таким образом. Сначала вычисляются и запоминаются начальное - Start и конечное - Finish значения параметра цикла. Далее параметру цикла Param присваивается начальное значение Start. Затем значение параметра цикла сравнивается со значением Finish. Далее, пока параметр цикла меньше или равен конечному значению (в первом варианте оператора) или больше или равен конечному значению (во втором варианте), выполняется очередная итерация цикла; в противном случае происходит выход из цикла. Выполнение очередной итерации включает в себя сначала выполнение оператора Instruction, а затем присваивание параметру цикла следующего большего значения (в первом варианте оператора) или следующего меньшего значения (во втором варианте).
Естественно, что, если в первом варианте значение Start больше Finish или во втором варианте меньше Finish, оператор не выполняется ни разу.
После выхода из цикла параметр цикла становится неопределенным, за исключением случая, когда выход из цикла был осуществлен с помощью оператора GOTO или стандартной процедуры Break.
Пример. Вывести на экран буквы от Z до A.
program EXAMPLE8; var i: Char; begin for i : = 'Z' downto 'A' do Write(i); WriteLn end.
Пример. Вычислить 101 значение sin x с заданным шагом и вывести первое отрицательное значение синуса.
program EXAMPLE9; label l; var Si: array[0..100] of Real; {массив вещественных чисел} Step: Real; X: Real; i: Integer; begin Write('Введите шаг вычисления: '); ReadLn(Step); X := 0; {начальный аргумент} for i := 0 to 100 do begin Si[I]:=Sin(X); X := X + Step end; for i :=0 to 100 do if Si[I] < 0 then begin WriteLn('Первое отрицательное значение синуса: ', Si[I], ' Номер элемента: ', i); goto 1; end; WriteLn('Нет отрицательного значения'); 1: end.