- •Информатика
- •Введение
- •Алгоритм и программа
- •Интегрированная инструментальная среда turbo pascal 7.0.
- •Начало работы
- •Клавиатура
- •Диалоговые окна
- •Подготовка текста программы Начало работы
- •Ввод текста и внесение изменений в текст программы
- •Компиляция
- •Пробный запуск программы на выполнение
- •Буфер промежуточного хранения
- •Использование справочной системы
- •Сохранение текста программы в файле
- •Отладка программы
- •Завершение работы
- •Алфавит языка
- •Символы, используемые в идентификаторах
- •Разделители
- •Специальные символы
- •Знаки пунктуации
- •Основные типы данных
- •Описание переменных
- •Инструкция присваивания
- •Выражение
- •Тип выражения
- •Выполнение инструкции присваивания
- •Константы
- •Целые константы
- •Вещественные константы
- •Строковые и символьные константы
- •Константные выражения
- •Типизированные константы
- •Стандартные функции
- •Арифметические функции
- •Функции преобразования типа
- •Функции для величин порядкого типа
- •Ввод и вывод информации
- •Инструкции write и writeln
- •Инструкции read и readln
- •Общая структура программы
- •Раздел объявлений и соглашений
- •Заголовок
- •Глобальные директивы компилятора
- •Оператор uses
- •Объявления глобальных меток, констант, типов и переменных
- •Процедуры и функции
- •Заголовок процедуры или функции
- •Объявления локальных меток, констант, типов и переменных
- •Тело процедуры/функции
- •Основной блок программы
- •Управляющие структуры
- •Условие
- •Условный оператор if
- •Условный оператор case
- •Оператор цикла for
- •Оператор цикла repeat
- •Оператор цикла while
- •Оператор безусловного перехода goto
- •Пустой оператор
- •Составной оператор
- •Массивы
- •Объявление массива
- •Некоторые типичные действия с массивами
- •Вывод массива
- •Ввод массива
- •Сортировка массива
- •Сортировка методом прямого выбора
- •Сортировка методом прямого обмена
- •Поиск в массиве
- •Поиск минимального (максимального) элемента массива
- •Операции с матрицами
- •Сложение матриц
- •Транспонирование матрицы
- •Умножение матриц
- •Символы и строки
- •Символы
- •Массив символов
- •Функция length
- •Процедура delete
- •Функция pos
- •Функция copy
- •Процедуры и функции
- •Процедура
- •Функции
- •Параметры-процедуры и параметры-функции.
- •Процедура exit
- •Директивы подпрограмм
- •Директива forward
- •Директивы far и near
- •Директива external
- •Директива assembler
- •Директива inline
- •Директива interupt
- •Рекурсия Понятие рекурсии
- •Пример программы: поиск пути
- •Вывод в файл
- •Объявление файла
- •Назначение файла
- •Инструкции вывода в файл
- •Открытие файла для вывода
- •Ошибки открытия файла
- •Закрытие файла
- •Ввод из файла
- •Открытие файла
- •Чтение из файла
- •Конец файла и конец строки
- •Введение в структурное программирование
- •Рекомендательный библиографический список Основной:
- •Дополнительный:
Оператор цикла repeat
Оператор цикла REPEAT организует выполнение цикла, состоящего из любого числа операторов, с неизвестным заранее числом повторений. Тело цикла выполняется хотя бы один раз. Выход из цикла осуществляется при истинности некоторого логического выражения. Структура этого оператора:
Repeat
P1 ;
P2 ;
. . .
PN
until S ;
В этой структуре:
P1, P2, . . . , PN выполняемые операторы, составляющие тело цикла;
S логическое выражение, истинность которого проверяется в конце каждой итерации.
Так как слова repeat и until являются своеобразными операторными скобками, точке с запятой перед словом until ставить необязательно.
Пример 5. Вычислить значения функции
при
Рис.15. Блок-схема примера 5.
Программа:
Program Example_5 ;
Var
x , y , a , b ,h : real ;
Begin
a := 0.9 ; b := 1.4 ; h := 0.1 ; x := a ;
repeat
y := x*x * exp(-x) * sin(x) ;
WriteLn(‘x=‘,x:7:1,’ y=‘,y:10:5) ;
x := x + h ;
until x > b ;
End.
Оператор цикла while
Оператор цикла WHILE организует выполнение одного оператора неизвестное заранее число раз. Выход из цикла осуществляется, если некоторое логическое выражение окажется ложным. Так как истинность логического выражения проверяется в начале каждой итерации, тело цикла может не выполниться ни разу.
Структура оператора WHILE имеет вид:
WHILE S do Instruction ;
В этой структуре:
S логическое выражение, истинность которого проверяется в начале каждой итерации;
Instruction выполняемый оператор цикла.
Пример 6. Элементы последовательности вычисляются рекуррентно по формуле . Составить программу для вычисления и печати числа элементов последовательности, удовлетворяющих неравенству ai>0,7 , если ao = 27, a значения i изменяются от 1 до 10.
Расчётные формулы:
Пусть n - число вычисляемых элементов последовательности,
k - число элементов, удовлетворяющих условию ai > 0,7.
Тогда
ko =0 - начальное значение k.
Рис.16. Блок-схема примера 6.
Программа:
Program Example_6 ;
Var
a0, a : real ;
i, n, k : integer ;
Begin
WriteLn ;
WriteLn(' Введите n,a0');
ReadLn(n,a0) ;
WriteLn ;
WriteLn('Введено число выполняемых элементов последовательности:' ,n:4);
WriteLn(' Начальное значение :',a0:6:1) ;
k :=0 ;
i :=1 ;
a :=a0 ;
while i <= n do
begin a := a / 3.0 ;
if a > 0.7 then k := k + 1 ;
i := i + 1
end ;
WriteLn ;
WriteLn(' k=',k:4) ;
End.
Оператор безусловного перехода goto
Инструкции IF и CASE изменяют ход программы в зависимости от некоторого условия. Поэтому эти инструкции иногда называют инструкциями условного перехода. Существует еще одна инструкция безусловного перехода GOTO.
Оператор GOTO позволяет изменять стандартный порядок выполнения операторов и перейти к выполнению программы, начиная с заданного оператора. Оператор, на который происходит переход, должен быть помечен меткой.
Общий вид оператора GOTO:
GOTO < Метка >
Метка это идентификатор с двоеточием, стоящий перед оператором, который должен быть выполнен после оператора GOTO.
Использовать оператор GOTO следует крайне осторожно. Широкое его применение без особых на то оснований ухудшает понимание логики работы программы. Безусловный переход можно осуществлять далеко не из каждого места программы и не в любое место программы. Так, нельзя с помощью этого оператора перейти из основной программы в подпрограмму или выйти из подпрограммы, не рекомендуется осуществлять переход внутрь структурированного оператора, т. к. он может дать неправильный результат и т. д.
Пример 7. Найти частное от деления целых чисел.
Program Example_7 ;
Label
Out ;
Var
x, y, Rez : Integer ;
Begin
WriteLn(‘Введите делимое’) ;
ReadLn( x ) ;
WriteLn(‘Введите делитель’) ;
ReadLn( y ) ;
If y = 0 Then
begin
WriteLn(‘Деление на ноль’) ;
Goto Out ;
end ;
Rez := x div y ;
WriteLn(‘Частное равно:’,Rez) ;
Out : { метка “пустого” оператора }
End.