- •ПРЕДИСЛОВИЕ
- •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) функции, реализующие операции отношения (равно, не равно,
- •Используя этот модуль, решить задачи:
- •При разработке модуля рекомендуется такая последовательность
- •Задания
- •Приведем текст программы целиком.
- •ЗАДАНИЯ ПО ТЕМЕ “ЛИНЕЙНЫЕ АЛГОРИТМЫ”
- •ЦЕЛОЧИСЛЕННАЯ АРИФМЕТИКА
- •Сортировка массивов
- •ЗАДАЧИ ПО ТЕМЕ “ОБРАБОТКА СТРОК”
- •ЗАДАНИЯ ПО ТЕМЕ “МОДУЛИ”
- •ЗАДАНИЯ ПО ТЕМЕ “ДИНАМИЧЕСКИЕ ПЕРЕМЕННЫЕ”
- •Задачи, предлагавшиеся на школьных олимпиадах по программированию (Пермская область)
- •Учебное издание
WriteLn;
WriteLn(FR, * Результаты*);
WriteLn(FR);
WriteLn(* T(l) T(2) T(3) T(4) T(5)*);
WriteLn(FK, ' T(l) T(2) T(3) T(4) T(5)’);
For I :* 1 To 5 Do
Begin
Write(T[I] : 8 2);
Write(FR, T[I] 8 2)
End;
Close(FD);
Close(FR)
End.
Результаты будут сохранены в файле R esult.txt. Их можно посмотреть на экране, распечатать на бумаге. При необходимости этот файл может стать входным для другой программы, если содержащаяся в нем информация будет исходной для решения другой задачи.
Задания
1.Дан файл вещественных чисел. Определить количество нулевых значений в этом файле.
2.Даны два файла целых чисел. Определить, являются ли они тож дественными.
3.Даны два символьных файла одинакового размера. Произвести обмен информацией между ними.
4.Имеется внешний текстовый файл. Напечатать первую из самых коротких его строк.
5.Описать процедуру Lines (Т), которая построчно печатает со держимое непустого текстового файла Т, вставляя в начало каждой печатаемой строки ее порядковый номер (он должен занимать четыре позиции) и пробел.
6.В текстовом файле Т записана непустая последовательность ве
щественных чисел, разделенных пробелами. Описать функцию Мах(Т) для нахождения наибольшего из этих чисел.
Лекция 14
14.1. Комбинированный тип данных
Все структурированные типы данных, с которыми мы уже позна комились, представляют собой совокупности однотипных величин. Комбинированный тип данных — это структурированный тип, состо ящий из фиксированного числа компонент (полей) разного типа. Ком бинированный тип имеет еще и другое название — запись.
Обычно запись содержит совокупность разнотипных атрибутов, относящихся к одному объекту. Например, анкетные сведения о студенте вуза могут быть представлены в виде следующей информа ционной структуры:
Такая структура называется двухуровневым деревом. В Паскале эта информация может храниться в одной переменной типа record (запись). Задать тип и описать соответствующую переменную можно следующим образом:
Type |
Anketal |
* Record |
String[50]; |
{ Поля } |
|
|
|
FI0 |
|
||
|
|
Pol |
Char; |
{ записи |
} |
|
|
Dat |
String[16]; |
||
|
|
Adres |
String[50]; |
{ или элементы } |
|
|
|
Curs |
1..5; |
||
|
|
Grup |
1..10; |
{ записи |
> |
|
|
Stip |
Real |
||
Var |
Student |
End; |
|
|
|
Anketal; |
|
|
|
Такая запись так же, как и соответствующее ей дерево, называется двухуровневой.
К каждому элементу записи можно обратиться, используя составное имя, которое имеет следующую структуру:
<имя переменной>.<имя поля>
Например, student.fio; student.dat и т.п. Если, например, требуется полю “курс” присвоить значение “3” , то это делается так:
Student.Curs := 3;
Поля записи могут иметь любой тип, в частности, сами могут быть записями. Такая возможность используется в том случае, когда требзгется представить многоуровневое дерево (более 2 уровней). Например, те же сведения о студентах можно отобразить трехуровневым дере вом:
Такая организация данных позволит, например, делать выборки ин формации по году рождения или по городу, где живут студенты. В этом случае описание соответствующей записи будет выглядеть так:
Type |
Anketa2 |
= Record |
String[50]; |
|
|
|
|
FIO |
|
||
|
|
Pol |
Char; |
|
|
|
|
Dat |
Record |
Integer; |
|
|
|
|
God |
||
|
|
|
Mes |
String[10]; |
|
|
|
|
Den |
1. .31 |
|
|
|
Adres |
End; |
|
|
|
|
Record |
|
String[20]; |
|
|
|
|
Gorod |
||
|
|
|
UIDomKv |
String[30]; |
|
|
|
Curs |
End; |
|
|
|
|
1. .5; |
|
|
|
|
|
Grup |
1..10; |
|
|
|
|
Stip |
Real |
|
|
Var |
Student |
End; |
|
|
|
Anketa2; |
|
|
|
Поля такой записи, находящиеся на третьем уровне, идентифи цируются тройным составным именем. Например, student.D&t.God;
student.adres.Gorod.
Приведем струхтурограмму задания комбинированного типа:
«Скомбинированный тип>
----------------------------------------------- > record — ^Ссписок полей> — >*end — ►
< список полей> |
-О - •<тип> • |
* <имя поля> |
—о *
<z >
Впрограмме могут использоваться массивы записей. Если на фа
культете 500 студентов, то все анкетные данные о них можно предста вить в массиве:
Var Student |
Array[i..500] Of Anketal; |
В таком случае, например, год рождения 5-го в списке студента хра нится в переменной student [5] .Dat.God.
Любая обработка записей, в том числе ввод и вывод, производится поэлементно. Например, ввод сведений о 500 студентах можно органи зовать следующим образом:
For I := 1 То 500 Do
With Student[I] Do
Begin
Write( ’ Ф . И.0.: ’); ReadLn(FIO);
Write(’Пол (м/х): ’); ReadLn(Pol);
Write(’Дата рождения: ’); ReadLn(Dat);
Write(’Anpec: ’); ReadLn(Adres);
Write(’Kypc: ’); ReadLn(Curs);
Write(’Группа: ’); ReadLn(Grup);
Write(’Стипендия (руб.): ’); ReadLn(Stip)
End;
В этом примере использован оператор присоединения, который имеет следующий вид:
with <переменная типа запись> do <операт.ор>;
Он позволяет, один рал указав имя переменной типа “запись” по сле слова with, работать в пределах оператора с именами полей как с обычными переменными, т.е. не писать громоздких составных Е^ен
Тип “запись” в Паскале может иметь переменный состав noj*e£ ко торый меняется в ходе выполнения программы. Такая в о з м о ^ ость