- •ПРЕДИСЛОВИЕ
- •1.1. История и классификация языков программирования высокого уровня
- •1.2. Первое (знакомство с Паскалем
- •Задания
- •Лекция 2
- •2.1. Некоторые сведения о системе ТУрбо-Паскаль
- •2.2. Способы описания языка программирования
- •Лекция 3
- •3.2. Типы данных
- •4.1. Структура Паскаль-программы
- •4.2. Арифметические операции, функции, выражения Арифметический оператор присваивания
- •Форматы процедуры write
- •Задания
- •1. Что будет напечатано программой
- •если последовательно вводятся три числа: 36, -6, 2345?
- •5.2. Функции, связывающие различные типы данных
- •Задания
- •Теперь посмотрим, как это программируется наТЛаскале.
- •Здесь
- •<параметр цикла>::= <имя простой переменной порядкового типа>
- •Задания
- •7.1. Подпрограммы-процедуры
- •7.2. Подпрограммы-функции
- •7.4. Рекурсивные подпрограммы
- •8.1. Что такое рекуррентная последовательность
- •8.2. Программирование вычислений рекуррентных последовательностей
- •Задания
- •Задания
- •6. Вывод результата.
- •Теперь будем составлять подпрограммы.
- •Задания
- •12.2. Операции над множествами
- •12.3. Примеры использования множеств
- •Красивая программа! К сожалению, ею нельзя воспользоваться для
- •В этой программе использована функция определений размера файла:
- •.Fiiesize(<HMH файловой переменной>);
- •Задания
- •14.2. Работа с файлами записей
- •Задания
- •15.2. Связанные списки
- •Лекция 16
- •16.1. Организация внешних подпрограмм
- •16,2. Создание и использование модулей
- •распечаткой текста программы с подробными комментариями.
- •выполнения следующих операции над обыкновенными дробями вида -q
- •(Р — целое, Q — натуральное):
- •1) сложение;
- •2) вычитание;
- •3) умножение;
- •4) деление;
- •5) сокращение дроби;
- •7) функции, реализующие операции отношения (равно, не равно,
- •Используя этот модуль, решить задачи:
- •При разработке модуля рекомендуется такая последовательность
- •Задания
- •Приведем текст программы целиком.
- •ЗАДАНИЯ ПО ТЕМЕ “ЛИНЕЙНЫЕ АЛГОРИТМЫ”
- •ЦЕЛОЧИСЛЕННАЯ АРИФМЕТИКА
- •Сортировка массивов
- •ЗАДАЧИ ПО ТЕМЕ “ОБРАБОТКА СТРОК”
- •ЗАДАНИЯ ПО ТЕМЕ “МОДУЛИ”
- •ЗАДАНИЯ ПО ТЕМЕ “ДИНАМИЧЕСКИЕ ПЕРЕМЕННЫЕ”
- •Задачи, предлагавшиеся на школьных олимпиадах по программированию (Пермская область)
- •Учебное издание
Приведем текст программы целиком.
Program DlUmn; |
|||
Uses Strings; |
|||
Const |
NMax |
** 2000; |
|
Type Digit = 0..9; |
|||
DIChislo = Array[1..Nraax] Of Digit; |
|||
Stroka = Array[0..NMax] Of Char; |
|||
Var S |
Stroka; |
||
M, |
N, R |
DIChislo; |
|
{Процедура |
|
обнуления длинного числа} |
|
Procedure |
Zero(Var A DIChislo); |
||
Var I |
Integer; |
||
Begin |
|
:= 1 To NMax Do |
|
For I |
|||
|
A [I] |
:= 0; |
End;
{Фунхция определения количества цифр в записи длинного чисп}
Function Dlina(C |
DIChislo) |
Integer; |
|||
Var I |
Integer; |
|
|
||
Begin |
:* NMax; |
|
|
|
|
I |
1) |
And (С[I] |
= 0) Do |
||
While |
(I > |
||||
I |
|
I - |
1; |
|
|
Dlina |
:* I |
|
|
|
|
End; |
|
|
|
|
|
{Процедура печати длинного числа} |
|||||
PROCEDURE Print(A |
DIChislo); |
||||
Var I |
Integer; |
|
|
||
Begin |
I := Dlina(A) DovnTo |
1 Do |
|||
For |
|||||
Write(A[I] |
|
1); |
|
||
WriteLn |
|
|
|
|
End;
{Процедура преобразования длинного числа в массив цифр}
PROCEDURE Translate(S |
Stroka; Var A |
DIChislo); |
|||||
Var I, |
Code |
Integer; |
|
|
|
||
Begin |
Zero(A); |
|
|
|
|
|
|
|
|
|
|
|
0 Do |
||
|
For I |
:= StrLen(S) - 1 DownTo |
|||||
Val(S[I], |
A[StrLen(S) |
I], |
Code); |
|
|||
End; |
|
|
|
|
В |
DIChislo; Var C DIChislo); |
|
PROCEDURE Multiplication^, |
|||||||
Var I, |
J, VspRez |
Integer; |
|
|
|
||
P |
Digit; |
|
|
|
|
|
|
Begin |
Zero(C); |
|
|
|
|
|
|
|
|
Dlina(A) |
Do |
|
|||
|
For I |
:= 1 To |
|
Библиографический список
Абрамов В.Г., Трифонов Н.П., Трифонова Г.Н. Введение в язык Паскаль. М.: Наука, 1988.
Вирт Н. Алгоритмы и структуры данных. М.: Мир, 1989. Г^огоно П. Программирование на языке Паскаль. М.: Мир, 1982.
Дагене В.А., Г]ригас Г.К., Аугутис К.Ф. 100 задач по программированию. М.: Просвещение, 1993.
Епашников А.М., Епашников В.А. Программирование в среде Turbo-Pascal 7.0. М.: МИФИ, 1994.
Залогова Л.А., Русаков С.В., Семакин И.Г., Хеннер Е.К., Шестакова Л.В. Основы информатики и вычислительной техники в базовой школе: Пособие для учителя. Пермь, 1995.
Йенсен К., Вирт Н. Паскаль — руководство для пользователей и описание языка. М.: Мир, 1982.
Пильщиков В.Н. Сборник упражнений по языку Паскаль. М.: Наука, 1989. Семакин И.Г. Информатика. Беседы об информации, компьютерах и програм
мах. Часть 2. Из-во Перм. ун-та, Пермь, 1997.
|
|
Таблица 1. Константы режимов работы |
|
Имя константы Номер режима |
|
Режим |
|
BW40 |
0 |
Черно-белый, 40 символов, 25 строк |
|
С040 |
1 |
Цветной, 40 х 25 |
|
BW80 |
2 |
Черно-белый, 80 х 25 |
|
СО80 |
3 |
Цветной, 80 х 25 |
|
Mono |
7 |
Монохромный, 80 х 25 |
|
|
|
для монохромных дисплеев |
|
|
|
|
Таблица 2. Константы цветов |
Имя константы |
Номер цвета |
Цвет |
|
Black |
0 |
|
Черный |
Blue |
1 |
|
ТЫно-синий |
Green |
2 |
|
Темно-зеленый |
Cyan |
3 |
|
Бирюзовый |
Red |
4 |
|
Красный |
Magenta |
5 |
|
Фиолетовый |
Brown |
6 |
|
Коричневый |
LightGray |
7 |
|
Светло-серый |
DarkGray |
8 |
|
Темно-серый |
LightBlue |
9 |
|
Синий |
LightGreen |
10 |
|
Светло-зеленый |
LightCyan |
11 |
|
Светло-бирюзовый |
LightRed |
12 |
|
Розовый |
LightMagenta |
13 |
|
Малиновый |
Yellow |
14 |
|
Желтый |
White |
15 |
|
Белый |
Blink |
128 |
|
Мерцание символа |
Таблица 3. Процедуры и функции модуля CRT
Назначение
Процедуры задания режимов работы
Задание текстового режима
Процедуры управления цветом
Задание высокой яркости символов Задание малой яркости символов Задание исходной яркости символов Задание цвета фона Задание цвета символов
Процедуры работы с экраном
Удаление символа от курсора до конца строки Очистка экрана Удаление строки, в которой находится курсор
Перемещение курсора в заданную позицию Добавление пустой строки на экране Задание размеров окна
Функции работы с экраном
Текущая координата X курсора
Текущая координата Y курсора
Функции работы с клавиатурой
Проверка нажатия клавиши Чтение символа с клавиатуры
Процедуры управления звуком
Включение звука Отключение звука
Процедуры разнообразного назначения
Задержка выполнения программы
Связь текстового файла с устройством CRT
Таблица 1. Коды драйверов графических устройств
Имя |
|
Значение |
|
Назначение |
|
Detect |
|
0 |
Автоматический выбор драйвера |
||
CGA |
|
1 |
|
|
|
MCGA |
|
2 |
|
|
|
EGA |
|
3 |
|
|
|
EGA64 |
|
4 |
|
|
|
EGAMono |
|
5 |
|
|
|
IBM8514 |
|
6 |
|
|
|
HercMono |
|
7 |
|
|
|
ATT400 |
|
8 |
|
|
|
VGA |
|
9 |
|
|
|
PC3270 |
|
10 |
|
|
|
CurrentDriver |
-128 |
Текущий драйвер |
|
||
|
|
Таблица. 2. Константы графических режимов |
|||
Имя |
Значение Размер поля |
Палитра |
Число страниц |
||
АТТ400С0 |
|
0 |
320 х 200 |
СО |
1 |
АТТ400С1 |
|
1 |
320 х 200 |
С1 |
1 |
АТТ400С2 |
|
2 |
320 х 200 |
С2 |
1 |
АТТ400СЗ |
|
3 |
320 х 200 |
СЗ |
1 |
ATT400Med |
|
4 |
640 х 200 |
2 цвета |
1 |
АТТ400Ш |
|
5 |
640 х 400 |
2 цвета |
1 |
CGAC0 |
|
0 |
320 х 200 |
СО |
1 |
CGAC1 |
|
1 |
320 х 200 |
С1 |
1 |
CGAC2 |
|
2 |
320 х 200 |
С2 |
1 |
CGAC3 |
|
3 |
320 х 200 |
СЗ |
1 |
CGACHi |
|
4 |
640 х 200 |
2 цвета |
1 |
Имя константы |
Номер цвета |
Black |
0 |
Blue |
1 |
Green |
2 |
Cyan |
3 |
Red |
4 |
Magenta |
5 |
Brown |
6 |
LightGray |
7 |
DarkGray |
8 |
LightBlue |
9 |
LightGreen |
10 |
LightCyan |
11 |
LightRed |
12 |
LightMagenta |
13 |
Yellow |
14 |
White |
15 |
Цвет
Черный Темно-синий Темно-зеленый Бирюзовый Красный Фиолетовый Коричневый Светло-серый Темно-серый Синий Светло-зеленый Светло-бирюзовый Розовый Малиновый Желтый Белый
|
Таблица 4. Коды линий |
Имя |
Значение Назначение |
Коды типов линий (для процедуры SetLineStyle)
SolidLn |
0 |
Сплошная |
DottedLn |
1 |
Пунктирная |
CenterLn |
2 |
Штрихпунктирная |
DashedLn |
3 |
Штриховая |
UserBitLn |
4 |
Заданная пользователем |
|
Коды толщины линии |
|
NormWidth |
1 |
Нормальная |
ThickWidth |
3 |
Толстая |
Таблица 5. Константы орнамента заполнения (для процедуры SetF illStyle)
Имя |
Значение Назначение |
|
EmptyFiU |
0 |
Заполнение цветом фона |
SolidFill |
1 |
Однородное заполнение цветом |
LineFill |
2 |
Заполнение |
LtSlashFill |
3 |
Заполнение / / / |
SlashFill |
4 |
Заполнение / / / толстыми линиями |
BkSlashFill |
5 |
Заполнение \\\ толстыми линиями |
LtBkSlashFill |
6 |
Заполнение \\\ |
HatchFill |
7 |
Заполнение клеткой |
XHatchFill |
8 |
Заполнение косой клеткой |
InterleaveFill |
9 |
Заполнение частой клеткой |
WideDotFill |
10 |
Заполнение редкими точками |
CloseDotFill |
11 |
Заполнение частыми точками |
UserFin |
12 |
Определяется пользователем |
|
|
Таблица 6. Процедуры и функции |
Имя |
|
Назначение |
|
Процедуры управления графическим режимом |
|
CloseGraph |
Прекращение работы графического режима |
|
DetectGraph |
Проверка оборудования и режима |
|
GetModeRange |
Получение минимального и максимального номера |
|
|
|
графического режима |
GraphDefaults |
Сброс параметров графического режима |
|
InitGraph |
|
Инициализация графического режима |
RestoreCrtMode |
Возвращение в текстовый режим |
|
SetGraphBufSize |
Изменение размера графического буфера |
|
SetGraphMode |
Вход в графический режим и очистка экрана |
Функции управления графическим режимом
GetGraphMode |
Получение номера текущего графического режима |
GetMaxMode |
Максимальное число режимов текущего драйвера |
GetModeName |
Получение имени заданного графического режима |
GraphErrorMsg |
Формирование сообщения об ошибке |
GraphResult |
Получение кода ошибки |
GetDriverName |
Получение имени текущего драйвера |
InstallUserDriver |
Размещение драйвера в таблице |
InstallUserFont |
Установка нового шрифта |
RegisterBGIdriver |
Регистрация драйвера |
RegisterBGIfont |
Регистрация шрифта |
Процедуры управления экраном, окном, страницей |
|
ClearDevise |
Очистка графического экрана |
ClearViewPort |
Очистка графического окна |
GetAspectRatio |
Получение относительного масштаба изображения |
|
по горизонтали и вертикали |
GetViewSettings |
Получение параметров текущего графического окна |
SetActivePage |
Задание активной страницы |
SetAspectRatio |
Изменение относительного масштаба изображения |
|
по горизонтали и вертикали |
SetViewPort |
Задание размеров окна |
SetVisualPage |
Задание отображаемой на экране страницы |
Процедуры управления цветом и палитрой |
|
GetDefaultPalette |
Получение исходных параметров палитры |
GetPalette |
Получение параметров палитры |
SetAllPalette |
Задание всех цветов палитры |
SetBkColor |
Задание цвета фона экрана |
SetColor |
Задание текущего цвета |
SetPalette |
Задание одного цвета палитры |
SetRGBPalette |
Задание палитры для адаптеров IBM-8514 и VGA |
Функции управления цветом и палитрой
Получение цвета фона Получение текущего цвета
Получение максимального кода цвета Получение количества цветов в палитре
Функции работы с точками
Получение максимального значения координаты X Получение максимального значения координаты Y Получение цвета пикселя Активной страницы Получение координаты К текущей позиции на экране Получение координаты Y текущей позиции на экране
Процедуры работы с точками
Помещение пикселя в активную страницу
Процедуры работы с линиями
Получение параметров линии Построение линии от одной точки до другой
Построение линии с относительными координатами Построение линии с абсолютными координатами Перемещение указателя в точку с относительными координатами Перемещение указателя в точку с абсолютными координатами
Задание характеристик линии Задание способа построения линии
Процедуры построения фигур из линий
Построение закрашенного прямоугольника Построение закрашенного параллелепипеда Построение многоугольника Построение закрашенного многоугольника
Заполнение области текущим орнаментом
Получение орнамента заполнения фигур Получение параметров заполнения фигур Построение прямоугольника
Задание произвольных параметров заполнения фигур Задание стандартных параметров заполнения фигур
Процедуры построения криволинейных фигур
Построение дуги окружности Построение окружности Построение дуги эллипса Построение закрашенного эллипса Получение координат последней дуги
Построение закрашенного сектора круга Построение закрашенного сектора эллипса
Процедуры работы с текстом
Получение характеристик текста Вывод последовательности символов Вывод последовательности символов, начиная с заданных координат Задание способа выравнивания текста
Задание типа, начертания шрифта и коэффициента увеличения символов Задание высоты и ширины символов
Функции работы с текстом
Получение высоты строки в пикселях
Ширина строки в пикселях
Процедуры обмена с памятью Сохранение изображения в буфере Вывод изображения из буфера на экран
Функции обмена с памятью
Получение размера требуемой для изображения памяти
Приложение III Задачи по программированию
Перед Вами сборник задач, предназначенный для начального курса програм мирования на языке Pascal (хотя он может быть использован и при обучении другому языку программирования).
Задачи систематизированы по конструкциям языка, охватывают 16 тем и сгруппированы в разделы. Нумерация упражнений в каждом разделе начинается с 1.
Кроме того, задачи в некоторых разделах дифференцированы по трудности на три уровня:
А — содержит простые задачи, решение которых сводится к типовым алго ритмам;
В — содержит более сложные задачи, требующие сочетания типовых алго ритмов и в некоторой степени творческого подхода;
С — содержит задачи, рекомендованные для более подготовленных учащихся. Сборник составлен с учетом опыта проведения практических и лаборатор ных занятий по программированию на математическом факультете Пермского государственного педагогического университета. Использованы также задачи из сборников, приведенных в списке литературы. Раздел “Задания по теме
“Модули” содержит только авторские разработки.
Составители сборника выражают благодарность преподавателям кафедры информатики и вычислительной техники Пермского государственного педагоги ческого университета за полезные советы и помощь при подготовке сборника.
В конце сборника представлены задачи районных и областных туров олим пиад школьников по программированию, проводившихся в Пермской области в 1986-1997 гг. В данном учебном издании содержатся в основном авторские за дачи. Назовем некоторых авторов задач: В.П. Гладков, Е.А. Еремин, А.А. Сайдашев, И.Г. Семакин, М.И. Федотов, А.Г. Деменев, И.В. Каганов, А.П. Шестаков, Л.В. Пономарева, М.А. Южаков. Олимпиадные задачи могут быть использованы при подготовке школьников и студентов к соревнованиям по про граммированию.