- •Основные элементы языка. История создания и развитие языка программирования
- •Структурная схема программы на алгоритмическом языке.
- •Лексика языка. Типы данных.
- •Типы данных
- •Переменные и константы.
- •Выражения и операции.
- •Операторы языка. Синтаксис операторов присваивания.
- •Синтаксис операторов ввода-вывода.
- •Операторы Write и WriteLn
- •Операторы Read и ReadLn
- •Составление программ линейной структуры.
- •Синтаксис операторов безусловного и условного переходов.
- •Составной оператор.
- •Вложенные условные операторы.
- •Составление программ разветвляющейся структуры. Выберите из предложенного ниже списка задачи для самостоятельного решения.
- •Составление программ сложной разветвляющейся структуры.
- •Оператор case. Оператор выбора case. Решение задач.
- •Оператор goto.
- •Синтаксис операторов циклов.
- •Циклические конструкции.
- •Циклы с предусловием.
- •Задачи для самостоятельного решения:
- •Циклы со счетчиком.
- •Общая форма записи цикла со счетчиком
- •Циклы с постусловием.
- •Задачи для самостоятельного решения:
- •Составление программ циклической структуры.
- •Проверьте себя, ответив на вопросы:
- •Доступ к элементам массива.
- •Изменение значения некоторых элементов
- •Нахождение номеров элементов с заданным свойством
- •Нахождение количества элементов с заданным свойством
- •Задачи для самостоятельного решения
- •Вставка элементов в одномерный массив. Вставка одного элемента
- •Вставка нескольких элементов
- •Задачи для самостоятельного решения
- •Перестановка двух элементов
- •Перестановка части массива
- •Работа с несколькими массивами
- •Задачи на использование одномерных массивов
- •Самостоятельное решение задач.
- •Формирование значений элементов массива случайным образом и с клавиатуры и вывод их на экран
- •Нахождение количества элементов с данным свойством
- •Определить, отвечает ли заданный массив некоторым требованиям
- •Изменение значений некоторых элементов, удовлетворяющих заданному свойству
- •Заполнение массива по правилу
- •Задачи для самостоятельного решения
- •Вставка строк и столбцов
- •Удаление строк и столбцов
- •Задачи для самостоятельного решения Задачи на вставку элементов:
- •Задачи на удаление элементов:
- •Задачи для самостоятельного решения
- •Задачи на использованиедвумерных массивов
- •I. Заполнение и анализ элементов массива
- •II. Работа с одномерным и двумерным массивами
- •Дополнительные задачи (на усмотрение учителя)
- •Для любопытных Графические программы с применением массивов.
- •Сортировка выбором
- •Сортировка массива с помощью рекурсии
- •Рекурсивная сортировка слиянием (для любопытных)
- •Строка. Тип данных string. Строковые переменные, их описание. Длина строки. Операции над строками.
- •Задачи для самостоятельного решения
- •Задачи для дополнительного решения (на усмотрение учителя)
- •Стандартные функции для работы со строками (concat,copy,length, pos,upcase). Функция Length
- •Функция Upcase
- •Функция Copy
- •Функция Pos
- •Функция Concat
- •Задачи для самостоятельного решения
- •Стандартные процедуры для работы со строками (delete, insert,str,val).
- •Задачи для самостоятельного решения
- •Задачи для дополнительного решения (на усмотрение учителя)
- •Контрольная работа.
- •Сформулируйте тексты решенных ниже задач
- •Выберите с учителем задачи для самостоятельного решения:
- •Решение задач.
- •Бегущая строка. Пример программы осыпающихся букв. Строки в графическом режиме (для увлеченных программированием).
- •Тип данных char. Операции над символами.
- •1.Организовать ввод фио только на русском языке.
- •2.Вывести все совершенные числа в данном диапазоне.
- •3.Введенное число - полиндром?
- •2.Найти факториал числа с помощью рекурсии.
- •Задачи на построение процедур и функций
- •Самостоятельное решение задач.
- •I Выберите с учителем одну из предложенных ниже задач (тип Integer, real)
- •II Выберите с учителем одну из предложенных ниже задач (тип char)
- •III Выберите с учителем одну из предложенных ниже задач (тип string)
- •IV Выберите с учителем одну из предложенных ниже задач (тип record)
- •Текстовые файлы
- •Компонентные файлы
- •Бестиповые файлы
- •Последовательный и прямой доступ
- •Задачи на работу с файлами
- •Использование библиотеки crt
- •Программирование клавиатуры
- •Текстовый вывод на экран
- •Программирование звукового генератора
- •Использование библиотеки Graph
- •Переход в графический режим и возврат в текстовый
- •Краткая характеристика графических режимов работы дисплейных адаптеров
- •Процедуры и функции
- •Координаты, окна, страницы
IV Выберите с учителем одну из предложенных ниже задач (тип record)
Составьте список группы спортсменов, участвовавших в гонках на спортивных машинах, включающей N человек. Для каждого гонщика укажите фамилию, имя, название страны, номер автомашины, наличие наград на предыдущих состязаниях, результаты гонки. Информацию о каждом спортсмене оформите в программе в виде записи. Совокупность записей объединить в файл. Составьте программу, которая обеспечивает ввод полученной информации, распечатку ее в виде таблицы, а также распечатайте анкетные данные спортсменов,
а) показавших лучший результат;
б) показавших три лучших результата,
в) не получивших ни одного призового места.
Составьте прайс-лист магазина "Техника", включающий в себя наименования товара, марку предприятия-производителя, страну-производитель, его цену, количество единиц товара на складе. Информацию о каждом виде товара оформите в программе в виде записи. Совокупность записей объедините в файл. Составьте программу, которая обеспечивает ввод полученной информации, распечатку ее в виде таблицы. Выведите на экран меню, а затем информацию о товаре в зависимости от запроса покупателя.
Составить список учебной группы, включающей N человек. Для каждого учащегося указать дату рождения, год поступления в техникум, курс, группу, оценки каждого года обучения. Информацию о каждом учащемся оформить в программе в виде записи. Совокупность записей объединить в файл. Составить программу, которая обеспечивает ввод полученной информации, распечатку ее в виде таблицы, а также распечатать список студентов, фамилии которых начинаются на буквы Б и В, и их оценки за последнюю сессию.
Составьте список учебной группы, включающей N человек. Для каждого учащегося укажите фамилию, имя, отчество, дату рождения, год поступления в ВУЗ, факультет, отделение, курс, группу. Информацию о каждом учащемся оформите в программе в виде записи. Совокупность записей объедините в файл. Составьте программу, которая обеспечивает ввод полученной информации, распечатку ее в виде таблицы, а также распечатать по выбору пользователя анкетные данные студентов нужного курса.
Составьте список учебной группы, включающей N человек. Для каждого учащегося укажите фамилию, имя, отчество, дату рождения, год поступления в ВУЗ, факультет, отделение, курс, группу. Информацию о каждом учащемся оформите в программе в виде записи. Совокупность записей объедините в файл. Составьте программу, которая обеспечивает ввод полученной информации, распечатку ее в виде таблицы, а также распечатайте по выбору пользователя анкетные данные студентов нужного факультета.
Составьте список учебной группы школы юного программиста, включающей N человек. Для каждого учащегося укажите фамилию, имя, отчество, название общеобразовательной школы, класс, год поступления в школу, количество сданных зачетов. Информацию о каждом учащемся оформите в программе в виде записи. Совокупность записей объединить в файл. Составьте программу, которая обеспечивает ввод полученной информации, распечатку ее в виде таблицы, а также распечатайте по выбору пользователя анкетные данные учащихся, сдавших нужное количество зачетов.
Составьте список учебной группы школы юного программиста, включающей N человек. Для каждого учащегося укажите фамилию, имя, название общеобразовательной школы, класс, количество сданных зачетов, оценку за итоговый экзамен. Информацию о каждом учащемся оформите в программе в виде записи. Совокупность записей объединить в файл. Составьте программу, которая обеспечивает ввод полученной информации, распечатку ее в виде таблицы, а также распечатайте анкетные данные учащихся, успешно сдавших экзамен.
Составьте список группы спортсменов, занимающихся легкой атлетикой, включающей N человек. Для каждого спортсмена укажите фамилию, имя, название общеобразовательной школы, класс, результаты по следующим дисциплинам:
бег 100м,
бег 3000м,
прыжки в высоту,
прыжки в длину,
прыжки с шестом,
метание ядра,
метание копья,
метание диска.
Информацию о каждом спортсмене оформить в программе в виде записи. Совокупность записей объединить в файл. Составить программу, которая обеспечивает ввод полученной информации, распечатку ее в виде таблицы, а также распечатать анкетные данные спортсменов, занявших 1 место по каждой дисциплине.
Составьте список группы спортсменов, участвовавших в соревнованиях по плаванию, включающей N человек. Для каждого пловца укажите фамилию, имя, название общеобразовательной школы, класс, результаты по следующим дисциплинам:
кроль на груди,
кроль на спине,
баттерфляй,
комплексное плавание.
Информацию о каждом спортсмене оформите в программе в виде записи. Совокупность записей объедините в файл. Составьте программу, которая обеспечивает ввод полученной информации, распечатку ее в виде таблицы, а также распечатайте анкетные данные спортсменов,
а) занявших 1 место по каждому стилю плавания;
б) показавших лучшее время по всем видам плавания,
в) не получивших ни одного призового места.
Составьте список группы спортсменов, участвовавших в соревнованиях по спортивной гимнастике, включающей N человек. Для каждого гимнаста указажите фамилию, имя, название общеобразовательной школы, класс, результаты по следующим видам:
кольца,
брусья,
перекладина,
вольные упражнения,
прыжки на дорожке,
прыжки через коня.
Информацию о каждом спортсмене оформить в программе в виде записи. Совокупность записей объединить в файл. Составьте программу, которая обеспечивает ввод полученной информации, распечатку ее в виде таблицы, а также распечатать анкетные данные спортсменов,
а) показавших лучший результат по каждому виду;
б) показавших лучший результат по всем видам многоборья,
в) не получивших ни одного призового места.
Задание. (на усмотрение учителя) Познакомившись с содержанием предыдущих задач придумайте свою интересную задачу и решите ее.
Решение задач. Процедуры и функции работы с файлами.
Изменение имени файла производится процедурой
rename(МуFilе, FileName);
первый аргумент которой - переменная файлового типа, а второй аргумент - строкового типа - новое имя файла, которое может быть сокращенным или полным (с указанием пути). Действие этой процедуры эквивалентно действию аналогичной процедуры DOS.
Уничтожение части файла от текущего положения до конца производится процедурой
truncate(МуFilе).
Уничтожение всего файла производится процедурой
erase(МуFilе),
действие которой эквивалентно удалению файла в операционной системе DOS.
Примечание. Физические файлы на магнитных дисках и переменные файлового типа в программе на Паскале - объекты различные. Переменные файлового типа в Паскале соответствуют не только физическим файлам, но и логическим устройствам, связанным с вводом и выводом информации. Клавиатуре и экрану дисплея соответствуют файлы со стандартными именами Input и Output.
Задание. Рассмотрите предложенный ниже текст программы. Сформулируйте решенную задачу. Создайте расширенный вариант подобной задачи. результат покажите учителю для оценки.
Program Files; Uses Crt; Var F,Fnew : file of string; Name,NewName : string[12]; Text : string; Ch : char; Procedure ReadText; Begin repeat write('Введите имя файла>'); readln(Name); assign(F,Name); reset(F); if IOresult<>0 then begin writeln('Ошибка чтения'); close(F); end; until IOresult=0; writeln('Содержание файла ',Name,':'); while not Eof(F) do begin readln(F,Tеxt); writeln(Tеxt); end; close(F); End; Procedure EraseFile; Begin erase(F); writeln('Файл удален'); End; Procedure ReNameFile; Begin write('Введите новое имя файла:'); readln(NewName); rename(F,NewName); writeln('Файл ',Name,' переименован в файл ',NewName); End; Procedure CopyFile; Begin write('Введите имя копии файла ',Name,'>'); readln(NewName); reset(F); assign(Fnew,NewName); rewrite(Fnew); while not Eof(f) do begin readln(F,Text); writeln(Fnew,Text); end; close(F); close(F_new); writeln('Файл',Name,' скопирован в файл ',NewName); End; Begin ClrScr; readTеxt; repeat writeln('Удаление файла (D),переименование файла(R)'); writeln('Копирование файла (C), выход из программы (Е)'); write('Введите символ нужной операции - '); readln(ch); case ch of 'D','d': EraseFile; 'R','r': ReNameFile; 'C','c': CopyFile; end; until (ch='E') or (ch='e'); read; End.
Выберите с учителем одну из предложенных ниже задач.
Даны два отсортированных типизированных файла (тип выбрать произвольно). Получить новый типизированный файл слиянием двух исходных в отсортированном виде. Алгоритм слияния должен предусматривать, что исходные файлы могут содержать очень большое число элементов.
Проверить, является ли один типизированный файл частью другого. Если является, то его распечатать на принтере.
Сделать один типизированный файл частью другого, начиная с N-ой позиции (N задает пользователь).
Один типизированный файл вставить в другой, чередуя элементы обоих файлов. Элементы вставляемого файла начинайте вводить с конца файла.
Сравнить содержание файлов. Количество сравниваемых файлов задает пользователь.
Приготовьте листинги решенных и проверенных учителем задач. Проверьте свои знания, ответив на ниже следующие вопросы.
Контрольные вопросы
Что называется файлом? как его описать в программе?
Какие действия можно производить с файлами?
Как записать файл? Какие процедуры или функции надо применить? Как производится запись?
Как прочитать файл? Какие процедуры или функции используются? Как происходит чтение данных из файла?
Как закончить работу с файлом?
Как обратиться к компоненте с заданным номером?
Как подсчитать, сколько элементов в данном файле?
Верно ли, что элементы файла должны быть одного типа и что файл отличается от массива только тем, что размер (количество элементов) файла произволен, а размер массива фиксирован?
Можно ли, считав из файла пятый элемент, затем сразу же считать второй? Если нет, то какой можно?
Верно ли, считав из файла пятый элемент, затем уже никогда нельзя считать его второй элемент?
В какое место файла можно добавлять новые элементы: в начало, в середину, в конец, куда угодно, никуда?
Если не переписывать файл заново, то значения каких его элементов можно менять: только первого, только последнего, каких угодно, никаких? А какие элементы можно удалять?
Верно ли, что в одно и то же время нельзя считывать из файла и записывать в него? верно ли, что, начав считывать из файла, затем уже никогда нельзя записывать в него? А наоборот?
Можно ли сравнивать файлы или присваивать один файл другому?
Примеры решения задач.
Создать файл,содержащий информацию о работниках:табельный номер,фамилия,оклад. Создать другой файл,в котором содержится информация о работнике,имеющем максимальный оклад.
Program TipFile1;
{Задача.Создать файл,содержащий информацию о
работниках:табельный номер,фамилия,оклад.
Создать другой файл,в котором содержится
информация о работнике,имеющем максимальный
оклад.
Решение.Арсланов Ильдар,
ЦНИТ "Северная Звезда"
03.04.2000.}
Uses
Crt;
Type
Dann=Record
number:byte;
Surname:string;
oklad:integer;
End;
Var
Zarpl,Tf:file of Dann;
word:Dann;
i,count:Integer;
namef:string[12];
Procedure VZapZarpl;
Begin
Writeln('Ввод записи ј ',FilePos(Zarpl)+1);
With word do
Begin
Writeln('Работник ',i,'-ый');
Writeln('Табельный номер:');
Readln(number);
Writeln('Фамилия:');
Readln(surname);
Writeln('Оклад');
Readln(oklad);
Write(Zarpl,word);
End;
End;
Procedure File1Vvod;
Begin
Writeln('Введите имя файла:');
Readln(namef);
Assign(Zarpl,namef);
Rewrite(Zarpl);
Writeln('Введите кол-во записей:');
Readln(count);
For i:=1 to count do
VZapZarpl;
Writeln('Ввод информации о рабочих завершен');
Close(Zarpl);
Readln;
End;
Procedure File2Make;
Var
namef1:string[12];
n,max:integer;
surn1:string;
Begin
Max:=0;
Writeln('Введите имя другого файла:');
Readln(namef1);
Assign(Tf,namef1);
Rewrite(Tf);
Assign(Zarpl,namef);
Reset(Zarpl);
While not Eof(Zarpl) do
begin
Read(Zarpl,Word);
For i:=1 to count do
With Word do
If oklad>max
Then
begin
Max:=oklad;
n:=number;
surn1:=surname;
end;
end;
Write(Tf,word);
Close(Zarpl);
Close(Tf);
Reset(Tf);
Seek(Tf,0);
Writeln;
Writeln('Вывод информации из нового файла,содержащего');
Writeln('информацию о работнике,имеющем наибольший оклад');
Writeln;
While not Eof(tf) do
begin
Read(Tf,word);
With Word do
begin
Writeln('Табельный номер ',n);
Writeln('Фамилия ',surn1);
Writeln('Оклад ',max);
end;
end;
Close(Tf);
Read;
End;
Begin
ClrScr;
File1Vvod;
File2Make;
ReadLn;
End.
Создать файл,содержащий информацию о работниках института.Найти средний стаж работы в институте.
Program TipFile2;
{Задача.Создать файл,содержащий информацию о
работниках института.Найти средний стаж
работы в институте.
Решение.Арсланов Ильдар,
ЦНИТ "Северная Звезда"
03.04.2000.}
Uses
Crt;
Type
Dann=Record
stag:byte;
Surname,workname:string;
oklad,year:integer;
End;
Var
Zarpl:file of Dann;
word:Dann;
i,count,max:Integer;
name:string[12];
Procedure VVodZap;
Begin
With word do
Begin
Writeln('Работник ',i,'-ый');
Writeln('Фамилия:');
Readln(surname);
Writeln('Год рождения:');
Readln(year);
Writeln('Стаж работы:');
Readln(stag);
Writeln('Должность:');
Readln(workname);
Writeln('Оклад');
Readln(oklad);
Write(Zarpl,word);
End;
End;
Procedure FileVvod;
Begin
Writeln('Введите имя файла:');
Readln(name);
Assign(Zarpl,name);
Rewrite(Zarpl);
Writeln('Введите кол-во работников:');
Readln(count);
For i:=1 to count do
VVodZap;
Writeln('Ввод информации о работниках завершен');
Close(Zarpl);
Readln;
End;
Procedure FileOpen;
Var
sr:real;
Begin
sr:=0;
Assign(Zarpl,name);
Reset(Zarpl);
While not Eof(Zarpl) do
begin
Read(Zarpl,Word);
With Word do
sr:=max+stag;
end;
Sr:=(sr/count);
Writeln('Средний стаж работы равен:',Sr:1:1,' лет');
Close(Zarpl);
Read;
End;
Begin
ClrScr;
FileVvod;
FileOpen;
ReadLn;
End.
Создать файл телефонного справочника. По желанию пользователя можно создать,просмотреть, дополнить файл справочника,найти номер телефона по фамилии абонента,удалить компоненты файла-справочника.
Program TipFile3;
{Задача.Создать файл телефонного справочника.
По желанию пользователя можно создать,просмотреть,
дополнить файл справочника,найти номер телефона по
фамилии абонента,удалить компоненты файла-справочника.
Решение.Арсланов Ильдар,
ЦНИТ "Северная Звезда"
3.04.2000.}
Uses
Crt;
Type
sfio=string[20];
Sphone=string[10];
Rbook=record
Fio:sfio;
Phone:sphone;
end;
Var
BFile:File of Rbook;
Work:RBook;
vid:byte;
name:string[12];
Procedure Name_File;
Begin
Write('Введите имя файла:');
Readln(name);
End;
Procedure VvodRec;
Begin
Writeln('Ввод записи ј ',FilePos(bFile)+1);
With Work do
Begin
Write('Введите фамилию:');
Readln(Fio);
Write('Введите номер телефона:');
Readln(phone);
Write(BFile,Work);
End;
End;
Procedure CrBPhone;
Var
i,count:integer;
Begin
Name_File;
Assign(BFile,Name);
Rewrite(BFile);
Writeln('Введите число записей в справочнике ');
Readln(count);
For I:=1 to count do
Vvodrec;
Writeln('Создание справочника завершено');
Close(BFile);
End;
Procedure ProsRec;
Begin
Read(BFile,Work);
With Work do
begin
Writeln('Запись ј ',FilePos(bFile));
Writeln('Фио: ',Fio,' телефон: ',Phone);
end;
End;
Procedure ProsAllRec;
Begin
Name_File;
Assign(BFile,name);
Reset(BFile);
Seek(BFile,0);
Writeln('*******Вывод телефонного справочника**********');
While not Eof(BFile) do
ProsRec;
Writeln;
End;
Procedure IzmRec;
Var
NumRec:longint;
Begin
Name_File;
Assign(BFile,name);
Reset(BFile);
Write('Укажите номер изменяемой записи:');
Readln(NumRec);
Seek(BFile,NumRec-1);
Writeln('Старое значение записи:');
ProsRec;
Seek(BFile,NumRec-1);
Writeln('Новое значение записи:');
VvodRec;
Close(BFile);
End;
Procedure DopolRec;
Var
count,i:integer;
Begin
Name_File;
Assign(BFile,name);
Reset(BFile);
Seek(BFile,FileSize(BFile));
Writeln('Введите число дополнительных записей ');
Readln(count);
For I:=1 to count do
VvodRec;
Writeln('Измененный файл содержит ',FileSize(BFile),' записи');
Close(BFile);
End;
Procedure FindFio;
Var
Maska:sfio;
Flag:boolean;
Begin
Name_File;
Assign(BFile,name);
Reset(BFile);
Writeln('Введите фамилию для поиска: ');
Readln(Maska);
Flag:=False;
While not Eof(BFile) do
begin
Read(BFile,work);
With work do
If Pos(Maska,Fio)<>0
Then
begin
Flag:=True;
Writeln('Фамилия: ',Fio,' телефон: ',phone);
end;
end;
IfnotFlag
Then
Writeln('В справочнике нет абонентов с фамилией ',Maska);
Close(BFile);
End;
Procedure DeleteFile;
Begin
Name_File;
Assign(BFile,name);
Reset(BFile);
Truncate(BFile);
Writeln('Компоненты файла были успешно удалены');
End;
Begin
ClrScr;
Repeat
Writeln('ТЕЛЕФОННЫЙ СПРАВОЧНИК');
Writeln('Выберите вид работы:');
Writeln('1-Создание нового файла');
Writeln('2-Просмотр списка справочника');
Writeln('3-Изменение записи');
Writeln('4-Дополнение справочника');
Writeln('5-Поиск абонента');
Writeln('6-Удаление всех компонентов справочника');
Writeln('0-Выход');
Readln(vid);
Case Vid of
1:CrBPhone;
2:ProsAllRec;
3:IzmRec;
4:DopolRec;
5:FindFio;
6:DeleteFile;
0:Exit;
end;
Writeln;
Until Vid=0;
Read;
End.