- •Оглавление
- •Этапы разработки программы
- •Оформление решения
- •Структура программы
- •Характеристики программы
- •Типы данных
- •Целые числа
- •Вещественные числа
- •Лабораторная работа № 2 Алфавит языка Паскаль. Операторы языка
- •Теоретические сведения Алфавит языка
- •Контрольные вопросы
- •Специальные символы
- •Составные символы
- •Зарезервированные слова
- •Стандартные функции и процедуры языка
- •Комментарии и директивы
- •Операторы
- •Простые операторы
- •Структурные операторы
- •Полезные формулы
- •Запись числовых констант, переменных и выражений
- •Контрольные вопросы
- •Лабораторная работа № 3 Программирование алгоритмов линейной структуры
- •Теоретические сведения
- •Задание к работе
- •Пример выполнения работы
- •Варианты заданий
- •Задание 2
- •Вариант 1
- •Вариант 2
- •Вариант 3
- •Примеры задач Программа 1
- •Программа 2
- •Программа 3
- •Варианты заданий
- •Задание2
- •Примеры задач Программа 1
- •Программа 2
- •Программа 3
- •Варианты заданий
- •Алгоритм цикла с предусловием – While
- •Алгоритм цикла с постусловием Repeat
- •Алгоритм цикла со счетчиком For
- •Практические примеры Задачи с использованием оператора while
- •Задачи с использованием оператора repeat
- •Задачи с использованием оператора for
- •Варианты заданий
- •Контрольные вопросы
- •Лабораторная работа № 7 Программирование алгоритмов со структурой вложенных циклов
- •Теоретические сведения
- •Практические примеры
- •Задачи для решения
- •Лабораторная работа № 8 Обработка одномерных массивов
- •Теоретические сведения
- •Обработка массивов
- •Действия с одномерными массивами
- •Практические примеры
- •Варианты заданий
- •Контрольные вопросы
- •Что представляет собой массив в Pascal'е?
- •Лабораторная работа № 9 Обработка двумерных массивов, матрицы
- •Теоретические сведения
- •Описание массива
- •Заполнение массива данными (ввод элементов)
- •Вывод массива
- •Обработка массивов
- •Квадратная матрица
- •Транспонирование матрицы
- •Практические примеры
- •Варианты заданий
- •Сформировать матрицу по следующему правилу
- •Контрольные вопросы
- •1. Как можно описать следующий массив?
- •2. В какой ячейке находится элемент d[2,6] ?
- •3. Каким образом выведется массив на экран монитора?
- •4. Сколько элементов находится в массиве х(4;7):
- •Метод линейной сортировки
- •Сортировка методом «пузырька»
- •Практические примеры
- •Варианты заданий
- •Практические примеры
- •Варианты заданий
- •Практические примеры
- •Шифрование и дешифрование текста
- •Варианты заданий
- •Контрольные вопросы
- •Порядок выполнения лабораторных работ
- •Содержание пояснительной записки
- •Литература
Варианты заданий
Во всех задачах предусмотреть вывод на экран всех данных задачи.
Вариант 1
Имеются сведения о студентах ВУЗа: фамилия, имя, отчество, адрес (улица, дом, квартира) и домашний телефон (если есть).
Составить программу, которая:
Выводит на экран фамилию, имя и адрес тех студентов, до кого нельзя дозвониться.
Упорядочит студентов по фамилии.
Выводит на экран фамилии тех студентов, которые живут на одной улице.
Корректирует базу.
Вариант 2
Имеются данные о работающих в фирме: фамилия, имя, отчество, адрес (улица, дом, квартира), дата рождения и дата поступления на работу (месяц, год).
Составить программу, которая:
Выводит данные только тех из них, кто на сегодняшний день проработал не менее 5 лет.
Выводит сотрудников однофамильцев.
Выводит фамилии пенсионеров.
Корректирует базу.
Вариант 3
Имеются сведения об учениках нескольких школ: фамилия, имя, отчество, адрес (улица, дом, квартира), школа и класс.
Составить программу, которая:
Выводит на экран фамилию, имя и адрес тех учеников, кто учится в данной школе в старших классах (номер школы вводить с клавиатуры).
Фамилии учеников одной школы.
Вывести на экран учеников младших классов.
Корректирует базу.
Вариант 4
Имеются данные о клиентах пункта проката: фамилия, имя, отчество, адрес (улица, дом, квартира) и что взял (только один предмет).
Составить программу, которая:
Выводит на экран данные только тех из них, кто взял телевизор.
Выводит на экран данные только тех из них, кто взял 2 и более товаров.
Выводит клиентов однофамильцев.
Корректирует базу.
Вариант 5
Имеются данные об студентах ВУЗа: фамилия, имя, отчество, дата рождения (число, месяц и год), группа .
Составить программу, которая:
Выводит на экран фамилию и имя тех учеников, у кого сегодня день рождения (сегодняшнюю дату вводить с клавиатуры).
Выводит на экран студентов одной группы.
Выводит студентов однофамильцев.
Корректирует базу.
Вариант 6
Имеются сведения о работающих на фабрике: фамилия, имя, отчество, адрес (улица, дом, квартира) и дата поступления на работу (месяц, год).
Составить программу, которая:
Определит, есть ли в списке Ивановы (Иванов, Иванова), если есть, то вывести их адрес (адреса).
Выводит сотрудников однофамильцев.
Упорядочить список сотрудников по фамилии.
Корректирует базу.
Вариант 7
Имеются сведения об студентах: фамилия, имя, адрес (улица, дом, квартира), группа.
Составить программу, которая.
Выдает всех студентах живущих на улице Ленина.
Выдает всех студентов одной группы.
Выводит студентов однофамильцев.
Корректирует базу.
Вариант 8
Имеются сведения о расписании поездов: номер поезда, название (откуда–куда, например Киров–Москва), время прибытия на станцию, время отправления (часы, минуты). Будем считать, что все поезда приходят каждый день.
Составить программу, которая:
По данному времени определит, какие из поездов стоят сейчас на станции (время вводить с клавиатуры).
Выдаст по номеру поезда направление его движения.
Упорядочит список поездов по возрастанию номеров.
Корректирует базу.
Вариант 9
Сформировать список студентов, состоящий из №, фамилии, оценки за первый экзамен, оценки за второй экзамен, оценки за третий экзамен, общий балл за все экзамены, сумму начисленной стипендии, подоходный налог, итоговой суммы. Если бал за экзамены равен 15, то сумма начисленной стипендии рана 75, если бал за экзамены меньше 15, но больше 12, то сумма начисленной стипендии равна 62.5, если бал за экзамены меньше 12, но больше 9, то сумма начисленной стипендии равна 50, иначе сумма начисленной стипендии равна 0. Налог равен 1 %.
Вариант 10
Предприятие имеет местную телефонную станцию на 20 номеров. Телефонный справочник данного предприятия для каждого номера телефона содержит номер помещения и список служащих, сидящих в данном помещении
Составить программу, которая:
Корректирует базу.
По номеру телефона выдает номер помещения и список сидящих в нем людей.
По номеру помещения выдает номер телефона.
По фамилии выдает номер телефона и номер помещения.
Вариант 11
Написать программу, определяющую:
а) дату следующего (предыдущего) дня;
б) дату, которая наступит через t дней;
в) дату, которая была за t дней до сегодня;
г) число суток, прошедших от даты t1 до t2;
д) день недели, выпадающий на дату t1, если известно, что в первый день нашей эры был понедельник.
Вариант 12
Дано время, описанное следующим образом:
Type time = Record
h: 0 . . 2 3;
m, s: 0 . . 59
End;
Описать:
а) логическую функцию для проверки, предшествует ли время T1 времени T2 (в рамках суток);
б) процедуру, присваивающую параметру T1 время, на 1 секунду большее времени t (учесть смену суток).
Вариант 13
В гостинице имеется 15 номеров из них 5 одноместных и 10 двухместных. Составить программу , которая заполняет и корректирует данные о жильцах и по фамилии определяет номер, где проживает жилец. Программа запрашивает фамилию жильца.
Если жильца с такой фамилией нет, об этом выдается сообщение.
Если жилец с такой фамилией единственный, то программа выдает фамилию жильца и номер проживания.
Если в гостинице проживает 2 и более жильцов с такой фамилией , программа дополнительно запрашивает инициалы.
Вариант 14
Имеется список товаров. Для каждого товара указаны его название, стоимость единицы товара, количество и единица измерения.
Написать программу, которая:
Корректирует и дополняет список с клавиатуры.
Сортирует по названию товара.
Выводит на экран информацию о товаре, название которого введено с клавиатуры.
Вариант 15
Описать запись с именем зодиак, содержащую следующие поля: фамилия, имя, знак зодиака, день рождения.
Написать программу, которая выполняет следующие действия:
Ввод данных с клавиатуры в массив, состоящий из 8 элементов типа зодиак, записи упорядочены по датам их рождения.
Вывод на экран информацию о людях, родившихся под одним знаком зодиака.
Вывод на экран информацию о людях, родившихся под одним знаком зодиака наименование которого введено с клавиатуры, если таких нет , то выдать сообщение.
Контрольные вопросы
Определение записи.
Объявление типа записи.
Сортировка записи.
Записи с вариантами.
Лабораторная работа № 12
Работа с файлами
Цель работы: научить студентов работать с файлами
Теоретические сведения
В языке Паскаль файл – это состоящая из некоторого числа компонент одного типа структура данных со следующими особенностями:
число компонент файла не фиксируется (в отличие от массива) и не ограничивается сверху некоторым числом (в отличие от строк и множеств);
доступ к компонентам файла возможен только путем их последовательного перебора от начала файла (с первой компоненты);
компоненты файла создаются только процедурой вывода и доступны только процедуре ввода.
Файл (последовательность) – это одна из наиболее фундаментальных структур данных. Программная организация компьютеров, их связь с внешними устройствами основаны на файловой структуре.
Файлы позволяют решить две проблемы:
1) возможность формирования и сохранения значений для последующего использования другими программами (например, в программах многократной обработки информационных систем, таких как платежные ведомости, различные АСУ, базы данных, необходимость длительного хранения информации очевидна);
2) взаимодействие программ с внешними устройствами ввода-вывода: дисплеем, принтером, АСП и т.п.
В Паскале эти проблемы снимаются с помощью структурированных данных файлового типа.
Файловый тип данных в программе задается следующем образом:
type <имя файлового типа> = file of <тип компонентов>
В качестве типа компонентов файла разрешается использовать любой тип данных, кроме файлового. Например:
type
intfile = file of integer;
refile = file of real;
chfile = file of char;
ran = 1 .. 10;
st = set of ran;
vector = array[ran] of real;
comp = record
re,im : integer;
end;
setfile=file of st;
vecfile = file of vector;
compfile= file ofcompt;
Описание файловой переменной задается обычным способом в разделе описаний. Например:
var f: intfile; или var f: file of integer;
Файловая переменная является буфером между Паскаль-программой и внешним устройством и должна быть логически с ним связана. Связь осуществляется оператором языка Паскаль:
assign (<имя файловой переменной>,'<имя устройства>')
Как правило, файлы для хранения данных связаны с устройством внешней памяти на магнитных носителях (дисковод) и носят название внешние файлы. Если, например, файл с именем primer, dat логически связан с дисководом А, то все данные, помещаемые в файл, будут храниться на этом дисковом накопителе, a установка «окна» между программой и файлом будет определяться через файловую переменную f-оператором
assign (f, 'primer.dat')
Если внешним устройством является принтер, то связь осуществляется оператором assign(f, '1st:'). Здесь 1st – логическое имя печатающего устройства. Ниже приведены логические имена внешних устройств ввода-вывода:
con – консоль; trm – терминал; kbd – клавиатура; 1st – принтер; aux – буфер сети;
usr-драйвер пользователя.
После осуществления связи файловая переменная f отождествляется с соответствующим файлом.
Для работы с файлом его необходимо открыть, а по окончании работы закрыть. Файл открывается для чтения оператором reset(f), для записи – оператором rewrite(f).
Чтение и запись данных осуществляется известными командами read/write, только в начале списка помещается имя файловой переменной:
read (f, <список ввода>); readln (f, <список ввода>);
write(f, <список вывода>); writeln(f, <список вывода>).
Закрытие файла осуществляется командой close(f).
Условно файл можно представить в виде ленты, у которой есть начало, а конец не фиксируется. Компоненты файла записываются на эту ленту последовательно, друг за другом:
Здесь т.м. – текущий маркер, указывающий на рабочую позицию (окно) файла; м.к. (маркер конца файла) – специальный код, автоматически формируемый вслед за последним элементом файла.
Такого рода файлы называются файлами последовательного доступа. В исходной версии Паскаля файлов прямого доступа, для которых можно непосредственно «достать» любую компоненту, не предусмотрено; однако в Турбо-Паскале элементы прямого доступа есть (например, через функцию seek, см. ниже).
Команда rewrite(f) – открыть файл для записи – устанавливает файл в начальное состояние режима записи; текущий маркер устанавливается на маркер конца файла. Если в файле f до этого была информация, то она уничтожается.
В открытом для чтения командой reset(f) файле текущий маркер устанавливается на нулевое состояние, однако содержимое файла не утрачивается.
Команда закрытия файла close (Q обязательна, поскольку эта команда формирует маркер конца файла, что в большинстве случаев является необходимым нaпpимep, для работы с функцией eof(f), см ниже).
В системе Турбо-Паскаль предусмотрены встроенные функции по работе с файлами:
filesize(f) – текущее количество компонент открытого файла;
filepos(f) – номер текущей позиции маркера;
геnamе (f, имя) – переименование файла, связанного с f;
erase(f) – уничтожение файла;
execute(f) – выполнение СОМ-файла;
chain(f) – выполнение CHN-файла;
seek(f,N) – устанавливает маркер на позицию N;
eof(f) – возвращает TRUE, если найден конец файла;
ealn(f) – возвращает TRUE, если найден конец строки.
На практике широко используются текстовые файлы, которые состоят из литерных (логических) строк. Поэтому в языке Паскаль предусмотрен стандартный файловый тип TEXT (он не является file of char, скорее всего, это – file of string[n]). Логические строки бывают разной длины, в том числе и нулевой. В конец каждой строки помещается специальный символ «конец строки» (eoln – «end of line»). В качестве печатного символа конца строки используют литеру #. Текстовый файл (text) является строго последовательным, к нему не применимы некоторые встроенные функции, в частности seek. В отличие от типизированных файлов, с текстовым файлом нельзя одновременно проводить операции чтения (read) и записи (write). Однако допустимы операторы writein и readln. Числовые данные, целые и вещественные, в текстовом файле должны записываться через пробел.
