Методичка Паскаль
.pdfМинистерство образования и науки РФ Федеральное агентство по образованию
Государственное образовательное учреждение высшего профессионального образования «Уральский государственный педагогический университет»
Институт математики, информатики и информационных технологий Кафедра информатики, информационных технологий и методики обучения информатике
А.И. Газейкина
Основы структурного программирования на языке Паскаль
Учебно-методическое пособие
Екатеринбург – 2014
УДК 681.142.1 (075.8) ББК З973.2-018я7 Г 13
Печатается по решению кафедры информатики и ВТ протокол № 6 от 07.02.06
Рецензенты:
И.В. Рожина, кандидат педагогических наук, доцент (Нижне-Тагильская государственная социально-педагогическая академия), М.В. Лапенок, кандидат технических наук, доцент (Уральский государственный педагогический университет).
Газейкина А.И.
Основы структурного программирования на языке Паскаль: Учебнометодическое пособие / Урал. гос. пед. ун-т. – Екатеринбург, 2006. – с.
Г 13
Учебно-методическое пособие освещает основные вопросы технологии структурного программирования на языке Паскаль, признанном лучшим языком для обучения программированию. Пособие содержит большое количество готовых программ с подробными комментариями, а также контрольные задания для самостоятельного решения.
Пособие предназначено для студентов, изучающих курс программирования, учителей школ.
Газейкина А.И., 2006
Содержание |
|
Тема 1. Линейные программы ............................................................................... |
5 |
Краткое изложение теоретического материала................................................ |
5 |
Примеры решаемых задач................................................................................... |
8 |
Контрольные задания........................................................................................ |
10 |
Тема 2. Разветвляющиеся программы................................................................. |
12 |
Краткое изложение теоретического материала.............................................. |
12 |
Примеры решаемых задач................................................................................. |
14 |
Контрольные задания........................................................................................ |
16 |
Тема 3. Циклические программы ........................................................................ |
18 |
Краткое изложение теоретического материала.............................................. |
18 |
Примеры решаемых задач................................................................................. |
20 |
Контрольные задания........................................................................................ |
26 |
Тема 4. Обработка данных строкового типа ...................................................... |
30 |
Краткое изложение теоретического материала.............................................. |
30 |
Примеры решаемых задач................................................................................. |
32 |
Контрольные задания........................................................................................ |
37 |
Тема 5. Система типов языка Паскаль................................................................ |
39 |
Краткое изложение теоретического материала.............................................. |
39 |
Тема 6. Перечисляемый тип................................................................................. |
40 |
Краткое изложение теоретического материала. ............................................. |
40 |
Тема 7. Тип-диапазон............................................................................................ |
41 |
Краткое изложение теоретического материала. ............................................. |
41 |
Тема 8. Множество (множественный тип) ......................................................... |
42 |
Краткое изложение теоретического материала.............................................. |
42 |
Примеры решаемых задач................................................................................. |
43 |
Контрольные задания........................................................................................ |
44 |
Тема 9. Массивы в языке Паскаль....................................................................... |
46 |
Краткое изложение теоретического материала.............................................. |
46 |
Примеры решаемых задач................................................................................. |
51 |
Контрольные задания........................................................................................ |
55 |
Тема 10. Графика в языке Паскаль...................................................................... |
58 |
Краткое изложение теоретического материала.............................................. |
58 |
Контрольные задания........................................................................................ |
60 |
Тема 11. Подпрограммы в языке Паскаль .......................................................... |
63 |
Краткое изложение теоретического материала.............................................. |
63 |
Примеры решаемых задач................................................................................. |
66 |
Контрольные задания........................................................................................ |
68 |
Тема 12. Тип данных запись (Record) ................................................................. |
69 |
Краткое изложение теоретического материала.............................................. |
69 |
Примеры решаемых задач................................................................................. |
70 |
Контрольные задания........................................................................................ |
72 |
Тема 13. Работа с файлами в языке Паскаль...................................................... |
74 |
Краткое изложение теоретического материала.............................................. |
74 |
3 |
|
Текстовые файлы............................................................................................ |
75 |
Примеры решаемых задач............................................................................. |
77 |
Типизированные файлы................................................................................. |
82 |
Примеры решаемых задач............................................................................. |
84 |
Контрольные задания........................................................................................ |
88 |
Тема 14. Динамические переменные в языке Паскаль...................................... |
90 |
Краткое изложение теоретического материала.............................................. |
90 |
Примеры решаемых задач............................................................................. |
95 |
Контрольные задания........................................................................................ |
96 |
Список литературы ............................................................................................... |
98 |
4
Тема 1. Линейные программы
Краткое изложение теоретического материала
Программа на языке Паскаль имеет следующую структуру:
Program <имя>; |
{заголовок программы } |
<блок описаний>; |
{ описание данных (модулей, констант, типов, пе- |
|
ременных, процедур и функций) } |
begin |
{ начало исполняемой части программы } |
<оператор 1>; |
{ исполняемая часть – тело программы } |
<оператор 2>; |
|
… |
|
<оператор N> |
|
end. |
{ конец программы } |
В фигурные скобки заключаются комментарии к программе – это по-
ясняющий текст произвольного содержания. Комментарии не обрабатывают-
ся транслятором.
Имя программы является идентификатором. Идентификатор может состоять из латинских букв, цифр и символа ‘_’ (подчеркивание) и начинать-
ся не с цифры.
В блоке описаний описываются:
1.) модули, используемые программой:
Uses <имя модуля>;
2.) константы (данные, не изменяющиеся в ходе исполнения про-
граммы):
Const <имя>=<значение>;
3.) типы данных, конструируемые программистом:
Type <имя типа>=<описание>;
4.) переменные (данные, которые могут изменяться в ходе исполнения программы):
Var <имя переменной>:<тип>;
5
Тип может быть стандартным, а также сконструированным и описан-
ным в разделе описания типов.
Базовые стандартные типы:
-Integer – целочисленный тип;
-Real – вещественный тип (действительные числа);
-Char – символьный тип;
-Boolean – логический тип (данные этого типа принимают только два значения: True ( истина) и False (ложь));
-String – строковый тип.
5.) процедуры и функции, определяемые программистом:
Procedure <описание процедуры>;
Function <описание функции>;
Исполняемая часть программы представляет собой составной опера-
тор – несколько операторов языка, заключенных в операторные скобки –
Begin и End.
Все операторы языка можно условно разделить на команды и конст-
рукции.
Команда (оператор) присваивания:
<имя переменной> := <выражение>;
Сначала будет вычислено значение выражения, которое затем будет записано в переменную с указанным именем. В записи выражения могут быть использованы константы, переменные, знаки операций, стандартные (и
определенные программистом) функции, а также скобки.
Например: X:=10; - в переменную Х будет записано число 10; Y:=X+6; - в переменную Y будет записано число 16; Y:=Y+1; - в переменную Y будет записано число 17 (число
16 будет стерто из памяти).
Для обработки вещественных чисел в языке Турбо Паскаль предусмот-
рены следующие операции: + (сложение), – (вычитание), * (умножение), /
6
(деление). Для обработки целых чисел: + (сложение), – (вычитание), * (ум-
ножение), div (целочисленное деление), mod (остаток от деления нацело).
Наиболее часто используемые стандартные функции перечислены в Таблице 1. Аргумент функции (константа, переменная или выражение) при ее вызове заключается в круглые скобки.
Таблица 1
Некоторые стандартные функции языка Турбо Паскаль
Имя функции |
Описание функции |
|
|
|
|
Abs (x) |
Модуль (абсолютная величина) числа x |
|
|
|
|
Sqrt (x) |
Извлечение квадратного корня из числа x |
|
|
|
|
Sqr (x) |
Возведение числа x в квадрат (во вторую степень) |
|
|
|
|
Exp (x) |
Экспонента числа x (т.е. ex) |
|
|
|
|
Sin (x) |
Синус угла x (значение угла должно быть представлено в |
|
радианах) |
||
|
||
|
|
|
Cos (x) |
Косинус угла x (значение угла должно быть представле- |
|
но в радианах) |
||
|
||
|
|
|
Arctan (x) |
Арктангенс числа x |
|
|
|
|
Ln (x) |
Натуральный логарифм числа x |
|
|
|
|
|
Датчик случайных чисел – возвращает случайное число |
|
Random (x) |
из интервала от 0 до x-1. Инициализация датчика слу- |
|
чайных чисел выполняется командой Randomize (стан- |
||
|
||
|
дартная процедура). |
|
|
|
|
Round (x) |
Округление вещественного числа x до целого |
|
|
|
|
Trunc (x) |
Целая часть вещественного числа x |
|
|
|
|
Frac (x) |
Дробная часть вещественного числа x |
|
|
|
Команда (оператор) вывода:
Write (<список вывода>);
Выводит информацию на экран. Элементами списка вывода могут быть константы и выражения (на экран будут выведены их значения). Элементы списка вывода разделяются запятыми.
7
Writeln (<список вывода>);
Выводит информацию на экран, после чего переводит курсор в начало следующей строки (т.е. выводит специальный символ «конец строки»).
Команда (оператор) ввода:
Readln (<имя переменной>);
Приостанавливает работу программы и ожидает ввода данных с кла-
виатуры. После набора данных и нажатия клавиши <Enter> производится проверка соответствия типов введенных данных и указанной переменной.
Если их типы совпадают, данные записываются в переменную с указанным именем.
Если необходимо ввести значения нескольких переменных, их имена можно перечислить через запятую.
Линейной называется программа, в которой все команды выполняются последовательно, одна за другой, причем каждая команда выполнится ровно один раз.
Примеры решаемых задач Пример 1. Составить программу, которая вычислит площадь и пери-
метр прямоугольного треугольника, если известны его катеты.
Составим модель данной задачи. Исходными данными являются длины катетов A и B. Это числа (могут быть как целыми, так и вещественными). Ре-
зультат: площадь S и периметр P (действительные числа). Для вычисления периметра необходимо предварительно вычислить длину гипотенузы C (дей-
ствительное число).
Алгоритм решения: ввод исходных данных, необходимые вычисления,
вывод результатов на экран.
Программа:
Program Triangle; {Заголовок программы}
Uses Crt; {Подключение модуля CRT}
Var A, B : Integer; {Описание всех переменных}
8
S, P, C : Real;
Begin { Начало исполняемой части программы }
Clrscr; { Очистка экрана }
Write(‘Введите длину 1-го катета’); { Ввод исходных данных }
Readln (A);
Write(‘Введите длину 2-го катета’);
Readln (B);
C:=Sqrt (Sqr (A)+Sqr (B)); { Вычисление длины гипотенузы }
S:=A*B/2; { Вычисление площади треугольника }
P:=A+B+C; { Вычисление периметра }
Writeln (‘Площадь ’, S:7:2); { Вывод результатов на экран }
Writeln (‘Периметр ’, P:7:2); { (:7:2 – формат вывода – 7 позиций на эк-
ране будет отведено на вывод всего числа, 2 позиции – на вывод его дроб-
ной части)}
Readln { Задержка программы до нажатия клавиши <Enter> }
End.
Пример 2. Составить программу, которая вычислит сумму цифр вве-
денного четырехзначного целого числа.
Составим модель данной задачи. Исходными данными является целое число A. Результат: сумма цифр S. Для вычисления сумы цифр необходимо сначала выделить четыре цифры введенного числа: первая цифра – количест-
во тысяч (результат деления числа на 1000 нацело), последняя цифра вычис-
ляется как остаток от деления введенного числа на 10 и т.п.
Алгоритм решения: ввод исходных данных, необходимые вычисления,
вывод результатов на экран.
Программа:
Program Digits;
Uses Crt;
Var A, D1,D2,D3,D4,S : Integer;
9
Begin |
{Начало исполняемой части про- |
|
граммы} |
Clrscr; |
{Очистка экрана} |
Write (‘Введите 4-значное число’); |
|
Readln (A); |
{Ввод исходного числа} |
D1:=A div 1000; |
{Вычисление первой цифры} |
D2:=A div 100 mod 10; |
{Вычисление второй цифры} |
D3:=A div 10 mod 10; |
{Вычисление третьей цифры} |
D4:=A mod 10; |
{Вычисление четвертой цифры} |
S:=D1+D2+D3+D4; |
{Вычисление суммы цифр} |
Writeln (‘Сумма цифр числа ’, S); |
{Вывод результата на экран} |
Readln |
{Задержка до нажатия <Enter>} |
End. |
{Конец программы} |
Контрольные задания
1.1.Составить программу, которая вычислит длину окружности и площадь круга заданного радиуса.
1.2.Составить программу, которая вводит трехзначное число и выво-
дит число-перевертыш (т.е. число, полученное из введенного перестановкой цифр слева направо).
1.3.Составить программу вычисления площади треугольника, задан-
ного |
|
длинами |
своих |
|
сторон |
|
(по |
формуле |
Герона |
|||
|
|
|
|
, где p = |
a + b + c |
). |
|
|
||||
S = |
|
p( p − a)( p − b)( p − c) |
|
|
||||||||
|
|
|
|
|
||||||||
|
|
|
|
|
|
2 |
|
|
|
|
||
|
1.4. Составить программу вычисления площади треугольника, задан- |
|||||||||||
ного |
|
координатами |
своих вершин на |
плоскости |
(по формуле |
Герона |
||||||
|
|
|
, где p = |
a + b + c |
). |
|
|
|||||
S = |
|
p( p − a)( p − b)( p − c) |
|
|
||||||||
|
|
|
|
|||||||||
|
|
|
|
|
|
2 |
|
|
|
|
||
|
1.5. Составить программу, |
которая поменяет местами значения двух |
переменных:
10