- •ПРЕДИСЛОВИЕ
- •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) функции, реализующие операции отношения (равно, не равно,
- •Используя этот модуль, решить задачи:
- •При разработке модуля рекомендуется такая последовательность
- •Задания
- •Приведем текст программы целиком.
- •ЗАДАНИЯ ПО ТЕМЕ “ЛИНЕЙНЫЕ АЛГОРИТМЫ”
- •ЦЕЛОЧИСЛЕННАЯ АРИФМЕТИКА
- •Сортировка массивов
- •ЗАДАЧИ ПО ТЕМЕ “ОБРАБОТКА СТРОК”
- •ЗАДАНИЯ ПО ТЕМЕ “МОДУЛИ”
- •ЗАДАНИЯ ПО ТЕМЕ “ДИНАМИЧЕСКИЕ ПЕРЕМЕННЫЕ”
- •Задачи, предлагавшиеся на школьных олимпиадах по программированию (Пермская область)
- •Учебное издание
S |
Array[1981..1990]; |
|
|
|||
I, |
J, К |
Integer; |
|
|
||
Begin {__________ Ввод данных |
с клавиатуры____________ } |
|||||
For I :=1981 To 1990 Do |
|
|
||||
For J:=1 To 12 Do |
|
|
||||
|
Begin |
|
|
|
|
|
|
Write(J |
2, |
>.\ I |
4,»: O; |
|
|
|
ReadLn(H[I, J]) |
|
|
|||
|
End; |
|
|
|
|
|
{_Вычисление вектора средних летних температур_} |
||||||
For I := 1981 То 1990 Do |
|
|||||
Begin |
|
|
|
|
|
|
|
S[I] |
:= 0; |
|
|
|
|
|
For J := 6 To 8 Do |
|
|
|||
|
S[I] |
:« S[I] |
+ HCI, |
Я ; |
|
|
|
SCI] |
:» SCI] |
/ 3 |
|
|
|
|
End; |
|
|
|
|
|
{_____ Определение года с самым теплым петом____ } |
||||||
К |
:= 1981; |
|
|
|
|
|
For I :=* 1982 То 1990 Do |
|
|||||
|
If S[I] |
> S[K] |
|
|
||
|
Then К :* I; |
теплое лето было в |
К, '-м году*) |
|||
WriteLn(>Самое |
||||||
End. |
|
|
|
|
|
|
Задания
1. Дан вектор {г,}, г = 1,..., 50. Вычислить длину этого вектора:
L = yjz\ 4- z\ Н------ |
Ь ^5Q. |
2. Вычислить полином 10-й степени по формуле Горнера: |
Gio^10+ а9я9Н-------b aix + а0= ((... (аюя + а9)я + а8)я Н-------Ь а{)х + а0.
3.Для вектора {я,-}, г = 1,..., 20 подсчитать количество компонент, значения которых лежат в интервале [0, 1].
4.Даны два вектора {я*}, {у*}, г = 1, ..., 10, упорядоченные по воз растанию. Слить их в один вектор {г,-}, г = 1,..., 20 так, чтобы сохра нилась упорядоченность.
5.Дан массив, состоящий из 100 целых чисел.
а) вывести все числа, которые встречаются в этом массиве не сколько раз;
б) вывести все числа, которые встречаются в массиве только по одному разу.
6. В целочисленной матрице размером 10 х 10 найти значение и индексы максимального элемента.
7. В двоичной матрице 5x10 определить номер строки с наибольшим количеством нулей.
8. Все строки вещественной матрицы 10 х 15 упорядочить по убы ванию значений их элементов.
9. Транспонировать целочисленную матрицу 5x5, т.е. перевернуть вокруг главной диагонали.
10. В двоичной матрице 10 х 10 найти совпадающие строки.
Лекция 12
12.1. П онятие множ ества. М нож ественны й тип
Одним из фундаментальных разделов математики является теория множеств. Некоторые моменты математического аппарата этой тео рии реализованы в Паскале через множественный тип данных (мно жества).
М н ож еством назы вается совокупность однотипны х эле м ентов, рассм атриваем ы х как единое целое. В Паскале могут быть только конечные множества. В Турбо-Паскале множество может содержать от 0 до 255 элементов.
В отличие от массива, элементы множества не пронумерованы, не упорядочены. Каждый отдельный элемент множества не идентифици руется и с ним нельзя выполнить какие-либо действия. Действия могут выполняться только над множеством в целом.
Тип элементов множества называется базовым типом. Базовый тип может быть любым скалярным, за исключением типа real.
Конкретные значения множества задаются с помощью конструктора множества, представляющего собой список элементов, заключенный в квадратные скобки. Сами элементы могут быть либо константами, либо выражениями базового типа. Вот несколько приме ров задания множеств с помощью конструктора:
[3, 4, 7, 9, 12] — множество из пяти целых чисел; [1..100] — множество целых чисел от 1 до 100;
[’а\ V , ’с’] — множество, содержащее три литеры а, Ь, с;
pa’.-’z’, ’ ?’, ’ !’] — множество, содержащее все прописные латинские буквы, а также знаки ’?’ и ’!’.
Символы ” []” обозначают пустое множество, т.е. множество, не со держащее никаких элементов.
Не имеет значения порядок записи элементов множества внутри конструктора. Например, [1, 2, 3] и [3, 2, 1] — это эквивалентные мно жества.
Каждый элемент в множестве учитывается только один раз. По этому множество [1, 2, 3, 4, 2, 3, 4, 5] эквивалентно [1..5].
Переменные множественного типа описываются так: Var <идентификатор> set o f <базовый тип>.
Var A, D Set Of Byte;
В Set Of 'a* ’ z ’ ;
C Set Of Boolean;
Нельзя вводить значения в множественную переменную оператором ввода и выводить оператором вывода. Множественная переменная мо жет получить конкретное значение только в результате выполнения оператора присваивания следующего формата:
< множественная переменная> := < множественное выражение>
Например:
А |
[50, |
100, |
150, 200]; |
В |
:* ['m', |
,п>, |
’к*]; |
С[True, False];
D :« А;
Кроме того, выражения могут включать в себя операции над мно жествами.
12.2.Операции над множествами
ВПаскале реализованы основные операции математической тео рии множеств. Это — ‘‘объединение” , “пересечение” , “разность” мно жеств. Во всех таких операциях операнды и результаты есть множест венные величины одинакового базового типа.
Объединение множеств. Объединением двух множеств А п В назы
вается множество, состоящее из элементов, входящих хотя бы в одно из множеств А или В. Знак операции объединения в Паскале “+ ”
На рисунке (а) схематически показан результат объединения двух множеств.
А + В |
А * В |
А -В |
А
В
а)
Cl, 2, 3, 4] + [3, 4, 5, 6] »> [1, 2, 3, 4, Б, 6].
Пересечение множеств. Пересечением двух множеств Аж В назы вается множество, состоящее из элементов, одновременно входящих в множество А и в множество В (см. рис. б).
Например:
[1, 2, 3, 4] * [3, 4, 5, 6] => [3, 4].
Разность множеств. Разностью двух множеств А жВ называется множество, состоящее из элементов множества А, не входящих в мно жество В (см. рис. в).
Например:
[1, |
2, |
3, |
4] |
[3, |
4, |
5, |
6] |
=> |
[1, |
2] |
[3, |
4, |
5, |
б] |
[1, |
2, |
3, |
4] |
=> |
[5, |
б] |
Очевидно, операции объединения и пересечения — перестановочны, а разность множеств — не перестановочная операция.
Операция отношения. Множества можно сравнивать между со бой, т.е. выполнять с ними операции отношения. Результатом отно шения, как известно, является логическая величина true или faise. Для множеств применимы все операции отношения, за исключением ” > ” и
”< ” В таблице описаны операции отношения над множествами. Везде
АжВ обозначают два множества, элементы которых — одного типа.
Отношение
I
АО В
А<= В
А>= В
Результат
True
множества А и В совпадают множества А и В не совпадают все элементы А принадлежат В все элементы В принадлежат А.
____
False
впротивном сПУчае
впротивном сЯУчае
впротивном сЛУчае
впротивном Cjxy4ae_
Вот несколько примеров выполнения операций отношенияПусть переменная М описана в программе следующим образом:
Var М Set Of Byte;
В разделе операторов ей присваивается значение:
м :* [3, 4, 7, 9];