
- •Утверждаю Зам.Директора по учебной работе
- •Основы Алгоритмизации и программирования учебно-методическое пособие
- •220301 Автоматизированные системы обработки информации и правления
- •Введение
- •Основные этапы решения задач на эвм
- •Глава 1 способы записи алгоритма
- •1.1 Алгоритм и его свойства
- •Схемы алгоритма
- •1.2 Структуры алгоритмов
- •1.2.1 Алгоритм линейной структуры
- •1.2.2 Алгоритм разветвляющейся структуры
- •1.2.3 Алгоритм циклической структуры
- •1.2.4 Алгоритм со структурой итерационных циклов
- •1.2.5 Алгоритм со структурой вложенных циклов
- •Глава 2 программа на языке высокого уровня
- •2.1 Системы программирования
- •2.2 Характеристика языка программирования Паскаль
- •2.3 Алфавит и структура программы на Паскале Алфавит программы
- •Структура программы
- •Глава 3 Стандартные типы данных
- •3.1 Данные. Типы
- •3.2 Вещественные типы
- •3.3 Целочисленные типы
- •3.4 Символьный тип
- •3.5 Логический тип
- •4 Представление основных структур программирования: итерация, ветвление, повторение
- •4.1 Линейная структура (следование)
- •Var X,y,f: real;
- •4.2 Разветвляющая структура (ветвление)
- •4.3 Циклическая структура (повторение)
- •4.3.1 Оператор цикла с параметром
- •I : Integrer; {номер числа }
- •4.3.2 Оператор цикла с постусловием
- •I,n: integer;
- •4.3.3 Оператор цикла с предусловием
- •4.3.4 Итерационные циклы
- •Var r,a:real;
- •Приближенное вычисление функций
- •Решение уравнений приближенными методами
- •Метод деления отрезка пополам
- •Xsl, Xpr, a, b, e, y1, y2, Lev, Prav, y: Real;
- •Метод Ньютона
- •Метод прохождения отрезка с переменным шагом
- •Вычисление определенных интегралов
- •1. Метод прямоугольников
- •X: Real;
- •2. Метод трапеций
- •X: Real;
- •Глава 5 Типы данных, определяемые пользователем
- •5.1 Пользовательский тип данных
- •5.1.1 Типизированные константы
- •5.1.2 Перечисляемый тип
- •I:1..6; loto: num;
- •5.2 Массивы
- •I : integer;
- •5.2.1. Работа с одномерными массивами
- •I,sum : integer;
- •Var a: array [1..N] of real;
- •Var I,s,r: integer;
- •I : list;
- •I : integer;
- •X : mass;
- •I, j, p, n, m, k:integer;
- •I, j, k, nd : integer;
- •Xmin : real;
- •X : mass;
- •Var I, j, nd : integer;
- •X : mass;
- •5.2.2 Работа с двумерными массивами( матицы)
- •Var I,j,n : integer;
- •I,j,n,m : integer;
- •5.2.3 Сортировка массивов
- •Сортировка методом "пузырька"
- •X : Array [1..Nmax] Of Real;
- •X : Array [1..Nmax] Of Real;
- •Сортировка выбором
- •Обменная сортировка
- •Var m:array[1..1000] of integer;
- •I,z,n:integer; Key:byte;
- •Сортировка слиянием
- •Var { Описание массивов и переменных}
- •X, y: array[1..1000] of integer;
- •5.3 Строковые типы
- •Var s: string[10];
- •5.3.1 Операции над строками
- •5.3.2 Стандартные процедуры и функции для строк
- •Функция Length
- •Функция Upcase
- •Функция Copy
- •Функция Роs
- •I, n, p: integer;
- •I: integer;
- •I: integer;
- •Insert (word2, text, I);
- •Insert (chr (k-32), t, I);
- •Insert (chr (k-80), t, I);
- •Insert (‘е’, t, I);
- •Глава 6 Процедуры и функции
- •6.1 Процедуры
- •I : Integer;
- •I, n: integer;
- •Input _ mas (k, n);
- •I,n : Integer;
- •I,k : Integer;
- •6.2 Функции
- •I:Integer;
- •2) Массивы;
- •I,n : Integer;
- •I : Integer;
- •I,tn,tk:Real;
- •Глава 7 Программирование рекурсивных алгоритмов
- •7.1 Понятие рекурсии
- •7.2 Техника построения рекурсивных алгоритмов
- •7.3 Формы рекурсий
- •If Prim(I) then
- •7.4 Рекурсия и итерация
- •7.5 Программирование с использованием рекурсии
- •Var p: Integer;
- •Var X, y: Integer; begin
- •Var z: Real; begin
- •Var I:integer; j:real;
- •Глава 8 Файлы
- •8.1 Текстовые файлы
- •I,n : Integer; {Вспомогательные переменные}
- •8.2 Типизированные файлы
- •X,m,s : Real;
- •8.3 Нетипизированные файлы
- •Глава 9 Записи
- •9.1 Описание записи
- •I: integer;
- •9.2 Оператор присоединения
- •I, j, k, m : integer;
- •X: real;
- •9.3 Вложенные записи
- •9.4 Записи с вариантами
- •Information: record
- •I, k, n : integer;
- •Vedom : Array [1..Nmax] Of Stud;
- •I,j : Integer;
- •Vedom : File Of Stud;
- •Vedom : File Of Stud;
- •I,j,kdv,k2 : Integer;
- •If Not Eof (Ftel) Then
- •If Not Eof(Ftel) then
- •If Not Eof(FilComp) then
- •Глава 10 Динамические структуры данных
- •10.1 Распределение памяти при выполнении программ
- •Верхняя граница памяти ms-dos
- •10.2 Ссылочные переменные
- •10.3 Процедуры управления кучей
- •10.4 Использование переменных ссылочного типа
- •I: Integer;
- •I, k : Integer;
- •Val(b, k, code);{Превратили второй символ в ч исло}
- •10.5 Списки
- •Var Ch : Char;
- •Var Ch : Char;
- •10.6 Деревья
- •10.7 Константы ссылочного типа
- •Глава 11. Язык Паскаль. Графический модуль Graph Список используемой литературы Основная
- •Дополнительная
Структура программы
Программы, написанные на языке программирования Турбо Паскале, строятся в соответствии с правилами, представляющими собой несколько расширенные и "ослабленные" правила синтаксиса стандартного Паскаля. Язык Паскаль является языком строгой спецификации данных, поэтому в разделе определения данных должны быть описаны все используемые в программе метки, установлены значения констант, описаны имена новых типов данных, описаны переменные и определены пользовательские процедуры и функции.
Программа на языке ПАСКАЛЬ состоит из заголовка, разделов описаний и раздела операторов.
{ Раздел описания данных}
Label ...; {раздел определения меток}
Const ...; {раздел определения констант}
Type ...; {раздел определения новых типов}
Var ...; {раздел определения переменных}
function ...; {раздел определения программных
procedure ...; единиц}
{ Раздел опрераторов}
Begin
...
end.
Заголовок программы содержит имя программы, например:
Program PRIM;
Слово PROGRAM зарезервировано в Паскале и означает начало программы. Далее записывается имя программы (в приведенном примере - PRIM). В Турбо Паскале можно опускать объявление имени оператором PROGRAM без каких-либо последствий для программы.
В разделе объявлений и описаний программы сообщает компилятору, какими идентификаторами он обозначает данные, а также определяет собственные типы данных, которые он в дальнейшем намеревается использовать в данной программе. Турбо Паскале есть возможность подключать используемые в программе объекты, описанные в другом месте. Описания могут включать в себя раздел подключаемых библиотек (модулей), раздел описания меток, раздел описания констант, раздел описания типов, раздел описания переменных, раздел описания процедур и функций.
Раздел описания модулей определяется служебным словом USES и содержит имена подключаемых модулей (библиотек) как входящих в состав системы TURBO PASCAL, так и написанных пользователем. Раздел описания модулей должен быть первым среди разделов описаний. Имена модулей отделяются друг от друга запятыми:
uses CRT, Graph;
Любой оператор в программе может быть помечен меткой. В качестве метки используются произвольные целые без знака, содержащие не более четырех цифр, либо имена. Метка ставится перед оператором и отделяется от него двоеточием. Все метки, используемые в программе, должны быть перечислены в разделе описания меток, например:
label 3, 471, 29, Quit;
Описание констант позволяет использовать имена как синонимы констант, их необходимо определить в разделе описаний констант:
const K= 1024; MAX= 16384;
В разделе описания переменных необходимо определить тип всех переменных, используемых в программе:
var P,Q,R: Integer;
A,B: Char;
F1,F2: Boolean;
"Процедура" и "функция" - термины, применяемые в Паскале для обозначения специальным образом оформленной последовательности команд (подпрограммы). Доступ к такой подпрограмме можем быть осуществлен из любого места основного блока программы, а также из любой процедуры или Функции, описание которых следует ниже. В разделе описаний содержится описание процедур и функций в виде текста процедур и функций, который строится по правилам аналогичным правилам построения программы.
Отдельные разделы описаний могут отсутствовать, но следует помнить, что в ПАСКАЛЬ - программе должны быть обязательно описаны все компоненты программы.
Раздел операторов или основной блок программы состоит из последовательности операторов, причем работа программы начинается именно с первого оператора основного блока программы. Тело основного блока программы ограничено словами BEGIN и END. Операторы отделяются друг от друга символом ;.
Необходимо обратить внимание на наличие точки после служебного слова END. После последнего оператора END всегда славится точка, тем самым компилятор получает информацию об окончании текста программы.
Текст программы заканчивается символом точка.
Кроме описаний и операторов ПАСКАЛЬ - программа может содержать комментарии, которые представляют собой произвольную последовательность символов, расположенную между открывающей скобкой комментариев { и закрывающей скобкой комментариев }.
Текст ПАСКАЛЬ - программы может содержать ключи компиляции, которые позволяют управлять режимом компиляции. Синтаксически ключи компиляции записываются как комментарии. Ключ компиляции содержит символ $ и букву-ключ с последующим знаком + (включить режим) или - (выключить режим). Например:
{$E+} - эмулировать математический сопроцессор;
{$F+} - формировать дальний тип вызова процедур и функций;
{$N+} - использовать математический сопроцессор;
{$R+} - проверять выход за границы диапазонов.
Некоторые ключи компиляции могут содержать параметр, например:
{$I имя файла} - включить в текст компилируемой программы названный файл.
Пример записи программы:
PROGRAM Имя;
{ Программа суммирования двух введенных целых чисел}
VAR
Number J, Number 2, Sum: INTEGER; {Описание данных}
B
EGIN
{
Начало обработки
}
Write (' Введите первое число: );
ReadLn (Number_1);
W
{Операторы}
ReadLn (Number_2);
Sum := Number_1 + Number 2,
WriteLn (' Сумма введенных чисел равна: '.Sum);
END. { Конец текста программы}
Строки программы обычно выделяют некоторые смысловые фрагменты текста и могут не связываться с конкретными действиями в программе. Программа записывается в свободной форме, операторы не привязаны к определенной позиции строки в отличие от других языков программирования. Расположение текста программы по строкам - дело вкуса программиста, а не требование синтаксиса языка. В то же время рекомендуется программу записывать в такой внешней форме, чтобы ее можно было легко читать, и понимать. Для этого широко используются пробелы, пустые строки и комментарии. Рекомендуется смысловые части выделять одинаковыми отступами от начала строки.
Пробел в Паскале используется как разделитель отдельных конструкций языка, следовательно необходимо внимательно следить за его присутствием в качестве разделителя
Соответствующие строчные и прописные буквы являются эквивалентными, если только это не связано с текстовыми константами.
Разделитель отмечает конец оператора или описания. Использование особого разделителя позволяет располагать несколько операторов на одной строке.
После заголовка программы следует текст, заключенный в фигурные скобки. Это комментарий. Комментарий - выделенная фигурными скобками информация для пояснения, которая не исполняется программой. Кроме фигурных скобок {}, могут использоваться также пары символов (* и *) слева и справа от комментария соответственно.
В нашем примере в разделе описаний объявлены три перемонные Number_1, Number 2, Sum как переменные целого типа. Имена переменных записаны через запятую, а перед служебным словом INTEGER стоит двоеточие.
Зарезервированное слово BEGIN в следующей строке сигнализирует компилятору о начале другой части программы- раздела операторов. Write, WriteLn, ReadLn служат для вывода и ввода информации и являются стандартными процедурами. В Турбо Паскале есть возможность использования некоторых стандартных процедур без предваряющего описания этих процедур (общее правило гласит: все процедуры должны быть описаны). По своей сути оператор
Write ('Введите первое число:'),
является оператором обращения к встроенной процедуре вывода данных. Свое название она получила от write - записать, a writeln - записать строку.
Процедура write осуществляет вывод объектов перечисленных в скобках через запятую. В данном случае выводится текстовая константа 'Введите первое число:'.
ReadLn (Number_1); - стандартная процедура ввода численного значения переменной с именем Number 1. При выполнении программы машина предоставит возможность ввести с клавиатуры численное значение этой переменной. Два следующих оператора аналогичны.
Оператор Sum := Number_1 + Number_2;
- оператор присваивания, один из основных операторов языков программирования. В его левой части указывается имя переменной, правая часть представляет собой выражение того же типа, что и переменная. Выполняется оператор так: вычисляется численное значение выражения в правой части и результат записывается в переменную слева. Другими словами, оператор присваивания - вычислитель. Переменная Sum принимает значение суммы двух переменных Number_1 и Number 2.
WriteLn (' Сумма введенных чисел равна: \Sum):
Выводит два объекта – текстовую константу и переменную. Оператор Write выводит строку на экран и оставляет курсор в конце только что выведенной строки. Оператор WriteLn после вывода устанавливает курсор в начало следующей строки.
Для написания наглядных и легко читаемых программ необходимо выполнять следующие рекомендации:
Стандартизация стиля программирования. Если существует более одного способа реализации программы, то необходимо остановиться на каком-то одном способе (лучше всего общепринятом) и всегда его придерживаться. Это позволит избежать ошибок и путаницы.
Размещение текста программы. Не следует операторы программы писать сплошным текстом. Программу необходимо размещать структурировано:
конструкции языка (описания, операторы, блоки) более глубоких уровней сдвигать от начала строки вправо;
конструкции языка одинаковых уровней располагать друг под другом;
каждое описание и каждый оператор писать с новой строки;
продолжение описаний и операторов в следующих строках сдвигать вправо относительно начала;
избегать слишком длинных строк.