- •Алгоритмы
- •Свойства алгоритма
- •Способы описания алгоритмов
- •Язык программирования
- •Способы описания синтаксиса языка программирования
- •1. Бнф (Бэкуса-Наура форма)
- •Компиляторы и интерпретаторы
- •Обзор языков программирования высокого уровня (таблица)
- •Язык программирования Паскаль Первая программа на языке программирования Паскаль
- •Типы, переменные и константы
- •Основные типы данных языка Pascal
- •Операторы ввода/вывода
- •Форматы вывода
- •Выражения и операции Выражения
- •Операции
- •Операции div и mod для целых
- •Операции shl и shr для целых
- •Логические операции
- •Часто используемые правила математической логики
- •Стандартные процедуры и функции Стандартные функции
- •Стандартные функции в Dephi
- •Стандартные процедуры для целых
- •Явление переполнения
- •Погрешность округления и вычислительная погрешность
- •Примеры на суммирование рядов
- •Процедуры break и continue
- •Оператор безусловного перехода goto
- •Подпрограммы. Процедуры и функции
- •Процедуры
- •Синтаксис описания процедуры
- •Оператор вызова процедуры
- •Функции
- •Переменная Result
- •Способы передачи параметров Передача по значению. Параметры-значения
- •Передача по ссылке. Параметры-переменные (с ключевым словом var)
- •Семантика вызова подпрограммы
- •Алгоритм вызова подпрограммы
- •Статическая и автоматическая память
- •Локальные и глобальные переменные
- •Обращение к глобальным переменным и побочный эффект
- •Область видимости и время жизни объекта
- •Статическая локальная переменная
- •Перегрузка имен подпрограмм
- •Структура модуля
- •Перечислимый и диапазонный типы Перечислимый тип
- •Записи с вариантами
- •Как записи с вариантами хранятся в памяти
- •Сортировка массивов записей
- •Индексная сортировка
- •Множества
- •Стандартные подпрограммы для работы с символами
- •Виды строк в Delphi
- •Cтроки shortstring
- •Основные подпрограммы для работы со строками
- •Основные подпрограммы для работы со строками (Delphi)
- •Алгоритмы на строках
- •Использование Split
Оператор безусловного перехода goto
Оператор безусловного перехода goto служит для того, чтобы прервать естественную последовательность выполнения операторов и указать, какой из операторов программы должен выполняться следующим. Чтобы на некоторый оператор можно было совершить переход, его следует пометить, т.е. поставить перед ним метку и двоеточие:
метка: оператор
Метка представляет собой идентификатор и должна быть описана в разделе описания меток в виде:
label имя [, имя ]
Сам оператор goto имеет следующий синтаксис:
goto метка
Переход внутрь другого оператора запрещен:
С помощью оператора goto можно моделировать все другие управляющие операторы языка.
Пример 1.
Цикл ... begin ... break end;
эквивалентно
Цикл ... begin ... goto lbl; ... end; lbl:
Пример 2.
Цикл ... begin ... continue ... end;
эквивалентно
Цикл ... begin ... goto lbl; ... lbl: end;
Пример 3.
repeat операторы until B;
эквивалентно
lbl: операторы if not B then goto lbl;
Пример 4.
while B do begin операторы end;
эквивалентно
lbl1: if not B then goto lbl2; операторы goto lbl1; lbl2:
Пример 5.
if A then begin операторы1 end else begin операторы2 end;
эквивалентно
if not A then goto lbl1; операторы1 goto lbl2; lbl1: операторы2 lbl2:
Пример 6.
case i of 1: begin операторы1 end; 2: begin операторы2 end; 3: begin операторы3 end; else операторы4 end;
эквивалентно
if i=1 then goto lbl1; if i=2 then goto lbl2; if i=3 then goto lbl3; goto lbl4; lbl1: операторы1 goto lblend; lbl2: операторы2 goto lblend; lbl3: операторы3 goto lblend; lbl4: операторы4 lblend:
Использовать оператор goto в программах небезопасно и нежелательно. Во всех случаях программу с использованием оператора goto можно заменить на эквивалентную программу без использования goto. В частности, процедуры break и continue введены в язык, чтобы заменить наиболее часто используемые случаи оператора goto перехода на оператор, следующий за циклом, и перехода на конец тела цикла.
Следует отметить, что команда безусловного перехода (JMP) обязательно присутствует в языке ассемблера и интенсивно используется. По существу, приведенные выше примеры показывают, как на языке ассемблера моделируются те или иные управляющие конструкции языка программирования высокого уровня.
Подпрограммы. Процедуры и функции
Подпрограммой называется последовательность операторов, оформленная специальным образом, имеющая имя и список параметров. Подпрограмма может вызываться многократно с различными параметрами.
Цели введения подпрограмм:
Разбиение большой программы на части, каждая из которых имеет имя.
Вызов повторяющейся последовательности действий многократно с различными параметрами.
Процедуры
Пример. Составить процедуру вычисления среднего арифметического и среднего геометрического А и В. С ее помощью найти среднее арифметическое и среднее геометрическое пар A,B; A,C; B,C.
procedure Mean(A,B: real; var MA,MG: real); // A,B-входные параметры // MA,MG-выходные параметры begin assert(A>0); // предусловия процедуры assert(B>0); MA:=(A+B)/2; MG:=sqrt(A*B); end;
var A,B,C: real; MA1,MA2,MA3,MG1,MG2,MG3: real;
begin readln(A,B,C); Mean(A,B,MA1,MG1); Mean(A,C,MA2,MG2); Mean(B,C,MA3,MG3); writeln(MA1,MG1); writeln(MA2,MG2); writeln(MA3,MG3); end.