- •СОДЕРЖАНИЕ
- •Раздел 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
- •ЛИТЕРАТУРА
N = 10; |
|
Var |
|
S, I: Integer; |
|
Begin |
|
S := 0; |
|
I := 1; |
{Установка начального значения I} |
Repeat |
|
S := S + I * I; |
|
I := I + 1 |
{Самостоятельное изменение параметра I} |
Until I > N; |
{Выход из цикла по выполнению условия} |
Writeln (S) |
|
End. |
|
Сравните программу примера 7.15 с программами, приведенными в примерах 7.13, 7.14. В примере 7.15, по сравнению с использованием оператора For, самим нужно наращивать значение параметра I и устанавливать его в исходное значение.
7.3.3. Оператор цикла с предусловием
Используется для программирования цикла с заранее неизвестным числом повторений в тех случаях, когда тело цикла при некоторых условиях может не выполняться ни разу.
Формат оператора While определяет рисунок 7.9
<Оператор_While> ::=
While <Логическое_выражение> Do
<Оператор>
Рисунок 7.9 – Синтаксическая диаграмма оператора цикла с предусловием
На данном рисунке While – пока, Do – делать.
<Оператор> определяет тело цикла. Перед каждым его выполнением вычисляется значение <Логического_выражения>. Если оно равно True, то тело цикла выполняется. Выполнение цикла прекращается, когда
156
<Логическое_выражение> впервые станет равным False. Если к началу выполнения цикла значение < Логического выражения> равно False, то тело цикла не выполняется ни разу.
Если в теле цикла необходимо выполнить несколько операторов, используется составной оператор.
Оператор While является наиболее универсальным из операторов цикла. Его можно использовать и вместо операторов For и Repeat. Однако это не всегда удобно.
Пример 7.16.
Вычислить значение функции
Y = sin X
через разложение функции в бесконечный ряд
Y = sin X = X − X 3 / 3! + X 5 / 5! − X 7 / 7! + ...
с точностью Eps = 0,0001.
Алгоритм решения данной задачи рассмотрен в п. 2.3.3 (см. Пример 2.5).
Program Sin2; Const
eps = 0.0001; Var
y, x,: real; n: integer; vs: real; Begin
Readln (x); y := x;
n := 2; vs := x;
While abs(vs) >= eps Do {Вход в цикл по выполнению условия}
Begin
vs := –vs * x * x / (2 * n – 1) / (2 * n – 2); n := n + 1;
y := y + vs
End;
Writeln (x, y, eps) End.
157
Аналогичная программа, но с использованием оператора Repeat...Until, приведена в примере 7.14. Различия между ними выделены жирным шрифтом.
С помощью оператора While можно программировать и циклы с заданным числом повторений.
Пример 7.17.
Вычислить для N = 10
|
N |
|
S = ∑i 2 . |
|
i =1 |
Program S4; |
|
Const |
|
N = 10; |
|
Var |
|
S, I: Integer; |
|
Begin |
|
S := 0; |
|
I := 1; |
{Установка начального значения I} |
While I <= N Do |
{Вход в цикл по выполнению условия} |
Begin |
|
S := S + I * I; |
|
I := I + 1 |
{Самостоятельное изменение параметра I} |
End; |
|
Writeln (S) |
|
End. |
|
|
|
Аналогичные программы, но реализованные с использованием оператора For и оператора Repeat...Until, приведены в примерах 7.12, 7.13, 7.15.
7.3.4. Операторы Continue и Leave
Данные операторы предназначены для гибкого управления операторами циклов For, While, Repeat.
Оператор Continue осуществляет передачу управления на конец тела цикла.
Формат оператора Continue представляет рисунок 7.10.
158
<Оператор_Continue> ::=
Continue
Рисунок 7.10 – Синтаксическая диаграмма оператора Continue
Данный оператор используется, если при некоторых условиях тело цикла или его часть выполнять не нужно. Осуществляет переход на конец тела цикла, после чего выполняется анализ условия дальнейшего выполнения цикла.
Пример 7.18.
Фрагмент программы, использующей оператор Continue.
--------------------------
For I := 1 To N Do Begin
<Операторы>; If X > 0 Then
Continue Else
<Оператор>; <Операторы>
End;
--------------------------
По этой ветви осуществляется выход на конец тела цикла, затем изменяется значение параметра цикла I и выполнение тела цикла при следующем значении данного параметра.
Оператор Break служит для безусловного выхода из операторов For, Repeat и While.
Формат оператора Break иллюстрирует рисунок 7.11.
159
<Оператор_ Break > ::=
Break
Рисунок 7.11 – Синтаксическая диаграмма оператора Break
Если в примере 7.18 вместо оператора Continue записать оператор Break, то по отмеченной ветви осуществится выход из цикла: цикл при следующих значениях параметра выполняться не будет, осуществляется передача управления оператору, следующему за оператором цикла.
Использование операторов Continue и Break позволяет практически во всех программах обходиться без оператора безусловного перехода Goto.
160