- •СОДЕРЖАНИЕ
- •Раздел 1. ОБЩИЕ СВЕДЕНИЯ О ПРОГРАММНОМ ОБЕСПЕЧЕНИИ
- •1.1. Принцип программного управления
- •1.2. Автоматическое выполнение команд программы
- •1.3. Этапы постановки и решения задачи на компьютере
- •1.4. Назначение и классификация языков программирования
- •1.4.1. Машинно-ориентированные языки
- •1.4.2. Машинно-независимые языки
- •1.5. Структура программного обеспечения
- •1.5.1. Системы программирования
- •1.5.2. Операционные системы
- •Раздел 2. ОСНОВЫ АЛГОРИТМИЗАЦИИ
- •2.1. Алгоритм и его свойства
- •2.2. Способы описания алгоритмов
- •2.2.1. Словесное описание
- •2.2.2. Графическое описание
- •2.2.3. Запись на алгоритмическом языке
- •2.3. Разновидности структур алгоритмов
- •2.3.1. Линейный вычислительный процесс
- •2.3.2. Разветвляющийся вычислительный процесс
- •2.3.3. Циклический вычислительный процесс
- •Раздел 3. СТРУКТУРНОЕ ПРОГРАММИРОВАНИЕ
- •3.1. Теория структурного программирования
- •3.2. Реализация структурного проектирования в современных языках программирования
- •3.3. Преобразование неструктурированных программ в структурированные
- •3.3.2. Метод введения переменной состояния
- •3.3.3. Метод булевого признака
- •3.4. Способы графического представления структурированных схем алгоритмов
- •3.4.1. Метод Дамке
- •3.4.2. Схемы Насси-Шнейдермана
- •Раздел 4. АЛГОРИТМИЧЕСКИЙ ЯЗЫК ПРОГРАММИРОВАНИЯ ПАСКАЛЬ
- •4.1. Общая характеристика языка Паскаль
- •4.2. Алфавит языка Паскаль
- •4.3. Основные понятия языка
- •4.3.1. Идентификаторы
- •4.3.2. Комментарии
- •4.4. Структура простейшей программы
- •4.5. Способы описания синтаксиса
- •4.5.2. Синтаксические диаграммы
- •Раздел 5. ОСНОВНЫЕ ТИПЫ ДАННЫХ
- •5.1. Классификация данных
- •5.2. Стандартные скалярные типы данных
- •5.2.1. Целочисленные типы
- •Формат
- •5.2.2. Вещественные типы
- •Функция
- •5.2.3. Символьный тип (тип Char)
- •5.2.4. Логический тип (тип Boolean)
- •Функция
- •5.3. Выражения
- •5.4. Оператор присваивания
- •Раздел 6. СТРУКТУРА ПРОГРАММЫ
- •6.1. Программный модуль
- •6.2. Раздел меток
- •6.3. Раздел констант
- •6.4. Раздел типов
- •6.5. Раздел переменных
- •6.6. Раздел операторов
- •Раздел 7. ОПЕРАТОРЫ
- •7.1. Составной оператор
- •7.2. Программирование линейных и разветвляющихся структур алгоритмов
- •7.2.1. Оператор перехода Goto
- •7.2.2. Условный оператор If
- •7.2.3. Оператор варианта (выбора) Case
- •7.2.4. Пустой оператор
- •7.3. Программирование циклических структур алгоритмов
- •7.3.1. Оператор цикла с параметром (оператор For)
- •7.3.2. Оператор цикла с постусловием
- •7.3.3. Оператор цикла с предусловием
- •7.3.4. Операторы Continue и Leave
- •Раздел 8. СТРУКТУРИРОВАНИЕ И ОФОРМЛЕНИЕ ПРОГРАММ
- •Раздел 9. ОПИСАННЫЕ СКАЛЯРНЫЕ ТИПЫ
- •9.1. Перечислимый скалярный тип
- •9.2. Тип диапазон
- •10.1. Массивы
- •10.1.1. Задание массивов
- •10.1.2. Действия над элементами массивов
- •10.1.3. Действия над массивами
- •10.1.4. Типизованные константы типа массив
- •10.2. Строковые данные
- •10.2.1. Строковые константы
- •10.2.2. Строковые переменные
- •10.2.3. Встроенные функции, определенные над данными типа String
- •ЛИТЕРАТУРА
3)Begin
A := Sin(X);
Begin I := 0; J :=0 End
End
Здесь составной оператор содержит два оператора: основной и составной
всоставе составного.
7.2.Программирование линейных и разветвляющихся структур алгоритмов
Линейная программа – это программа, в которой операторы выполняются в том порядке, в котором они записаны.
Разветвляющаяся программа – это программа, состоящая из линейных участков и точек ветвления, в которых производится выбор того или иного линейного участка. В разветвляющихся программах порядок выполнения операторов может не совпадать с порядком их записи в программе. Для управления порядком выполнения операторов служат операторы перехода и выбирающие операторы.
7.2.1. Оператор перехода Goto
Его еще называют оператором безусловного перехода.
Данный оператор служит для безусловной передачи управления помеченному оператору.
Формат оператора Goto иллюстрирует рисунок 7.2.
<Оператор_Goto> ::=
Goto <Метка>
Рисунок 7.2 – Синтаксическая диаграмма оператора Goto
142
Оператор Goto указывает, какой оператор должен выполняться следующим. В языке имеется ряд ограничений на использование операторов
Goto:
1)с помощью Goto нельзя переходить внутрь производных операторов, не содержащих данный оператор Goto (составного оператора, операторов For, Repeat, While, If, Case, With);
2)с помощью оператора Goto запрещен переход из одной альтернативы в другую в выбирающих операторах (If, Case);
3)с помощью оператора Goto нельзя входить в подпрограмму или выходить из нее.
Пример 7.2.
Пример некоторой абстрактной программы, использующей оператор
Goto.
--------------------------------
Label
L1, L2, L3, L4;
--------------------------------
Begin |
|
Goto L3; |
{неправильно, переход внутрь составного |
Begin |
оператора} |
|
|
L3: Goto L4; |
{правильно} |
Goto L3 |
{правильно} |
End; |
|
L4: If A > B Then |
|
L1: Goto L2 |
{неправильно, переход между альтернативами If} |
Else |
|
L2: Goto L1 |
{неправильно, переход между альтернативами If} |
End;
--------------------------------
Наличие оператора Goto делает программу ненаглядной, трудночитаемой, трудноотлаживаемой. Программа с Goto не является структурированной. Желательно использовать операторы Goto минимально, а лучше вообще не использовать.
143
7.2.2. Условный оператор If
Оператор If является производным оператором. Относится к группе выбирающих операторов. Используется в разветвляющихся программах для выбора того или иного участка вычислений в зависимости от выполнения некоторого условия. Поэтому его еще называют оператором условного перехода.
Формат оператора If представляет рисунок 7.3.
<Оператор_If> ::=
If <Логическое_выражение> Then
<Оператор_1>
Else <Оператор_2>
Рисунок 7.3 – Синтаксическая диаграмма оператора If
Здесь в переводе с английского: If – если, Then – то, Else – иначе. Смысл оператора: если логическое выражение истинно (принимает значение True), то выполняется <Оператор_1>. В противном случае выполняется <Оператор_2>.
После выполнения любого из <Операторов_1 или_2> следующим выполняется оператор, записанный за оператором If.
В операторе If после слов Then и Else можно записать только один оператор. Если необходимо записать группу операторов, используют операторные скобки Begin End, т.е. составной оператор.
Пример 7.3.
Вычислить
sin(x), если 0 ≤ x ≤ 1;
Z =
5x + 3, иначе.
Решение:
If (X >= 0) And (X <= 1)
Then
144
Z := sin(X)
Else
Z := 5 * X + 3;
Writeln (Z);
Независимо от того, выполняется ветвь Then или Else, следующим в примере 7.3 будет выполняться оператор Writeln.
Следующий выполняемый оператор может быть указан и в самом операторе If с помощью оператора Goto.
Пример 7.4.
Указание в операторе If следующего выполняемого оператора.
If X * 2 + Y * 2 > sin(Z)
Then Goto M1
Else Goto M2;
Однако следует напомнить, что использование оператора Goto нежелательно.
Конструкция Else <Оператор_2> в операторе If необязательна (см. рисунок 7.3). Это соответствует алгоритму: если выражение истинно, выполняется<Оператор_1>, в противном случае следующий оператор.
Конструкция оператора If без Else называется сокращенной формой оператора If, конструкция с Else – полной формой.
Возможно использование вложенного оператора If, т.е. оператор, записанный после Then или Else, также может быть условным.
Пример 7.5.
Вычислить:
0, если x = 0; Z = 5x, если x > 0;
x2, если x < 0.
Решение:
If X = 0 Then Z := 0
Else
145
If X > 0 Then Z := 5 * X
Else Z := X * X;
В прмере 7.5 используется две полных формы оператора If.
Если при записи вложенного оператора If используется его сокращенная форма, то считается, что служебное слово Else относится к последнему оператору If.
Пример 7.6.
Использование сокращенной формы оператора If во вложенном операторе.
If A <> B Then If C <> D Then E := False
Else E := True;
В данном примере служебное слово Else относится к последнему оператору If. Таким образом, эта конструкция эквивалентна следующей записи:
If A <> B Then Begin
If C <> D Then E := False
Else E := True
End;
Для того чтобы избежать ошибок использования сокращенной формы во вложенном операторе If, рекомендуется выделять нужную форму оператора If с помощью операторных скобок Begin End.
Пример 7.7.
Как противоположность примеру 7.6.
If A <> B Then
Begin
If C <> D
Then E := False
End
Else
E := True;
146