43
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ Федеральное государственное автономное образовательное учреждение высшего профессионального образования «Северный (Арктический) федеральный университет имени М.В. Ломоносова» Институт Энергетики и транспорта Методическое пособие по дисциплине «Информатика» часть 1 Программирование на языке PASCAL Архангельск 2014 Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

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

Embed Size (px)

Citation preview

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

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

Федеральное государственное автономное образовательное учреждение

высшего профессионального образования

«Северный (Арктический) федеральный университет

имени М.В. Ломоносова»

Институт Энергетики и транспорта

Методическое пособие по дисциплине «Информатика»

часть 1 Программирование на языке PASCAL

Архангельск 2014

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

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

2

Рассмотрена и рекомендована к изданию кафедрой Транспортно-технологических

машин, оборудования и логистики 6 ноября 2014 г.

Составители:

А.В. Сысоева, ассистент;

Т.Е. Цехмистрова, ассистент;

М.В. Меньшиков, ассистент

Д.В. Лебедев, ассистент

М.В. Витязев, старший преподаватель.

Ю.М. Лукин, старший преподаватель

В.Е. Шехурин, старший преподаватель

Рецензент

М.Ю. Марушкей, доцент, кандидат технических наук

УДК 004

Методическое пособие по дисциплине «Информатика», часть 1

Программирование на языке PASCAL/ составители: А.В. Сысоева, Т.Е. Цехмистрова, М.В. Меньшиков, Д.В. Лебедев, М.В. Витязев, Ю.М. Лукин, В.Е.

Шехурин.

Подготовлено кафедрой транспортно-технологических машин, оборудования

и логистики института энергетики и транспорта

В методическом пособии приведена необходимая информация для

самостоятельной подготовке к практическим занятиям по программированию на

языке программирования PASCAL. Дано описание основных элементов языка и

основных операторов.

Предназначены для студентов направления подготовки бакалавров

Библиогр. 4

© Северный (Арктический)

федеральный университет

имени М.В. Ломоносова,

2014

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

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

3

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

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

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ервис»

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

5

Запуск системы Турбо Паскаль

Система Турбо Паскаль довольно значительна по объему. При

развертывании системы на жестком диске обычно создается каталог с именем ТР

(или PAS, TURBOPAS, PASCAL и т.п.), в который помещаются все файлы,

которые были установлены. Для вызова Турбо Паскаля необходимо запустить

файл TURBO.EXE. Этот файл содержит готовую к работе диалоговую систему

программирования Турбо Паскаль. В него входят минимально необходимые части

Турбо Паскаля (текстовый редактор, компилятор, компоновщик, загрузчик). Для

нормальной работы в диалоговой среде понадобятся также основная библиотека,

располагающаяся в файле, и справочная служба. В принципе, этих файлов

достаточно для написания, компиляции и выполнения лабораторных работ в

Турбо Паскаль.

После успешного вызова системы экран ПК приобретает вид, показанный на

рисунке 1.

Рисунок 1 – Внешний вид рабочего окна Турбо Паскаль

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

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

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ервис»

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

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ервис»

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

8

Рисунок 2 – Сохранение программы

Если в имени опущено расширение, среда присвоит файлу стандартное

расширение PAS. Если Вы захотите завершить работу с Турбо Паскалем, а в

редакторе остался не сохраненный в файле текст, на экране появится окно с

запросом.

Построение блок-схемы алгоритма

Для того, чтобы правильно написать программу в Турбо Паскаль,

необходимо создать блок-схему алгоритма будущей программы. Элементы блок-

схемы приведены на рисунке 3, их нужно запомнить. По созданной блок-схеме вам

не составит труда написать код программы.

Рассмотрим построение блок-схеме на примере простого линейного

алгоритма.

Пример: Вычислить периметр прямоугольника (Р), если его стороны

соответственно равны: а=2, в=4 с помощью Турбо Паскаль.

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

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

9

Рисунок 3 Элементы блок-схемы алгоритма программы

Для построения блок-схемы удобно будет представить алгоритм

выполнения:

1) Начало программы.

2) Переменные, которые будут использоваться для вычисления

периметра прямоугольника (а,в,Р).

3) Формула для вычисления периметра прямоугольника Р=2(а+в).

4) Вывод решения на экран.

5) Конец программы.

Блок-схема алгоритма представлена на рисунке 4:

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

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

10

Рисунок 4 Блок-схема алгоритма

Опираясь на данную блок-схему, можно написать код программы. Для того

чтобы правильно составить программу познакомимся с основными операциями и

функциями в Турбо Паскаль.

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

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

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ервис»

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

12

• STRING - строка символов, занимает МАХ+1 байт, где МАХ -

максимальное число символов в строке;

• BOOLEAN - логический тип, занимает 1 байт и имеет два значения:

FALSE (ложь) и TRUE (истина).

Для вычисления отношения введенных чисел используется один из

основных операторов Турбо Паскаля - оператор присваивания. В его левой части

указывается имя переменной, правая часть представляет собой выражение того же

типа, что и переменная. Пара символов «: =», связывающая левую и правую части

оператора присваивания, означает «присвоить значение». Запомним: в операторах

присваивания Турбо Паскаля всегда используются символы «: =», в то время как

при описании констант -одиночный символ «=». Пример блок-схемы программы с

описанием операторов приведен на рисунке 5

Рисунок 5 – Блок-схема алгоритма и описание функций языка Паскаль.

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

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

13

Теперь напишем код программы в Паскале. Пример на рисунке 6.

Рисунок 6 – Пример написания программы

После написания кода программы сохраняем ее и проверяем на ошибки

(Рисунок 7).

Рисунок 7 Проверка и компиляция программы в машинные коды

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

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

14

Если при написании кода нет ошибок, то появится следующий экран

(рисунок 8)

Рисунок 8 Успешное завершение компиляции программы

Данное окно позволяет запустить программу и вычислить периметр

искомого прямоугольника (рисунок 9). Запускаем программу:

Рисунок 9 Окно запуска программы.

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

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

15

Вводим значения сторон прямоугольника и получаем искомый периметр

(рисунок 10).

Рисунок 10 Вывод результатов расчета на экран

Написание программ с использованием разветвляющихся и циклических

алгоритмов

Для решения таких алгоритмов используются определенные операторы:

- оператор безусловного перехода Go to;

- составной оператор;

-условный оператор If;

- условный оператор Case;

- оператор цикла For;

- оператор цикла While;

- оператор цикла Repeat.

Оператор Go to применяется в случаях, когда после выполнения некоторого

оператора следует выполнить не следующий по порядку, а какой – либо другой,

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

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

16

отмеченный меткой оператор. Метка может содержать как цифровые, так и

буквенные символы.

Оператор If

Оператор If изменяет порядок выполнения операторов в зависимости от

истинности или ложности некоторого условия. Существует два варианта

оператора:

1. If <условие> Then <оператор 1> Else <оператор 2>

2. If <условие> Then <оператор>

Условие может быть простым или сложным. Сложные условия образуются с

помощью логических операций AND, OR, NOT. При записи условий могут

использоваться все возможные операции отношения. Результат выражения всегда

имеет булевский тип (истина или ложь).

В первом варианте, если условие принимает значение "Истина",

выполняется оператор 1, если условие - "Ложь", выполняется оператор 2.

Пример: Создать разветвляющийся алгоритм линейной структуры.

Исходные данные:

Начнем с построения блок-схемы алгоритма (рисунок 11).

После того, как мы построили блок-схему алгоритма, строго следуя ей,

пишем код программы в Turbo Pascal.

Начало программы будет таким же, как и в написании линейного алгоритма,

изменится только блок описания условия:

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

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

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ервис»

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

18

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

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

19

Оператор цикла For

Оператор цикла For подходит для решения задач с известным числом

повторений. Рассмотрим пример, в ходе которого мы и познакомимся с этим

оператором.

Пример: Создать циклический алгоритм, вычислить сумму 10 членов ряда.

Блок-схема алгоритма представлена на рисунке 12:

Рисунок 12 Блок-схема программы с использованием оператора For

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

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

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ервис»

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

21

Блок-схема программы представлена на рисунке 13

Рисунок 13 Блок-схема программы с использованием оператора While

В блоке описания переменных необходимо указать все переменные, которые

будут использоваться в написании программы, для того, чтобы избежать ошибок

во время компиляции.

При выполнении этого оператора цикла последовательность операторов,

находящихся между словами Repeat и until, выполнится один и более раз. Этот

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

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

22

процесс завершается, когда после очередного выполнения заданной

последовательности операторов логическое выражение примет значение True.

Блок-схема программы с использованием оператора Repeat представлена на

рисунке 14

Рисунок 14 Блок-схема программы с использованием оператора Repeat

Табулирование функций

Вычисление значений функции при изменении аргумента от некоторого

начального значения до некоторого конечного значения с определенным шагом

это и есть табулирование. Говоря простым языком, вычисление значения функции

от изменяющегося алгоритма с известным шагом. Решением будет таблица

значений аргумента и функции, которая появится на экране после прохождения

компиляции.

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

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

23

Основные моменты:

В блоке переменных прописываем аргумент (х), величину шага (dx) и

количество повторений (kn).

В блоке ввода данных нарисуем шапку будущей таблицы (см. пример)

После введения вычисляемой функции не забудьте о приращения шага.

Пример:

Writeln (― ―);

Readln ();

Writeln (―_____________________‖);

Writeln (―| x | y |‖); построение таблицы

Writeln (―_____________________‖);

х:=x+dx; приращение функции

Далее в решении задач для самостоятельного решения необходимо

воспользоваться примером, все остальные части программы уже знакомы Вам из

предыдущих работ .

Массивы

Одномерные массивы.

Необходимость в массивах возникает всякий раз, когда при решении задачи

приходится иметь дело с большим, но конечным количеством однотипных

упорядоченных данных.

Массив – это упорядоченный набор фиксированного количества некоторых

значений.

Формат описания массива

<имя массива>:array [<количество>] of <тип компонента>

<имя массива> - идентификатор массива

Array – массив

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

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

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ервис»

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

25

Рисунок 15 Блок-схема алгоритма создания массива

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

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

26

Двумерные массивы

Двумерным массивом (матрица) называется совокупность данных. Внешний

вид двумерного массива представлен на рисунке 16. Каждый элемент

характеризуется его местоположением (номером строки и номером столбца

(рисунок 17)

Рисунок 16 Двумерный массив

Рисунок 17 Характеристика элементов двумерного массива

Описание двумерного массива представлено на рисунке 18

Рисунок 18 Описание двумерного массива

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

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

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ервис»

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

28

Процедуры и функции

Алгоритм решения задачи проектируется путем разбиения всей задачи на

отдельные подзадачи. Обычно подзадачи реализуются в виде подпрограмм.

Подпрограмма - это отдельная функционально независимая часть

программы. Любая подпрограмма обладает той же структурой, которой обладает и

вся программа.

Подпрограммы решают три важные задачи:

1 избавляют от необходимости многократно повторять в тексте программы

аналогичные фрагменты;

2 улучшают структуру программы, облегчая ее понимание;

3 повышают устойчивость к ошибкам программирования и

непредвидимым последствиям при модификациях программы.

Вызов подпрограммы происходит при каждом употреблении ее имени в

основной (или вызывающей) программе. При вызове подпрограммы выполнение

основной программы приостанавливается, и управление передается в

подпрограмму, где выполняются команды, заданные в ней. Подпрограмма

завершается, если выполнены все ее процедуры до завершающего слова End или

по специальной команде выхода из подпрограммы Exit. По окончании работы

подпрограммы управление возвращается основной программе, иначе говоря, к

первой команде, следующей за обращением к этой подпрограмме.

В языке Pascal определяются два типа подпрограмм – процедуры (Procedure)

и функции (Function).

Любая программа может содержать несколько процедур и функций.

Структура любой подпрограммы аналогична структуре всей программы.

Подпрограмма должна быть описана до того, как будет использована в

программе или другой подпрограмме.

Процедуры и функции объявляются в разделе описания вслед за разделом

переменных.

Тогда общая структура программы выглядит так:

Рrogram hh;

Label; {описание меток}

Const; {описание констант}

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

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

29

Type; {описание типов}

Var; {описание переменных}

Procedure; {описание процедур}

Function; {описание функций}

Begin

. . .

. . .

end.

Выполнение программы начинается с операторов основной программы. При

необходимости вызывается подпрограмма и начинают действовать еѐ операторы.

Затем управление передаѐтся в основную программу, которая продолжает

выполняться.

Обращение к подпрограмме - переход к выполнению подпрограммы с

заданием информации, необходимой для ее выполнения и возврата.

Подпрограмма вызывается по своему имени с указанием необходимых

параметров.

ПРОЦЕДУРЫ

Структура процедуры имеет следующий вид:

Procedure <имя процедуры>{(формальные параметры : их тип)};

{Var

(локальные переменные)}

begin

. . .

end;

Процедура вызывается по имени:

<имя процедуры> {(фактические параметры)};

Процедура может быть с параметрами, а может быть без параметров.

Процедура-это поименованный составной оператор, где имя задается

служебным словом Procedure.

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

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

30

Связь процедуры другими операторами программы осуществляется через

переменные. Эти переменные используются как в программе, так и в процедуре, а

описаны в самой программе. Такие переменные называются глобальными.

Глобальными переменными называются переменные, которые описаны в

самой программе, а используются как в программе так и в процедуре (функции).

Глобальные переменные, которые не были инициализированы явным

образом, перед началом выполнения программы обнуляются. Время жизни

глобальных переменных - с начала программы и до ее завершения. Глобальные

переменные доступны в любом месте программы или подпрограммы, кроме тех

подпрограмм, в которых описаны локальные переменные с такими же именами.

Локальными переменными называются переменные, описанные внутри

процедуры (функции) и используемые только внутри процедуры (функции).

Формальными параметрами называются переменные описанные в заголовке

программы и используемые только внутри процедуры (функции).

Формальные параметры указывают, с какими параметрами следует

обращаться к этой процедуре (функции), т.е. их количество, последовательность,

тип. Они задаются в заголовке процедуры (функции) в виде списка параметров,

разбитого на группы (секции) однотипных параметров, разделенных ‗;‘. Порядок

следования групп (секций) произвольный.

Для каждого формального параметра следует указать имя и тип. Имена

параметров могут быть любыми, они могут совпадать с глобальными именами

программы. Необходимо лишь помнить, что в этом случае параметр основной

программы с таким именем становится недоступным для непосредственного

использования подпрограммой. Но формальные имена не могут совпадать с

локальными переменными, т.к. они располагаются в одном стековом сегменте

памяти. Тип формального параметра может быть практически любым, однако в

заголовке процедуры (функции) нельзя вводить новый тип.

Рассмотрим пример: необходимо создать 3 массива случайных чисел,

создать массив суммы всех элементов и организовать вывод всех массивов в виде

таблицы.

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

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

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ервис»

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

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ервис»

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

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ервис»

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

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ервис»

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

35

• передать в качестве параметра в процедуру или функцию.

Из этого следуют отличия в структуре функции, т.е. надо знать тип

возвращаемого функцией результата и должен быть указан механизм возвращения

этого результата.

Структура функции имеет следующий вид:

Function <имя функции>{(формальные параметры : их тип)}: <тип

функции>;

{Var

(локальные переменные)}

begin

. . .

<имя функции>: =<выражение>

end;

где:

тип функции – простой порядковый тип, исключение - тип string. Если тип

не стандартный, то его надо предварительно описать в разделе Type программы.

<имя функции>: =<выражение> - оператор, который осуществляет механизм

возврата значения.

В остальном структура функции полностью повторяет структуру

процедуры. Она так же может быть с параметрами, а может быть без параметров.

Функция - это поименованный составной оператор, возвращающий

единственное значение, имя которой задается служебным словом Function.

Рассмотрим пример использования функции: посчитать сумму факториалов

чисел, введенных с клавиатуры. Из условия задачи видно, что целесообразно

написать функцию вычисления факториала числа.

Блок-схема алгоритма программы приведена на рисунке 20:

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

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

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ервис»

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

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ервис»

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

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ервис»

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

39

Рисунок 21 Блок-схема программы

Пишем код программы, используя блок-схему: пояснений мы решили

приводить не для каждой строки, т.к., в процессе изучения TP, вы уже усвоили

основные моменты в написании программного кода.

uses crt; используем модуль СRT

var x,dx,y:real; описываем переменные, которые будут использованы

i,kn:integer;

begin

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

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

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ервис»

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

41

образом удается обеспечить почти полную независимость программ от типа

установленного видеоадаптера.

Для работы в графическом режиме программа должна выполнить его

инициализацию. Инициализация графического режима выполняется с помощью

вызова библиотечной процедуры InitGraph(var GraphDriver, GraphMode :integer;

PathToDriver : string), которая отыскивает на диске указанный в вызове драйвер,

загружает его в память и подготавливает экран к работе в графическом режиме.

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

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

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ервис»

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

43

ОГЛАВЛЕНИЕ

Введение …………………………………………………………………………. 3

Запуск системы Турбо Паскаль ……………………………………………….. 4

Основные клавиши и функции …………………………………………………. 5

Сохранение программы …………………………………………………………. 6

Написание конструкций языка …………………………………………………. 10

Написание программ с использованием разветвляющихся и циклических

алгоритмов ……………………………………………………………………… 14

Табулирование функций…………………………………………………………. 21

Массивы ………………………………………………………………………….. 22

Процедуры и функции …………………………………………………………... 27

Модуль CRT …………………………………………………………………….. 36

Модуль GRAPH …………………………………………………………………………………………….. 39

СПИСОК ЛИТЕРАТУРЫ ……………………………………………………… 41

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»