SlideShare una empresa de Scribd logo
1 de 43
Descargar para leer sin conexión
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
Федеральное государственное автономное образовательное учреждение
высшего профессионального образования
«Северный (Арктический) федеральный университет
имени М.В. Ломоносова»
Институт Энергетики и транспорта
Методическое пособие по дисциплине «Информатика»
часть 1 Программирование на языке PASCAL
Архангельск 2014
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
2
Рассмотрена и рекомендована к изданию кафедрой Транспортно-технологических
машин, оборудования и логистики 6 ноября 2014 г.
Составители:
А.В. Сысоева, ассистент;
Т.Е. Цехмистрова, ассистент;
М.В. Меньшиков, ассистент
Д.В. Лебедев, ассистент
М.В. Витязев, старший преподаватель.
Ю.М. Лукин, старший преподаватель
В.Е. Шехурин, старший преподаватель
Рецензент
М.Ю. Марушкей, доцент, кандидат технических наук
УДК 004
Методическое пособие по дисциплине «Информатика», часть 1
Программирование на языке PASCAL/ составители: А.В. Сысоева, Т.Е.
Цехмистрова, М.В. Меньшиков, Д.В. Лебедев, М.В. Витязев, Ю.М. Лукин, В.Е.
Шехурин.
Подготовлено кафедрой транспортно-технологических машин, оборудования
и логистики института энергетики и транспорта
В методическом пособии приведена необходимая информация для
самостоятельной подготовке к практическим занятиям по программированию на
языке программирования PASCAL. Дано описание основных элементов языка и
основных операторов.
Предназначены для студентов направления подготовки бакалавров
Библиогр. 4
© Северный (Арктический)
федеральный университет
имени М.В. Ломоносова,
2014
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
3
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
4
ВВЕДЕНИЕ.
Паскаль (англ. Pascal) — язык программирования общего назначения. Был
создан Николаусом Виртом в 1970. Язык назван в честь французского математика,
физика, литератора и философа Блеза Паскаля, который создал первую в мире
механическую машину, складывающую два числа. Первая публикация Вирта о
языке датирована 1970 годом, представляя язык, автор указывал в качестве цели
его создания — построение небольшого и эффективного языка, способствующего
хорошему стилю программирования, использующему структурное
программирование и структурированные данные.
Новый язык оказался настолько удачным, что быстро завоевал
популярность. Его популярность выросла в связи с массовым распространением
персональных компьютеров и выпуском в середине 80-х годов прошлого века
фирмой Borland среды разработки Turbo Pascal. С тех пор Pascal - классический
язык программирования.
Важным шагом в развитии языка является появление свободных реализаций
языка Паскаль Free Pascal и GNU Pascal, которые не только вобрали в себя черты
множества других диалектов языка, но и обеспечили чрезвычайно широкую
переносимость написанных на нѐм программ (например GNU Pascal поддерживает
более 20 различных платформ, под более чем 10 различными операционными
системами, Free Pascal обеспечивает специальные режимы совместимости с
различными распространѐнными диалектами языка, такими как Turbo Pascal
(полная совместимость), Delphi и другими). Данной методическое пособие
предназначено для получения основных навыков работы с языком
программирования ПАСКАЛЬ
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
5
Запуск системы Турбо Паскаль
Система Турбо Паскаль довольно значительна по объему. При
развертывании системы на жестком диске обычно создается каталог с именем ТР
(или PAS, TURBOPAS, PASCAL и т.п.), в который помещаются все файлы,
которые были установлены. Для вызова Турбо Паскаля необходимо запустить
файл TURBO.EXE. Этот файл содержит готовую к работе диалоговую систему
программирования Турбо Паскаль. В него входят минимально необходимые части
Турбо Паскаля (текстовый редактор, компилятор, компоновщик, загрузчик). Для
нормальной работы в диалоговой среде понадобятся также основная библиотека,
располагающаяся в файле, и справочная служба. В принципе, этих файлов
достаточно для написания, компиляции и выполнения лабораторных работ в
Турбо Паскаль.
После успешного вызова системы экран ПК приобретает вид, показанный на
рисунке 1.
Рисунок 1 – Внешний вид рабочего окна Турбо Паскаль
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
6
Основные клавиши и функции
Верхняя строка содержит «меню» возможных режимов работы Турбо
Паскаля, нижняя - краткую справку о назначении основных функциональных
клавиш. Вся остальная часть экрана принадлежит окну редактора, очерченному
двойной рамкой и предназначенному для ввода и коррекции текстов программ. В
его верхней строке приводятся имя того файла, откуда был прочитан текст
программы (новому файлу присваивается имя NONAME00.PAS), два специальных
поля, используемых при работе с устройством ввода «мышь» (эти поля выделены
квадратными скобками), и цифра 1 - номер окна. В Турбо Паскале можно работать
одновременно с несколькими программами (или частями одной крупной
программы), каждая из которых может располагаться в отдельном окне редактора.
Функциональные клавиши используются для управления средой Турбо
Паскаля. Они обозначаются F1, F2, ..., F12 и располагаются в самом верхнем ряду
клавиатуры. С каждой из этих клавиш связывается некоторая команда меню.
Действие почти всех функциональных клавиш можно модифицировать тремя
особыми клавишами: Alt, Ctrl и Shift. В дальнейшем такое совместное нажатие
двух клавиш будем обозначать чертой. Например, Alt-F3 означает, что вместе с
клавишей Alt необходимо нажать клавишу F3, Ctrl-F9 - вместе с Ctrl нажимается
F9 и т.д.
Ниже приводятся команды, которые передаются среде Турбо Паскаля
функциональными клавишами и некоторыми их комбинациями с клавишами Ctrl и
Alt:
Fl - обратиться за справкой к встроенной справочной службе (Help-помощь);
F2 - записать редактируемый текст в дисковый файл;
F3 - прочитать текст из дискового файла в окно редактора;
F4 - используется в отладочном режиме: начать или продолжить исполнение
программы и остановиться перед исполнением той ее строки, на которой стоит
курсор;
F5 - открыть активное окно на весь экран;
F6 - сделать активным следующее окно;
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
7
F7 - используется в отладочном режиме: выполнить следующую строку
программы; если в строке есть обращение к процедуре (функции), войти в эту
процедуру и остановиться перед исполнением первого ее оператора;
F8- используется в отладочном режиме: выполнить следующую строку
программы; если в строке есть обращение к процедуре (функции), исполнить ее и
не прослеживать ее работу;
F9 - компилировать программу, но не выполнять ее;
F10 - перейти к диалоговому выбору режима работы с помощью главного
меню;
Ctrl-F9 - выполнить прогон программы: компилировать программу,
находящуюся в редакторе, загрузить ее в оперативную память и выполнить, после
чего вернуться в среду Турбо Паскаля.
Alt-F5 - сменить окно редактора на окно вывода результатов работы
(прогона) программы.
Чаще всего, Вам понадобятся команды Ctrl-F9 для проверки работы Вашей
программы и Alt-X - для выхода из Турбо Паскаля. Клавиши F2 и F3 помогут Вам
в работе с Вашим каталогом. Командой Alt-F5 Вы в любой момент сможете
просмотреть данные, выданные на экран в результате прогона программы.
Сохранение программы
Основной формой хранения текстов программ вне среды являются файлы.
После завершения работы с Турбо Паскалем можно сохранить текст новой
программы для того, чтобы использовать его в следующий раз. Для обмена
данными между файлами и редактором среды предназначены клавиши F2 (запись
в файл) и F3 (чтение из файла). Если Вы создаете новую программу, то среда еще
не знает имя того файла, в который Вы захотите поместить текст этой программы,
и поэтому она присваивает ей стандартное имя NONAME00.PAS (NO NAME - нет
имени). Для сохранения текста программы в файле нужно нажать F2. Пройдя по
команде File – Save as (Сохранить в файле с именем...) - название программы
(должно состоять из 8 латинских символов или цифр) – ОК (Рисунок 2).
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
8
Рисунок 2 – Сохранение программы
Если в имени опущено расширение, среда присвоит файлу стандартное
расширение PAS. Если Вы захотите завершить работу с Турбо Паскалем, а в
редакторе остался не сохраненный в файле текст, на экране появится окно с
запросом.
Построение блок-схемы алгоритма
Для того, чтобы правильно написать программу в Турбо Паскаль,
необходимо создать блок-схему алгоритма будущей программы. Элементы блок-
схемы приведены на рисунке 3, их нужно запомнить. По созданной блок-схеме вам
не составит труда написать код программы.
Рассмотрим построение блок-схеме на примере простого линейного
алгоритма.
Пример: Вычислить периметр прямоугольника (Р), если его стороны
соответственно равны: а=2, в=4 с помощью Турбо Паскаль.
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
9
Рисунок 3 Элементы блок-схемы алгоритма программы
Для построения блок-схемы удобно будет представить алгоритм
выполнения:
1) Начало программы.
2) Переменные, которые будут использоваться для вычисления
периметра прямоугольника (а,в,Р).
3) Формула для вычисления периметра прямоугольника Р=2(а+в).
4) Вывод решения на экран.
5) Конец программы.
Блок-схема алгоритма представлена на рисунке 4:
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
10
Рисунок 4 Блок-схема алгоритма
Опираясь на данную блок-схему, можно написать код программы. Для того
чтобы правильно составить программу познакомимся с основными операциями и
функциями в Турбо Паскаль.
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
11
Написание конструкций языка
Написание конструкций языка осуществляется в соответствии с
синтаксисом и использованием принятого алфавита, который включает в себя
буквы, цифры и специальные символы.
1. Буквы латинского алфавита
2. Цифры арабские
3. Знаки :=, +, -, *, /, <, >, <=, >=,<>
4. Ключевые слова (служебные)
Ключевые слова (служебные), которые будут необходимы в ходе написания
программы:
PROGRAM –программа
BEGIN – начало программы
VAR – описание блока переменных
WRITE, WRITELN – обеспечивает вывод информации в текстовый файл или
передачу ее на логическое устройств
READ, READLN - обеспечивает ввод символов, строк и чисел
END – завершение программы.
Слова Program, begin и end выделяют две части программы - раздел
описаний и раздел операторов. Такая структура обязательна для любой
программы, что является следствием жесткого требования языка: любой
нестандартный идентификатор, используемый в исполняемых операторах, должен
быть предварительно описан в разделе описаний.
В рассматриваемых далее программах понадобятся следующие типы
данных:
• INTEGER - целочисленные данные, во внутреннем представлении
занимают 2 байта; диапазон возможных значений - от -32768 до +32767; данные
представляются точно;
• REAL - вещественные данные, занимают 6 байт; диапазон возможных
значений модуля - от 2.9Е-39 до 1.7Е+38; точность представления данных - 11...12
значащих цифр;
• CHAR - символ, занимает 1 байт;
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
12
• STRING - строка символов, занимает МАХ+1 байт, где МАХ -
максимальное число символов в строке;
• BOOLEAN - логический тип, занимает 1 байт и имеет два значения:
FALSE (ложь) и TRUE (истина).
Для вычисления отношения введенных чисел используется один из
основных операторов Турбо Паскаля - оператор присваивания. В его левой части
указывается имя переменной, правая часть представляет собой выражение того же
типа, что и переменная. Пара символов «: =», связывающая левую и правую части
оператора присваивания, означает «присвоить значение». Запомним: в операторах
присваивания Турбо Паскаля всегда используются символы «: =», в то время как
при описании констант -одиночный символ «=». Пример блок-схемы программы с
описанием операторов приведен на рисунке 5
Рисунок 5 – Блок-схема алгоритма и описание функций языка Паскаль.
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
13
Теперь напишем код программы в Паскале. Пример на рисунке 6.
Рисунок 6 – Пример написания программы
После написания кода программы сохраняем ее и проверяем на ошибки
(Рисунок 7).
Рисунок 7 Проверка и компиляция программы в машинные коды
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
14
Если при написании кода нет ошибок, то появится следующий экран
(рисунок 8)
Рисунок 8 Успешное завершение компиляции программы
Данное окно позволяет запустить программу и вычислить периметр
искомого прямоугольника (рисунок 9). Запускаем программу:
Рисунок 9 Окно запуска программы.
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
15
Вводим значения сторон прямоугольника и получаем искомый периметр
(рисунок 10).
Рисунок 10 Вывод результатов расчета на экран
Написание программ с использованием разветвляющихся и циклических
алгоритмов
Для решения таких алгоритмов используются определенные операторы:
- оператор безусловного перехода Go to;
- составной оператор;
-условный оператор If;
- условный оператор Case;
- оператор цикла For;
- оператор цикла While;
- оператор цикла Repeat.
Оператор Go to применяется в случаях, когда после выполнения некоторого
оператора следует выполнить не следующий по порядку, а какой – либо другой,
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
16
отмеченный меткой оператор. Метка может содержать как цифровые, так и
буквенные символы.
Оператор If
Оператор If изменяет порядок выполнения операторов в зависимости от
истинности или ложности некоторого условия. Существует два варианта
оператора:
1. If <условие> Then <оператор 1> Else <оператор 2>
2. If <условие> Then <оператор>
Условие может быть простым или сложным. Сложные условия образуются с
помощью логических операций AND, OR, NOT. При записи условий могут
использоваться все возможные операции отношения. Результат выражения всегда
имеет булевский тип (истина или ложь).
В первом варианте, если условие принимает значение "Истина",
выполняется оператор 1, если условие - "Ложь", выполняется оператор 2.
Пример: Создать разветвляющийся алгоритм линейной структуры.
Исходные данные:
Начнем с построения блок-схемы алгоритма (рисунок 11).
После того, как мы построили блок-схему алгоритма, строго следуя ей,
пишем код программы в Turbo Pascal.
Начало программы будет таким же, как и в написании линейного алгоритма,
изменится только блок описания условия:
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
17
Рисунок 11 Блок-схема программы с оператором условного перехода
…
If x<=0 then
begin y1:=sin(1.5*x+a);
Writeln (‗y1=‘, y1:6:2);
End
else then
begin y2:=EXP(-(SQR(x)-a));
Writeln (‗y2=‘, y2:6:2);
End
…
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
18
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
19
Оператор цикла For
Оператор цикла For подходит для решения задач с известным числом
повторений. Рассмотрим пример, в ходе которого мы и познакомимся с этим
оператором.
Пример: Создать циклический алгоритм, вычислить сумму 10 членов ряда.
Блок-схема алгоритма представлена на рисунке 12:
Рисунок 12 Блок-схема программы с использованием оператора For
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
20
Код программы будет выглядеть следующим образом:
Var i,Kn: Integer;
y1,y,UN:real;
Begin
Writeln (‗введите значения Kn‘);
Readln (Kn);
y:=0; - первоначально значение функции у
For i:=1 to kn do - параметр цикла от 1 до 10
Begin UN:=1/SQR(i); - определение значения i–того члена ряда
y:=y+UN; - к первоначальному значению прибавляется
значение i–того члена ряда пока не будет
выполнен цикл.
END;
Y1:=3*(SQRT(y)); - расчет значения итоговой функции
Writeln (‘Y1=’,Y1:6:2); - вывод результата
End.
Оператор цикла While и Repeat
Оператор цикла While и Repeat для решения задач с неизвестным числом
повторений, также важно запомнить, что оператор цикла While (до тех пор пока), а
оператор цикла Repeat (после того как).
Для заданий, когда число повторений цикла заранее неизвестно и действия,
предусмотренные в цикле, могут вообще не выполняться и служит оператор цикла
с предусловием.
Разберем на примере:
Вычислить с точностью е=0,001 значение функции. Суммирование
закончить при выполнении условия ,
|Un |≤e
где Un – общий член ряда;
n – номер члена ряда, n=1,2,3…n.
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
21
Блок-схема программы представлена на рисунке 13
Рисунок 13 Блок-схема программы с использованием оператора While
В блоке описания переменных необходимо указать все переменные, которые
будут использоваться в написании программы, для того, чтобы избежать ошибок
во время компиляции.
При выполнении этого оператора цикла последовательность операторов,
находящихся между словами Repeat и until, выполнится один и более раз. Этот
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
22
процесс завершается, когда после очередного выполнения заданной
последовательности операторов логическое выражение примет значение True.
Блок-схема программы с использованием оператора Repeat представлена на
рисунке 14
Рисунок 14 Блок-схема программы с использованием оператора Repeat
Табулирование функций
Вычисление значений функции при изменении аргумента от некоторого
начального значения до некоторого конечного значения с определенным шагом
это и есть табулирование. Говоря простым языком, вычисление значения функции
от изменяющегося алгоритма с известным шагом. Решением будет таблица
значений аргумента и функции, которая появится на экране после прохождения
компиляции.
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
23
Основные моменты:
В блоке переменных прописываем аргумент (х), величину шага (dx) и
количество повторений (kn).
В блоке ввода данных нарисуем шапку будущей таблицы (см. пример)
После введения вычисляемой функции не забудьте о приращения шага.
Пример:
…
Writeln (― ―);
Readln ();
Writeln (―_____________________‖);
Writeln (―| x | y |‖); построение таблицы
Writeln (―_____________________‖);
…
х:=x+dx; приращение функции
Далее в решении задач для самостоятельного решения необходимо
воспользоваться примером, все остальные части программы уже знакомы Вам из
предыдущих работ .
Массивы
Одномерные массивы.
Необходимость в массивах возникает всякий раз, когда при решении задачи
приходится иметь дело с большим, но конечным количеством однотипных
упорядоченных данных.
Массив – это упорядоченный набор фиксированного количества некоторых
значений.
Формат описания массива
<имя массива>:array [<количество>] of <тип компонента>
<имя массива> - идентификатор массива
Array – массив
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
24
<количество> - количество элементов в массиве
Of - для
<тип переменных> - описание типа переменных в массиве.
Примеры:
Описание массива состоящего из 100 элементов:
A:array [1..100] of real;
Описание массива по годам 1901-2000:
Vek: array [1901..2000] of integer.
Для использования случайных чисел в Турбо Паскале используются
операторы random:real - генерирует случайные числа в диапазоне 0...0.99.
random(i:word):word - генерирует случайные числа в диапазоне 0...1.
randomize - изменение базы генератора случайных чисел.
Переменные:
А- массив, тип integer;
I- параметр цикла, тип integer;
kn – размер массива, тип integer;
Рассмотрим пример с использованием базы генератора случайных чисел:
Вывести 15 значений элементов массива с помощью генератора случайных
чисел в диапазоне 0...50 и вывести в строку.
В данном примере будет использован генератор случайных чисел
Randomize, необходимо правильно разобраться в условия, для того, чтобы
ориентироваться в исходных данных и записать их в блок переменных.
Блок-схема алгоритма будет достаточно простая (рисунок 15):
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
25
Рисунок 15 Блок-схема алгоритма создания массива
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
26
Двумерные массивы
Двумерным массивом (матрица) называется совокупность данных. Внешний
вид двумерного массива представлен на рисунке 16. Каждый элемент
характеризуется его местоположением (номером строки и номером столбца
(рисунок 17)
Рисунок 16 Двумерный массив
Рисунок 17 Характеристика элементов двумерного массива
Описание двумерного массива представлено на рисунке 18
Рисунок 18 Описание двумерного массива
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
27
При написании программы существует несколько отличий, чем в написании
кода в одномерных массивов.
Var i, j, kn, km : integer;
a:array [1..10,1..10] of real;
begin
writeln (‗введите значения kn, km‘);
readln (kn, km);
for i:=1 to kn do
for j:=1 to km do begin
writeln (‗введите значения a[‗i,j,‘]=‘);
readln (a[i,j]);
end;
….
Так как, двумерный массив это матрица, то кроме переменных i, kn – строки
матрицы, необходимо прописать столбцы матрицы j, km. Описание массива в коде
массива будет таким же, как в примере, на рисунке №. Далее вводим количество
строк и столбцов, используя циклический алгоритм. Такой же алгоритм
необходимо прописать и для ввода элементов массива.
Далее написание кода производится в зависимости от поставленной задачи,
это может быть нахождения максимального и минимального значений,
вычисление среднего арифметического значения в строке или столбце матрицы.
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
28
Процедуры и функции
Алгоритм решения задачи проектируется путем разбиения всей задачи на
отдельные подзадачи. Обычно подзадачи реализуются в виде подпрограмм.
Подпрограмма - это отдельная функционально независимая часть
программы. Любая подпрограмма обладает той же структурой, которой обладает и
вся программа.
Подпрограммы решают три важные задачи:
1 избавляют от необходимости многократно повторять в тексте программы
аналогичные фрагменты;
2 улучшают структуру программы, облегчая ее понимание;
3 повышают устойчивость к ошибкам программирования и
непредвидимым последствиям при модификациях программы.
Вызов подпрограммы происходит при каждом употреблении ее имени в
основной (или вызывающей) программе. При вызове подпрограммы выполнение
основной программы приостанавливается, и управление передается в
подпрограмму, где выполняются команды, заданные в ней. Подпрограмма
завершается, если выполнены все ее процедуры до завершающего слова End или
по специальной команде выхода из подпрограммы Exit. По окончании работы
подпрограммы управление возвращается основной программе, иначе говоря, к
первой команде, следующей за обращением к этой подпрограмме.
В языке Pascal определяются два типа подпрограмм – процедуры (Procedure)
и функции (Function).
Любая программа может содержать несколько процедур и функций.
Структура любой подпрограммы аналогична структуре всей программы.
Подпрограмма должна быть описана до того, как будет использована в
программе или другой подпрограмме.
Процедуры и функции объявляются в разделе описания вслед за разделом
переменных.
Тогда общая структура программы выглядит так:
Рrogram hh;
Label; {описание меток}
Const; {описание констант}
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
29
Type; {описание типов}
Var; {описание переменных}
Procedure; {описание процедур}
Function; {описание функций}
Begin
. . .
. . .
end.
Выполнение программы начинается с операторов основной программы. При
необходимости вызывается подпрограмма и начинают действовать еѐ операторы.
Затем управление передаѐтся в основную программу, которая продолжает
выполняться.
Обращение к подпрограмме - переход к выполнению подпрограммы с
заданием информации, необходимой для ее выполнения и возврата.
Подпрограмма вызывается по своему имени с указанием необходимых
параметров.
ПРОЦЕДУРЫ
Структура процедуры имеет следующий вид:
Procedure <имя процедуры>{(формальные параметры : их тип)};
{Var
(локальные переменные)}
begin
. . .
end;
Процедура вызывается по имени:
<имя процедуры> {(фактические параметры)};
Процедура может быть с параметрами, а может быть без параметров.
Процедура-это поименованный составной оператор, где имя задается
служебным словом Procedure.
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
30
Связь процедуры другими операторами программы осуществляется через
переменные. Эти переменные используются как в программе, так и в процедуре, а
описаны в самой программе. Такие переменные называются глобальными.
Глобальными переменными называются переменные, которые описаны в
самой программе, а используются как в программе так и в процедуре (функции).
Глобальные переменные, которые не были инициализированы явным
образом, перед началом выполнения программы обнуляются. Время жизни
глобальных переменных - с начала программы и до ее завершения. Глобальные
переменные доступны в любом месте программы или подпрограммы, кроме тех
подпрограмм, в которых описаны локальные переменные с такими же именами.
Локальными переменными называются переменные, описанные внутри
процедуры (функции) и используемые только внутри процедуры (функции).
Формальными параметрами называются переменные описанные в заголовке
программы и используемые только внутри процедуры (функции).
Формальные параметры указывают, с какими параметрами следует
обращаться к этой процедуре (функции), т.е. их количество, последовательность,
тип. Они задаются в заголовке процедуры (функции) в виде списка параметров,
разбитого на группы (секции) однотипных параметров, разделенных ‗;‘. Порядок
следования групп (секций) произвольный.
Для каждого формального параметра следует указать имя и тип. Имена
параметров могут быть любыми, они могут совпадать с глобальными именами
программы. Необходимо лишь помнить, что в этом случае параметр основной
программы с таким именем становится недоступным для непосредственного
использования подпрограммой. Но формальные имена не могут совпадать с
локальными переменными, т.к. они располагаются в одном стековом сегменте
памяти. Тип формального параметра может быть практически любым, однако в
заголовке процедуры (функции) нельзя вводить новый тип.
Рассмотрим пример: необходимо создать 3 массива случайных чисел,
создать массив суммы всех элементов и организовать вывод всех массивов в виде
таблицы.
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
31
Если писать эту программу не используя процедуры, то код программы
будет выглядеть следующим образом (комментариями код не сопровождается,
потому что все элементы рассматривались ранее):
var a1: array [1..10] of integer;
a2: array [1..10] of integer;
a3: array [1..10] of integer;
Asum: array [1..10] of integer;
i: integer;
begin
for i:= 1 to 10 do begin
a1[i]:=random(10);
a2[i]:=random(10);
a3[i]:=random(10);
end;
writeln ('1 massiv');
writeln ('_____________________');
writeln ('| i | a[i] |');
for i:=0 to 9 do
writeln ('| ',i:3, ' | ', a1[i]:4, ' |');
writeln('______________________');
writeln ('2 massiv');
writeln ('_____________________');
writeln ('| i | a[i] |');
for i:=0 to 9 do
writeln ('| ',i:3, ' | ', a2[i]:4, ' |');
writeln('______________________');
writeln ('3 massiv');
writeln ('_____________________');
writeln ('| i | a[i] |');
for i:=0 to 9 do
writeln ('| ',i:3, ' | ', a3[i]:4, ' |');
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
32
writeln('______________________');
for i:= 1 to 10 do Asum[i]:=a1[i]+a2[i]+a3[i];
writeln('summarnii massiv');
writeln ('_____________________');
writeln ('| i | a[i] |');
for i:=0 to 9 do
writeln ('| ',i:3, ' | ', Asum[i]:4, ' |');
writeln('______________________');
readln();
end.
Код получился большим и громоздким, в придачу при выводе массивов в
виде таблицы, оформление придется корректировать в каждом массиве отдельно,
что приведет к большим временным затратам. Видно, что процесс вывод массива
повторяется для всех массивов. Введем процедуру, которая будет выводить массив
на экран в виде таблицы.
Блок-схема для этой программы приведена на рисунке 19.
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
33
Рисунок 19 Блок-схема программы с использованием процедуры
var a1: array [1..10] of integer;
a2: array [1..10] of integer;
a3: array [1..10] of integer;
Asum: array [1..10] of integer;
i: integer;
procedure print (var x: array of integer); {название процедуры и формальный
элемент, на который будет ссылаться основная программа}
var i:integer; {локальная переменная, которая используется только в
процедуре}
begin
writeln ('_____________________');
writeln ('| i | a[i] |');
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
34
for i:=0 to 9 do
writeln ('| ',i:3, ' | ', x[i]:4, ' |');
writeln('______________________');
end;
begin
for i:= 1 to 10 do begin
a1[i]:=random(10);
a2[i]:=random(10);
a3[i]:=random(10);
end;
writeln ('1 massiv'); print(a1); {вызов процедуры}
writeln ('2 massiv'); print(a2);
writeln ('3 massiv'); print(a3);
for i:= 1 to 10 do Asum[i]:=a1[i]+a2[i]+a3[i];
writeln('summarnii massiv'); print(Asum);
readln();
end.
Видно, что количество строк в коде уменьшилось, и правка кода стала
значительно легче. Теперь в основной программе можно создавать сколь угодно
много массивов целых чисел и каждый можно будет выводить на экран в виде
таблицы, используя лишь одну строчку кода.
ФУНКЦИИ
Иногда функций, которые заложены в среде Turbo Pascal не хватает для
выполнения сложных математических задач, в таких случаях можно написать
собственную функцию.
Функция, в отличии от процедуры, возвращает в вызывающую программу
значение, т.е. результат ее работы. Это значение можно:
• присвоить переменной
• использовать в выражении
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
35
• передать в качестве параметра в процедуру или функцию.
Из этого следуют отличия в структуре функции, т.е. надо знать тип
возвращаемого функцией результата и должен быть указан механизм возвращения
этого результата.
Структура функции имеет следующий вид:
Function <имя функции>{(формальные параметры : их тип)}: <тип
функции>;
{Var
(локальные переменные)}
begin
. . .
<имя функции>: =<выражение>
end;
где:
 тип функции – простой порядковый тип, исключение - тип string. Если тип
не стандартный, то его надо предварительно описать в разделе Type программы.
 <имя функции>: =<выражение> - оператор, который осуществляет механизм
возврата значения.
В остальном структура функции полностью повторяет структуру
процедуры. Она так же может быть с параметрами, а может быть без параметров.
Функция - это поименованный составной оператор, возвращающий
единственное значение, имя которой задается служебным словом Function.
Рассмотрим пример использования функции: посчитать сумму факториалов
чисел, введенных с клавиатуры. Из условия задачи видно, что целесообразно
написать функцию вычисления факториала числа.
Блок-схема алгоритма программы приведена на рисунке 20:
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
36
Рисунок 20 Блок-схема программы с использованием функции.
Код будет выглядеть следующим образом:
var a:array[1..100] of integer;
i,n:integer;
sum:longint;
function fact(x:integer):longint; {название процедуры, описание формальных
переменных и тип, который примет функция}
var i,f:integer; {описание локальных переменных}
begin
f:=1;
for i:=1 to x do
f:=f*i;
fact:=f; {присвоение значения, которое примет функция}
end;
begin
sum:=0;
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
37
writeln('Vvedite 4islo elementov');
readln(n);
for i:=1 to n do
begin writeln('vvedite ', i, '-oe 4islo');
readln(a[i]);
end;
for i :=1 to n do sum:=sum+fact(a[i]); {вызов функции из основной
программы}
write('factorial summi 4isel ');
for i := 1 to n do
write(a[i], ' ' );
writeln(' raven ', sum);
readln;
end.
Модуль CRT
В этом модуле сосредоточены процедуры и функции, обеспечивающие
управление текстовым режимом работы экрана. С помощью модуля, можно
перемещать курсор в произвольную позицию экрана, менять цвет выводимых
символов и окружающего фона, создавать окна.
Стандартные процедуры и функции управления текстовым экраном:
Процедура TEXTCOLOR(цвет)- устанавливает цвет для выводимых
символов.
Процедура TEXTBACKGROUND(цвет)- устанавливает цвет фона на
который выводятся символы.
Процедура GOTOXY(X,Y)- выводит курсор в требуемое положение на
экране
X – горизонтальная координата;
Y - вертикальная координата.
Процедура WINDOW(x1,y1,x2,y2) – устанавливает границы активного окна
для вывода данных.
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
38
x1,y1 – координаты верхнего левого угла окна;
x2,y2 - координаты нижнего правого угла окна.
Процедура CLRSCR – очищает экран или активное окно.
Пример:
Вывести 10 значений y=sin(x) начав с х=0 с шагом dx= 0.15 в таблице в
центре экрана.
Переменные:
y- функция тип real;
x – аргумент тип real;
dx – шаг аргумента тип real;
i,kn- параметры цикла тип integer.
Блок-схема программы представлена на рисунке 21
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
39
Рисунок 21 Блок-схема программы
Пишем код программы, используя блок-схему: пояснений мы решили
приводить не для каждой строки, т.к., в процессе изучения TP, вы уже усвоили
основные моменты в написании программного кода.
uses crt; используем модуль СRT
var x,dx,y:real; описываем переменные, которые будут использованы
i,kn:integer;
begin
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
40
clrscr; используем функцию для очистки экрана
writeln('vv.kn,x,dx');
readln(kn,x,dx);
gotoxy(33,6); используем эту процедуру для вывода курсора на экран в
центре
writeln('--------------');
gotoxy(33,7);
writeln('| x | y |');
gotoxy(33,8);
writeln('--------------');
for i:=1 to kn do
begin
y:=sin(x);
gotoxy(33,i+);writeln('|',x:4:2,'|',y:7:4,'|');
x:=x+dx; табулируем функцию
end;
gotoxy(33,i+);
writeln('--------------');
readln;
end.
Модуль GRAPH
Графические возможности языка Турбо-Паскаля реализованы с помощью
ряда графических подпрограмм (их более 50), содержащихся в модуле Graph
(файл GRAPH.TPU). Кроме того, существует ряд графических драйверов,
обеспечивающих работу программы с тем или иным видеоадаптером. Для
реализации графических драйверов (BGI-файлов) выделяется некоторый
небольшой набор базовых графических операций и именно эти операции
―привязываются‖ к конкретному драйверу устройства. Для каждого драйвера
обеспечивается стандартный интерфейс, а все остальные операции реализуются
библиотечными подпрограммами на основе набора базовых операций. Таким
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
41
образом удается обеспечить почти полную независимость программ от типа
установленного видеоадаптера.
Для работы в графическом режиме программа должна выполнить его
инициализацию. Инициализация графического режима выполняется с помощью
вызова библиотечной процедуры InitGraph(var GraphDriver, GraphMode :integer;
PathToDriver : string), которая отыскивает на диске указанный в вызове драйвер,
загружает его в память и подготавливает экран к работе в графическом режиме.
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
42
СПИСОК ЛИТЕРАТУРЫ
1 Free Pascal и Lazarus: Учебник по программированию: Алексеев Е. Р.,
Чеснокова О. В., Кучер Т. В.: [Текст]: ДМК-пресс, 2010, 442 с., ил
2 Зубок Д. А., Маятин А. В., Краснов С. В. Основы программирования в среде
TURBO PASCAL: Учебное пособие. - [Текст]: СПб.: СПбГУ ИТМО, 2009, 69
с., ил.
3 http://turbopascal.h18.ru/tp/Index.html
4 http://www.tp7.info/tp_ushitel.php
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
43
ОГЛАВЛЕНИЕ
Введение …………………………………………………………………………. 3
Запуск системы Турбо Паскаль ……………………………………………….. 4
Основные клавиши и функции …………………………………………………. 5
Сохранение программы …………………………………………………………. 6
Написание конструкций языка …………………………………………………. 10
Написание программ с использованием разветвляющихся и циклических
алгоритмов ……………………………………………………………………… 14
Табулирование функций…………………………………………………………. 21
Массивы ………………………………………………………………………….. 22
Процедуры и функции …………………………………………………………... 27
Модуль CRT …………………………………………………………………….. 36
Модуль GRAPH …………………………………………………………………………………………….. 39
СПИСОК ЛИТЕРАТУРЫ ……………………………………………………… 41
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Más contenido relacionado

Similar a 507.методическое пособие по дисциплине «информатика» ч1 программирование на языке pascal

эволюция языков программирования
эволюция языков программированияэволюция языков программирования
эволюция языков программированияAndrey Radionov
 
СЛОВАРЬ И СИНТАКСИС ЯЗЫКА ПАСКАЛЬ
СЛОВАРЬ И СИНТАКСИС ЯЗЫКА ПАСКАЛЬСЛОВАРЬ И СИНТАКСИС ЯЗЫКА ПАСКАЛЬ
СЛОВАРЬ И СИНТАКСИС ЯЗЫКА ПАСКАЛЬalinabacalim
 
4 4 pascal_urok_1
4 4 pascal_urok_14 4 pascal_urok_1
4 4 pascal_urok_1Ann Eres
 
4 4 pascal_urok_1
4 4 pascal_urok_14 4 pascal_urok_1
4 4 pascal_urok_1Ann Eres
 
Turbo pascal(miriyev tahir)
Turbo pascal(miriyev tahir)Turbo pascal(miriyev tahir)
Turbo pascal(miriyev tahir)Tahir07081996
 
Ayan9r1 po(1)
Ayan9r1 po(1)Ayan9r1 po(1)
Ayan9r1 po(1)Ayan_R
 
презентация языки программирования
презентация языки программированияпрезентация языки программирования
презентация языки программированияnhfkzkz
 
Afandiyeva kamala yazik programmirovaniya pascal
Afandiyeva kamala yazik programmirovaniya pascalAfandiyeva kamala yazik programmirovaniya pascal
Afandiyeva kamala yazik programmirovaniya pascalkamala_afandiyeva_zahs
 
Программирование
ПрограммированиеПрограммирование
Программированиеalecsa
 
C++ теория
C++ теорияC++ теория
C++ теорияtank1975
 
C++ теория
C++ теорияC++ теория
C++ теорияtank1975
 
C++ теория
C++ теорияC++ теория
C++ теорияtank1975
 
Технология OpenMP
Технология OpenMPТехнология OpenMP
Технология OpenMPTatyanazaxarova
 
Турбо Паскаль 7
Турбо Паскаль 7Турбо Паскаль 7
Турбо Паскаль 7Anna Chibisova
 
Its150 l2
Its150 l2Its150 l2
Its150 l2oz
 
НуП_Лекция 2. Управление программами.ppt
НуП_Лекция 2. Управление программами.pptНуП_Лекция 2. Управление программами.ppt
НуП_Лекция 2. Управление программами.pptdinarium2016
 
ITS150 ëåêö ¹2
ITS150 ëåêö ¹2ITS150 ëåêö ¹2
ITS150 ëåêö ¹2oz
 

Similar a 507.методическое пособие по дисциплине «информатика» ч1 программирование на языке pascal (20)

эволюция языков программирования
эволюция языков программированияэволюция языков программирования
эволюция языков программирования
 
СЛОВАРЬ И СИНТАКСИС ЯЗЫКА ПАСКАЛЬ
СЛОВАРЬ И СИНТАКСИС ЯЗЫКА ПАСКАЛЬСЛОВАРЬ И СИНТАКСИС ЯЗЫКА ПАСКАЛЬ
СЛОВАРЬ И СИНТАКСИС ЯЗЫКА ПАСКАЛЬ
 
4 4 pascal_urok_1
4 4 pascal_urok_14 4 pascal_urok_1
4 4 pascal_urok_1
 
4 4 pascal_urok_1
4 4 pascal_urok_14 4 pascal_urok_1
4 4 pascal_urok_1
 
Turbo pascal(miriyev tahir)
Turbo pascal(miriyev tahir)Turbo pascal(miriyev tahir)
Turbo pascal(miriyev tahir)
 
Ayan9r1 po(1)
Ayan9r1 po(1)Ayan9r1 po(1)
Ayan9r1 po(1)
 
презентация языки программирования
презентация языки программированияпрезентация языки программирования
презентация языки программирования
 
Afandiyeva kamala yazik programmirovaniya pascal
Afandiyeva kamala yazik programmirovaniya pascalAfandiyeva kamala yazik programmirovaniya pascal
Afandiyeva kamala yazik programmirovaniya pascal
 
Программирование
ПрограммированиеПрограммирование
Программирование
 
C++ теория
C++ теорияC++ теория
C++ теория
 
C++ теория
C++ теорияC++ теория
C++ теория
 
C++ теория
C++ теорияC++ теория
C++ теория
 
Технология OpenMP
Технология OpenMPТехнология OpenMP
Технология OpenMP
 
190
190190
190
 
Ashampoo office 2012
Ashampoo office 2012Ashampoo office 2012
Ashampoo office 2012
 
Турбо Паскаль 7
Турбо Паскаль 7Турбо Паскаль 7
Турбо Паскаль 7
 
Its150 l2
Its150 l2Its150 l2
Its150 l2
 
43828
4382843828
43828
 
НуП_Лекция 2. Управление программами.ppt
НуП_Лекция 2. Управление программами.pptНуП_Лекция 2. Управление программами.ppt
НуП_Лекция 2. Управление программами.ppt
 
ITS150 ëåêö ¹2
ITS150 ëåêö ¹2ITS150 ëåêö ¹2
ITS150 ëåêö ¹2
 

Más de ivanov15548 (20)

100206
100206100206
100206
 
100221
100221100221
100221
 
100201
100201100201
100201
 
100200
100200100200
100200
 
100208
100208100208
100208
 
100202
100202100202
100202
 
100203
100203100203
100203
 
100205
100205100205
100205
 
100210
100210100210
100210
 
100207
100207100207
100207
 
100209
100209100209
100209
 
100211
100211100211
100211
 
100212
100212100212
100212
 
100218
100218100218
100218
 
100215
100215100215
100215
 
100219
100219100219
100219
 
100214
100214100214
100214
 
100217
100217100217
100217
 
100216
100216100216
100216
 
100222
100222100222
100222
 

507.методическое пособие по дисциплине «информатика» ч1 программирование на языке pascal

  • 1. МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ Федеральное государственное автономное образовательное учреждение высшего профессионального образования «Северный (Арктический) федеральный университет имени М.В. Ломоносова» Институт Энергетики и транспорта Методическое пособие по дисциплине «Информатика» часть 1 Программирование на языке PASCAL Архангельск 2014 Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
  • 2. 2 Рассмотрена и рекомендована к изданию кафедрой Транспортно-технологических машин, оборудования и логистики 6 ноября 2014 г. Составители: А.В. Сысоева, ассистент; Т.Е. Цехмистрова, ассистент; М.В. Меньшиков, ассистент Д.В. Лебедев, ассистент М.В. Витязев, старший преподаватель. Ю.М. Лукин, старший преподаватель В.Е. Шехурин, старший преподаватель Рецензент М.Ю. Марушкей, доцент, кандидат технических наук УДК 004 Методическое пособие по дисциплине «Информатика», часть 1 Программирование на языке PASCAL/ составители: А.В. Сысоева, Т.Е. Цехмистрова, М.В. Меньшиков, Д.В. Лебедев, М.В. Витязев, Ю.М. Лукин, В.Е. Шехурин. Подготовлено кафедрой транспортно-технологических машин, оборудования и логистики института энергетики и транспорта В методическом пособии приведена необходимая информация для самостоятельной подготовке к практическим занятиям по программированию на языке программирования PASCAL. Дано описание основных элементов языка и основных операторов. Предназначены для студентов направления подготовки бакалавров Библиогр. 4 © Северный (Арктический) федеральный университет имени М.В. Ломоносова, 2014 Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
  • 3. 3 Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
  • 4. 4 ВВЕДЕНИЕ. Паскаль (англ. Pascal) — язык программирования общего назначения. Был создан Николаусом Виртом в 1970. Язык назван в честь французского математика, физика, литератора и философа Блеза Паскаля, который создал первую в мире механическую машину, складывающую два числа. Первая публикация Вирта о языке датирована 1970 годом, представляя язык, автор указывал в качестве цели его создания — построение небольшого и эффективного языка, способствующего хорошему стилю программирования, использующему структурное программирование и структурированные данные. Новый язык оказался настолько удачным, что быстро завоевал популярность. Его популярность выросла в связи с массовым распространением персональных компьютеров и выпуском в середине 80-х годов прошлого века фирмой Borland среды разработки Turbo Pascal. С тех пор Pascal - классический язык программирования. Важным шагом в развитии языка является появление свободных реализаций языка Паскаль Free Pascal и GNU Pascal, которые не только вобрали в себя черты множества других диалектов языка, но и обеспечили чрезвычайно широкую переносимость написанных на нѐм программ (например GNU Pascal поддерживает более 20 различных платформ, под более чем 10 различными операционными системами, Free Pascal обеспечивает специальные режимы совместимости с различными распространѐнными диалектами языка, такими как Turbo Pascal (полная совместимость), Delphi и другими). Данной методическое пособие предназначено для получения основных навыков работы с языком программирования ПАСКАЛЬ Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
  • 5. 5 Запуск системы Турбо Паскаль Система Турбо Паскаль довольно значительна по объему. При развертывании системы на жестком диске обычно создается каталог с именем ТР (или PAS, TURBOPAS, PASCAL и т.п.), в который помещаются все файлы, которые были установлены. Для вызова Турбо Паскаля необходимо запустить файл TURBO.EXE. Этот файл содержит готовую к работе диалоговую систему программирования Турбо Паскаль. В него входят минимально необходимые части Турбо Паскаля (текстовый редактор, компилятор, компоновщик, загрузчик). Для нормальной работы в диалоговой среде понадобятся также основная библиотека, располагающаяся в файле, и справочная служба. В принципе, этих файлов достаточно для написания, компиляции и выполнения лабораторных работ в Турбо Паскаль. После успешного вызова системы экран ПК приобретает вид, показанный на рисунке 1. Рисунок 1 – Внешний вид рабочего окна Турбо Паскаль Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
  • 6. 6 Основные клавиши и функции Верхняя строка содержит «меню» возможных режимов работы Турбо Паскаля, нижняя - краткую справку о назначении основных функциональных клавиш. Вся остальная часть экрана принадлежит окну редактора, очерченному двойной рамкой и предназначенному для ввода и коррекции текстов программ. В его верхней строке приводятся имя того файла, откуда был прочитан текст программы (новому файлу присваивается имя NONAME00.PAS), два специальных поля, используемых при работе с устройством ввода «мышь» (эти поля выделены квадратными скобками), и цифра 1 - номер окна. В Турбо Паскале можно работать одновременно с несколькими программами (или частями одной крупной программы), каждая из которых может располагаться в отдельном окне редактора. Функциональные клавиши используются для управления средой Турбо Паскаля. Они обозначаются F1, F2, ..., F12 и располагаются в самом верхнем ряду клавиатуры. С каждой из этих клавиш связывается некоторая команда меню. Действие почти всех функциональных клавиш можно модифицировать тремя особыми клавишами: Alt, Ctrl и Shift. В дальнейшем такое совместное нажатие двух клавиш будем обозначать чертой. Например, Alt-F3 означает, что вместе с клавишей Alt необходимо нажать клавишу F3, Ctrl-F9 - вместе с Ctrl нажимается F9 и т.д. Ниже приводятся команды, которые передаются среде Турбо Паскаля функциональными клавишами и некоторыми их комбинациями с клавишами Ctrl и Alt: Fl - обратиться за справкой к встроенной справочной службе (Help-помощь); F2 - записать редактируемый текст в дисковый файл; F3 - прочитать текст из дискового файла в окно редактора; F4 - используется в отладочном режиме: начать или продолжить исполнение программы и остановиться перед исполнением той ее строки, на которой стоит курсор; F5 - открыть активное окно на весь экран; F6 - сделать активным следующее окно; Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
  • 7. 7 F7 - используется в отладочном режиме: выполнить следующую строку программы; если в строке есть обращение к процедуре (функции), войти в эту процедуру и остановиться перед исполнением первого ее оператора; F8- используется в отладочном режиме: выполнить следующую строку программы; если в строке есть обращение к процедуре (функции), исполнить ее и не прослеживать ее работу; F9 - компилировать программу, но не выполнять ее; F10 - перейти к диалоговому выбору режима работы с помощью главного меню; Ctrl-F9 - выполнить прогон программы: компилировать программу, находящуюся в редакторе, загрузить ее в оперативную память и выполнить, после чего вернуться в среду Турбо Паскаля. Alt-F5 - сменить окно редактора на окно вывода результатов работы (прогона) программы. Чаще всего, Вам понадобятся команды Ctrl-F9 для проверки работы Вашей программы и Alt-X - для выхода из Турбо Паскаля. Клавиши F2 и F3 помогут Вам в работе с Вашим каталогом. Командой Alt-F5 Вы в любой момент сможете просмотреть данные, выданные на экран в результате прогона программы. Сохранение программы Основной формой хранения текстов программ вне среды являются файлы. После завершения работы с Турбо Паскалем можно сохранить текст новой программы для того, чтобы использовать его в следующий раз. Для обмена данными между файлами и редактором среды предназначены клавиши F2 (запись в файл) и F3 (чтение из файла). Если Вы создаете новую программу, то среда еще не знает имя того файла, в который Вы захотите поместить текст этой программы, и поэтому она присваивает ей стандартное имя NONAME00.PAS (NO NAME - нет имени). Для сохранения текста программы в файле нужно нажать F2. Пройдя по команде File – Save as (Сохранить в файле с именем...) - название программы (должно состоять из 8 латинских символов или цифр) – ОК (Рисунок 2). Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
  • 8. 8 Рисунок 2 – Сохранение программы Если в имени опущено расширение, среда присвоит файлу стандартное расширение PAS. Если Вы захотите завершить работу с Турбо Паскалем, а в редакторе остался не сохраненный в файле текст, на экране появится окно с запросом. Построение блок-схемы алгоритма Для того, чтобы правильно написать программу в Турбо Паскаль, необходимо создать блок-схему алгоритма будущей программы. Элементы блок- схемы приведены на рисунке 3, их нужно запомнить. По созданной блок-схеме вам не составит труда написать код программы. Рассмотрим построение блок-схеме на примере простого линейного алгоритма. Пример: Вычислить периметр прямоугольника (Р), если его стороны соответственно равны: а=2, в=4 с помощью Турбо Паскаль. Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
  • 9. 9 Рисунок 3 Элементы блок-схемы алгоритма программы Для построения блок-схемы удобно будет представить алгоритм выполнения: 1) Начало программы. 2) Переменные, которые будут использоваться для вычисления периметра прямоугольника (а,в,Р). 3) Формула для вычисления периметра прямоугольника Р=2(а+в). 4) Вывод решения на экран. 5) Конец программы. Блок-схема алгоритма представлена на рисунке 4: Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
  • 10. 10 Рисунок 4 Блок-схема алгоритма Опираясь на данную блок-схему, можно написать код программы. Для того чтобы правильно составить программу познакомимся с основными операциями и функциями в Турбо Паскаль. Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
  • 11. 11 Написание конструкций языка Написание конструкций языка осуществляется в соответствии с синтаксисом и использованием принятого алфавита, который включает в себя буквы, цифры и специальные символы. 1. Буквы латинского алфавита 2. Цифры арабские 3. Знаки :=, +, -, *, /, <, >, <=, >=,<> 4. Ключевые слова (служебные) Ключевые слова (служебные), которые будут необходимы в ходе написания программы: PROGRAM –программа BEGIN – начало программы VAR – описание блока переменных WRITE, WRITELN – обеспечивает вывод информации в текстовый файл или передачу ее на логическое устройств READ, READLN - обеспечивает ввод символов, строк и чисел END – завершение программы. Слова Program, begin и end выделяют две части программы - раздел описаний и раздел операторов. Такая структура обязательна для любой программы, что является следствием жесткого требования языка: любой нестандартный идентификатор, используемый в исполняемых операторах, должен быть предварительно описан в разделе описаний. В рассматриваемых далее программах понадобятся следующие типы данных: • INTEGER - целочисленные данные, во внутреннем представлении занимают 2 байта; диапазон возможных значений - от -32768 до +32767; данные представляются точно; • REAL - вещественные данные, занимают 6 байт; диапазон возможных значений модуля - от 2.9Е-39 до 1.7Е+38; точность представления данных - 11...12 значащих цифр; • CHAR - символ, занимает 1 байт; Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
  • 12. 12 • STRING - строка символов, занимает МАХ+1 байт, где МАХ - максимальное число символов в строке; • BOOLEAN - логический тип, занимает 1 байт и имеет два значения: FALSE (ложь) и TRUE (истина). Для вычисления отношения введенных чисел используется один из основных операторов Турбо Паскаля - оператор присваивания. В его левой части указывается имя переменной, правая часть представляет собой выражение того же типа, что и переменная. Пара символов «: =», связывающая левую и правую части оператора присваивания, означает «присвоить значение». Запомним: в операторах присваивания Турбо Паскаля всегда используются символы «: =», в то время как при описании констант -одиночный символ «=». Пример блок-схемы программы с описанием операторов приведен на рисунке 5 Рисунок 5 – Блок-схема алгоритма и описание функций языка Паскаль. Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
  • 13. 13 Теперь напишем код программы в Паскале. Пример на рисунке 6. Рисунок 6 – Пример написания программы После написания кода программы сохраняем ее и проверяем на ошибки (Рисунок 7). Рисунок 7 Проверка и компиляция программы в машинные коды Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
  • 14. 14 Если при написании кода нет ошибок, то появится следующий экран (рисунок 8) Рисунок 8 Успешное завершение компиляции программы Данное окно позволяет запустить программу и вычислить периметр искомого прямоугольника (рисунок 9). Запускаем программу: Рисунок 9 Окно запуска программы. Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
  • 15. 15 Вводим значения сторон прямоугольника и получаем искомый периметр (рисунок 10). Рисунок 10 Вывод результатов расчета на экран Написание программ с использованием разветвляющихся и циклических алгоритмов Для решения таких алгоритмов используются определенные операторы: - оператор безусловного перехода Go to; - составной оператор; -условный оператор If; - условный оператор Case; - оператор цикла For; - оператор цикла While; - оператор цикла Repeat. Оператор Go to применяется в случаях, когда после выполнения некоторого оператора следует выполнить не следующий по порядку, а какой – либо другой, Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
  • 16. 16 отмеченный меткой оператор. Метка может содержать как цифровые, так и буквенные символы. Оператор If Оператор If изменяет порядок выполнения операторов в зависимости от истинности или ложности некоторого условия. Существует два варианта оператора: 1. If <условие> Then <оператор 1> Else <оператор 2> 2. If <условие> Then <оператор> Условие может быть простым или сложным. Сложные условия образуются с помощью логических операций AND, OR, NOT. При записи условий могут использоваться все возможные операции отношения. Результат выражения всегда имеет булевский тип (истина или ложь). В первом варианте, если условие принимает значение "Истина", выполняется оператор 1, если условие - "Ложь", выполняется оператор 2. Пример: Создать разветвляющийся алгоритм линейной структуры. Исходные данные: Начнем с построения блок-схемы алгоритма (рисунок 11). После того, как мы построили блок-схему алгоритма, строго следуя ей, пишем код программы в Turbo Pascal. Начало программы будет таким же, как и в написании линейного алгоритма, изменится только блок описания условия: Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
  • 17. 17 Рисунок 11 Блок-схема программы с оператором условного перехода … If x<=0 then begin y1:=sin(1.5*x+a); Writeln (‗y1=‘, y1:6:2); End else then begin y2:=EXP(-(SQR(x)-a)); Writeln (‗y2=‘, y2:6:2); End … Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
  • 18. 18 Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
  • 19. 19 Оператор цикла For Оператор цикла For подходит для решения задач с известным числом повторений. Рассмотрим пример, в ходе которого мы и познакомимся с этим оператором. Пример: Создать циклический алгоритм, вычислить сумму 10 членов ряда. Блок-схема алгоритма представлена на рисунке 12: Рисунок 12 Блок-схема программы с использованием оператора For Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
  • 20. 20 Код программы будет выглядеть следующим образом: Var i,Kn: Integer; y1,y,UN:real; Begin Writeln (‗введите значения Kn‘); Readln (Kn); y:=0; - первоначально значение функции у For i:=1 to kn do - параметр цикла от 1 до 10 Begin UN:=1/SQR(i); - определение значения i–того члена ряда y:=y+UN; - к первоначальному значению прибавляется значение i–того члена ряда пока не будет выполнен цикл. END; Y1:=3*(SQRT(y)); - расчет значения итоговой функции Writeln (‘Y1=’,Y1:6:2); - вывод результата End. Оператор цикла While и Repeat Оператор цикла While и Repeat для решения задач с неизвестным числом повторений, также важно запомнить, что оператор цикла While (до тех пор пока), а оператор цикла Repeat (после того как). Для заданий, когда число повторений цикла заранее неизвестно и действия, предусмотренные в цикле, могут вообще не выполняться и служит оператор цикла с предусловием. Разберем на примере: Вычислить с точностью е=0,001 значение функции. Суммирование закончить при выполнении условия , |Un |≤e где Un – общий член ряда; n – номер члена ряда, n=1,2,3…n. Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
  • 21. 21 Блок-схема программы представлена на рисунке 13 Рисунок 13 Блок-схема программы с использованием оператора While В блоке описания переменных необходимо указать все переменные, которые будут использоваться в написании программы, для того, чтобы избежать ошибок во время компиляции. При выполнении этого оператора цикла последовательность операторов, находящихся между словами Repeat и until, выполнится один и более раз. Этот Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
  • 22. 22 процесс завершается, когда после очередного выполнения заданной последовательности операторов логическое выражение примет значение True. Блок-схема программы с использованием оператора Repeat представлена на рисунке 14 Рисунок 14 Блок-схема программы с использованием оператора Repeat Табулирование функций Вычисление значений функции при изменении аргумента от некоторого начального значения до некоторого конечного значения с определенным шагом это и есть табулирование. Говоря простым языком, вычисление значения функции от изменяющегося алгоритма с известным шагом. Решением будет таблица значений аргумента и функции, которая появится на экране после прохождения компиляции. Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
  • 23. 23 Основные моменты: В блоке переменных прописываем аргумент (х), величину шага (dx) и количество повторений (kn). В блоке ввода данных нарисуем шапку будущей таблицы (см. пример) После введения вычисляемой функции не забудьте о приращения шага. Пример: … Writeln (― ―); Readln (); Writeln (―_____________________‖); Writeln (―| x | y |‖); построение таблицы Writeln (―_____________________‖); … х:=x+dx; приращение функции Далее в решении задач для самостоятельного решения необходимо воспользоваться примером, все остальные части программы уже знакомы Вам из предыдущих работ . Массивы Одномерные массивы. Необходимость в массивах возникает всякий раз, когда при решении задачи приходится иметь дело с большим, но конечным количеством однотипных упорядоченных данных. Массив – это упорядоченный набор фиксированного количества некоторых значений. Формат описания массива <имя массива>:array [<количество>] of <тип компонента> <имя массива> - идентификатор массива Array – массив Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
  • 24. 24 <количество> - количество элементов в массиве Of - для <тип переменных> - описание типа переменных в массиве. Примеры: Описание массива состоящего из 100 элементов: A:array [1..100] of real; Описание массива по годам 1901-2000: Vek: array [1901..2000] of integer. Для использования случайных чисел в Турбо Паскале используются операторы random:real - генерирует случайные числа в диапазоне 0...0.99. random(i:word):word - генерирует случайные числа в диапазоне 0...1. randomize - изменение базы генератора случайных чисел. Переменные: А- массив, тип integer; I- параметр цикла, тип integer; kn – размер массива, тип integer; Рассмотрим пример с использованием базы генератора случайных чисел: Вывести 15 значений элементов массива с помощью генератора случайных чисел в диапазоне 0...50 и вывести в строку. В данном примере будет использован генератор случайных чисел Randomize, необходимо правильно разобраться в условия, для того, чтобы ориентироваться в исходных данных и записать их в блок переменных. Блок-схема алгоритма будет достаточно простая (рисунок 15): Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
  • 25. 25 Рисунок 15 Блок-схема алгоритма создания массива Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
  • 26. 26 Двумерные массивы Двумерным массивом (матрица) называется совокупность данных. Внешний вид двумерного массива представлен на рисунке 16. Каждый элемент характеризуется его местоположением (номером строки и номером столбца (рисунок 17) Рисунок 16 Двумерный массив Рисунок 17 Характеристика элементов двумерного массива Описание двумерного массива представлено на рисунке 18 Рисунок 18 Описание двумерного массива Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
  • 27. 27 При написании программы существует несколько отличий, чем в написании кода в одномерных массивов. Var i, j, kn, km : integer; a:array [1..10,1..10] of real; begin writeln (‗введите значения kn, km‘); readln (kn, km); for i:=1 to kn do for j:=1 to km do begin writeln (‗введите значения a[‗i,j,‘]=‘); readln (a[i,j]); end; …. Так как, двумерный массив это матрица, то кроме переменных i, kn – строки матрицы, необходимо прописать столбцы матрицы j, km. Описание массива в коде массива будет таким же, как в примере, на рисунке №. Далее вводим количество строк и столбцов, используя циклический алгоритм. Такой же алгоритм необходимо прописать и для ввода элементов массива. Далее написание кода производится в зависимости от поставленной задачи, это может быть нахождения максимального и минимального значений, вычисление среднего арифметического значения в строке или столбце матрицы. Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
  • 28. 28 Процедуры и функции Алгоритм решения задачи проектируется путем разбиения всей задачи на отдельные подзадачи. Обычно подзадачи реализуются в виде подпрограмм. Подпрограмма - это отдельная функционально независимая часть программы. Любая подпрограмма обладает той же структурой, которой обладает и вся программа. Подпрограммы решают три важные задачи: 1 избавляют от необходимости многократно повторять в тексте программы аналогичные фрагменты; 2 улучшают структуру программы, облегчая ее понимание; 3 повышают устойчивость к ошибкам программирования и непредвидимым последствиям при модификациях программы. Вызов подпрограммы происходит при каждом употреблении ее имени в основной (или вызывающей) программе. При вызове подпрограммы выполнение основной программы приостанавливается, и управление передается в подпрограмму, где выполняются команды, заданные в ней. Подпрограмма завершается, если выполнены все ее процедуры до завершающего слова End или по специальной команде выхода из подпрограммы Exit. По окончании работы подпрограммы управление возвращается основной программе, иначе говоря, к первой команде, следующей за обращением к этой подпрограмме. В языке Pascal определяются два типа подпрограмм – процедуры (Procedure) и функции (Function). Любая программа может содержать несколько процедур и функций. Структура любой подпрограммы аналогична структуре всей программы. Подпрограмма должна быть описана до того, как будет использована в программе или другой подпрограмме. Процедуры и функции объявляются в разделе описания вслед за разделом переменных. Тогда общая структура программы выглядит так: Рrogram hh; Label; {описание меток} Const; {описание констант} Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
  • 29. 29 Type; {описание типов} Var; {описание переменных} Procedure; {описание процедур} Function; {описание функций} Begin . . . . . . end. Выполнение программы начинается с операторов основной программы. При необходимости вызывается подпрограмма и начинают действовать еѐ операторы. Затем управление передаѐтся в основную программу, которая продолжает выполняться. Обращение к подпрограмме - переход к выполнению подпрограммы с заданием информации, необходимой для ее выполнения и возврата. Подпрограмма вызывается по своему имени с указанием необходимых параметров. ПРОЦЕДУРЫ Структура процедуры имеет следующий вид: Procedure <имя процедуры>{(формальные параметры : их тип)}; {Var (локальные переменные)} begin . . . end; Процедура вызывается по имени: <имя процедуры> {(фактические параметры)}; Процедура может быть с параметрами, а может быть без параметров. Процедура-это поименованный составной оператор, где имя задается служебным словом Procedure. Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
  • 30. 30 Связь процедуры другими операторами программы осуществляется через переменные. Эти переменные используются как в программе, так и в процедуре, а описаны в самой программе. Такие переменные называются глобальными. Глобальными переменными называются переменные, которые описаны в самой программе, а используются как в программе так и в процедуре (функции). Глобальные переменные, которые не были инициализированы явным образом, перед началом выполнения программы обнуляются. Время жизни глобальных переменных - с начала программы и до ее завершения. Глобальные переменные доступны в любом месте программы или подпрограммы, кроме тех подпрограмм, в которых описаны локальные переменные с такими же именами. Локальными переменными называются переменные, описанные внутри процедуры (функции) и используемые только внутри процедуры (функции). Формальными параметрами называются переменные описанные в заголовке программы и используемые только внутри процедуры (функции). Формальные параметры указывают, с какими параметрами следует обращаться к этой процедуре (функции), т.е. их количество, последовательность, тип. Они задаются в заголовке процедуры (функции) в виде списка параметров, разбитого на группы (секции) однотипных параметров, разделенных ‗;‘. Порядок следования групп (секций) произвольный. Для каждого формального параметра следует указать имя и тип. Имена параметров могут быть любыми, они могут совпадать с глобальными именами программы. Необходимо лишь помнить, что в этом случае параметр основной программы с таким именем становится недоступным для непосредственного использования подпрограммой. Но формальные имена не могут совпадать с локальными переменными, т.к. они располагаются в одном стековом сегменте памяти. Тип формального параметра может быть практически любым, однако в заголовке процедуры (функции) нельзя вводить новый тип. Рассмотрим пример: необходимо создать 3 массива случайных чисел, создать массив суммы всех элементов и организовать вывод всех массивов в виде таблицы. Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
  • 31. 31 Если писать эту программу не используя процедуры, то код программы будет выглядеть следующим образом (комментариями код не сопровождается, потому что все элементы рассматривались ранее): var a1: array [1..10] of integer; a2: array [1..10] of integer; a3: array [1..10] of integer; Asum: array [1..10] of integer; i: integer; begin for i:= 1 to 10 do begin a1[i]:=random(10); a2[i]:=random(10); a3[i]:=random(10); end; writeln ('1 massiv'); writeln ('_____________________'); writeln ('| i | a[i] |'); for i:=0 to 9 do writeln ('| ',i:3, ' | ', a1[i]:4, ' |'); writeln('______________________'); writeln ('2 massiv'); writeln ('_____________________'); writeln ('| i | a[i] |'); for i:=0 to 9 do writeln ('| ',i:3, ' | ', a2[i]:4, ' |'); writeln('______________________'); writeln ('3 massiv'); writeln ('_____________________'); writeln ('| i | a[i] |'); for i:=0 to 9 do writeln ('| ',i:3, ' | ', a3[i]:4, ' |'); Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
  • 32. 32 writeln('______________________'); for i:= 1 to 10 do Asum[i]:=a1[i]+a2[i]+a3[i]; writeln('summarnii massiv'); writeln ('_____________________'); writeln ('| i | a[i] |'); for i:=0 to 9 do writeln ('| ',i:3, ' | ', Asum[i]:4, ' |'); writeln('______________________'); readln(); end. Код получился большим и громоздким, в придачу при выводе массивов в виде таблицы, оформление придется корректировать в каждом массиве отдельно, что приведет к большим временным затратам. Видно, что процесс вывод массива повторяется для всех массивов. Введем процедуру, которая будет выводить массив на экран в виде таблицы. Блок-схема для этой программы приведена на рисунке 19. Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
  • 33. 33 Рисунок 19 Блок-схема программы с использованием процедуры var a1: array [1..10] of integer; a2: array [1..10] of integer; a3: array [1..10] of integer; Asum: array [1..10] of integer; i: integer; procedure print (var x: array of integer); {название процедуры и формальный элемент, на который будет ссылаться основная программа} var i:integer; {локальная переменная, которая используется только в процедуре} begin writeln ('_____________________'); writeln ('| i | a[i] |'); Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
  • 34. 34 for i:=0 to 9 do writeln ('| ',i:3, ' | ', x[i]:4, ' |'); writeln('______________________'); end; begin for i:= 1 to 10 do begin a1[i]:=random(10); a2[i]:=random(10); a3[i]:=random(10); end; writeln ('1 massiv'); print(a1); {вызов процедуры} writeln ('2 massiv'); print(a2); writeln ('3 massiv'); print(a3); for i:= 1 to 10 do Asum[i]:=a1[i]+a2[i]+a3[i]; writeln('summarnii massiv'); print(Asum); readln(); end. Видно, что количество строк в коде уменьшилось, и правка кода стала значительно легче. Теперь в основной программе можно создавать сколь угодно много массивов целых чисел и каждый можно будет выводить на экран в виде таблицы, используя лишь одну строчку кода. ФУНКЦИИ Иногда функций, которые заложены в среде Turbo Pascal не хватает для выполнения сложных математических задач, в таких случаях можно написать собственную функцию. Функция, в отличии от процедуры, возвращает в вызывающую программу значение, т.е. результат ее работы. Это значение можно: • присвоить переменной • использовать в выражении Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
  • 35. 35 • передать в качестве параметра в процедуру или функцию. Из этого следуют отличия в структуре функции, т.е. надо знать тип возвращаемого функцией результата и должен быть указан механизм возвращения этого результата. Структура функции имеет следующий вид: Function <имя функции>{(формальные параметры : их тип)}: <тип функции>; {Var (локальные переменные)} begin . . . <имя функции>: =<выражение> end; где:  тип функции – простой порядковый тип, исключение - тип string. Если тип не стандартный, то его надо предварительно описать в разделе Type программы.  <имя функции>: =<выражение> - оператор, который осуществляет механизм возврата значения. В остальном структура функции полностью повторяет структуру процедуры. Она так же может быть с параметрами, а может быть без параметров. Функция - это поименованный составной оператор, возвращающий единственное значение, имя которой задается служебным словом Function. Рассмотрим пример использования функции: посчитать сумму факториалов чисел, введенных с клавиатуры. Из условия задачи видно, что целесообразно написать функцию вычисления факториала числа. Блок-схема алгоритма программы приведена на рисунке 20: Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
  • 36. 36 Рисунок 20 Блок-схема программы с использованием функции. Код будет выглядеть следующим образом: var a:array[1..100] of integer; i,n:integer; sum:longint; function fact(x:integer):longint; {название процедуры, описание формальных переменных и тип, который примет функция} var i,f:integer; {описание локальных переменных} begin f:=1; for i:=1 to x do f:=f*i; fact:=f; {присвоение значения, которое примет функция} end; begin sum:=0; Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
  • 37. 37 writeln('Vvedite 4islo elementov'); readln(n); for i:=1 to n do begin writeln('vvedite ', i, '-oe 4islo'); readln(a[i]); end; for i :=1 to n do sum:=sum+fact(a[i]); {вызов функции из основной программы} write('factorial summi 4isel '); for i := 1 to n do write(a[i], ' ' ); writeln(' raven ', sum); readln; end. Модуль CRT В этом модуле сосредоточены процедуры и функции, обеспечивающие управление текстовым режимом работы экрана. С помощью модуля, можно перемещать курсор в произвольную позицию экрана, менять цвет выводимых символов и окружающего фона, создавать окна. Стандартные процедуры и функции управления текстовым экраном: Процедура TEXTCOLOR(цвет)- устанавливает цвет для выводимых символов. Процедура TEXTBACKGROUND(цвет)- устанавливает цвет фона на который выводятся символы. Процедура GOTOXY(X,Y)- выводит курсор в требуемое положение на экране X – горизонтальная координата; Y - вертикальная координата. Процедура WINDOW(x1,y1,x2,y2) – устанавливает границы активного окна для вывода данных. Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
  • 38. 38 x1,y1 – координаты верхнего левого угла окна; x2,y2 - координаты нижнего правого угла окна. Процедура CLRSCR – очищает экран или активное окно. Пример: Вывести 10 значений y=sin(x) начав с х=0 с шагом dx= 0.15 в таблице в центре экрана. Переменные: y- функция тип real; x – аргумент тип real; dx – шаг аргумента тип real; i,kn- параметры цикла тип integer. Блок-схема программы представлена на рисунке 21 Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
  • 39. 39 Рисунок 21 Блок-схема программы Пишем код программы, используя блок-схему: пояснений мы решили приводить не для каждой строки, т.к., в процессе изучения TP, вы уже усвоили основные моменты в написании программного кода. uses crt; используем модуль СRT var x,dx,y:real; описываем переменные, которые будут использованы i,kn:integer; begin Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
  • 40. 40 clrscr; используем функцию для очистки экрана writeln('vv.kn,x,dx'); readln(kn,x,dx); gotoxy(33,6); используем эту процедуру для вывода курсора на экран в центре writeln('--------------'); gotoxy(33,7); writeln('| x | y |'); gotoxy(33,8); writeln('--------------'); for i:=1 to kn do begin y:=sin(x); gotoxy(33,i+);writeln('|',x:4:2,'|',y:7:4,'|'); x:=x+dx; табулируем функцию end; gotoxy(33,i+); writeln('--------------'); readln; end. Модуль GRAPH Графические возможности языка Турбо-Паскаля реализованы с помощью ряда графических подпрограмм (их более 50), содержащихся в модуле Graph (файл GRAPH.TPU). Кроме того, существует ряд графических драйверов, обеспечивающих работу программы с тем или иным видеоадаптером. Для реализации графических драйверов (BGI-файлов) выделяется некоторый небольшой набор базовых графических операций и именно эти операции ―привязываются‖ к конкретному драйверу устройства. Для каждого драйвера обеспечивается стандартный интерфейс, а все остальные операции реализуются библиотечными подпрограммами на основе набора базовых операций. Таким Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
  • 41. 41 образом удается обеспечить почти полную независимость программ от типа установленного видеоадаптера. Для работы в графическом режиме программа должна выполнить его инициализацию. Инициализация графического режима выполняется с помощью вызова библиотечной процедуры InitGraph(var GraphDriver, GraphMode :integer; PathToDriver : string), которая отыскивает на диске указанный в вызове драйвер, загружает его в память и подготавливает экран к работе в графическом режиме. Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
  • 42. 42 СПИСОК ЛИТЕРАТУРЫ 1 Free Pascal и Lazarus: Учебник по программированию: Алексеев Е. Р., Чеснокова О. В., Кучер Т. В.: [Текст]: ДМК-пресс, 2010, 442 с., ил 2 Зубок Д. А., Маятин А. В., Краснов С. В. Основы программирования в среде TURBO PASCAL: Учебное пособие. - [Текст]: СПб.: СПбГУ ИТМО, 2009, 69 с., ил. 3 http://turbopascal.h18.ru/tp/Index.html 4 http://www.tp7.info/tp_ushitel.php Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
  • 43. 43 ОГЛАВЛЕНИЕ Введение …………………………………………………………………………. 3 Запуск системы Турбо Паскаль ……………………………………………….. 4 Основные клавиши и функции …………………………………………………. 5 Сохранение программы …………………………………………………………. 6 Написание конструкций языка …………………………………………………. 10 Написание программ с использованием разветвляющихся и циклических алгоритмов ……………………………………………………………………… 14 Табулирование функций…………………………………………………………. 21 Массивы ………………………………………………………………………….. 22 Процедуры и функции …………………………………………………………... 27 Модуль CRT …………………………………………………………………….. 36 Модуль GRAPH …………………………………………………………………………………………….. 39 СПИСОК ЛИТЕРАТУРЫ ……………………………………………………… 41 Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»