МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ
ОРЛОВСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
ФИЛИАЛ В г. БРАТСКЕ
Информатика и программирование
Курсовая работа
Выполнил:
Студент гр. ПИ-03-Дн
Научный руководитель:
С.т. преподаватель
Братск 2004
Введение
Паскаль – язык профессионального программирования, который назван в честь французского математика и философа Блеза Паскаля (1623–1662) и разработан в 1968–1971 гг. Никлаусом Виртом, для обучения студентов методам разработки программ, таким как "программирование сверху вниз", "структурное программирование" и т. д. Вирту не понравился не один из существующих на тот момент языков, и в 1968 году он приступил к разработке своего собственного. Первая версия языка была создана для компьютера CDC 6000.Благодаря своей четкости, логичности и другим особенностям Паскаль надолго занял свою нишу, являясь прекрасным языком для обучения программированию. Паскаль использовался и для разработки серьезных программ- приложений. Шутили, что Вирт разработал игрушку, но многие отнеслись к ней слишком серьезно
Впоследствии появились различные версии языка и его расширения. Наиболее известным расширением стал пакет Турбо Паскаль фирмы Borland, появившийся в 1983 году и сразу ставший событием в мире компьютерных технологий.
Турбо Паскаль – это система программирования, созданная для повышения качества и скорости разработки программ (80-е гг.). Слово Турбо в названии системы программирования – это отражение торговой марки фирмы-разработчика Borland International (США).
Систему программирования Турбо Паскаль называют интегрированной
(
integration – объединение отдельных элементов в единое целое) средой программирования, т.к. она включает в себя редактор, компилятор, отладчик, имеет сервисные возможности.
Первое упоминание о нем содержалось в рекламе опубликованной в журнале Byte, а сам пакет предназначен для операционной системы CP/M. В начале 1984 года он был перенесен в среду MS-DOS и приобрел огромную популярность. С тех пор появилось несколько версий Турбо Паскаля, последняя- седьмая.
I. Преобразование и построение матриц.
Массив – это совокупность объектов, состоящая из фиксированного упорядоченного числа элементов, имеющих один и тот же тип.
Массивы могут быть одномерными и многомерными (двух-, трехмерными и т. д.). Примером одномерных массивов может быть список фамилий учеников класса, многомерных - таблица умножения, классный журнал, аттестат зрелости.
Элементы, образующие массив, упорядочены таким образом, что каждому элементу соответствует номер (индекс), определяющий его местоположение в общей последовательности. Доступ к каждому элементу осуществляется путём индексирования.
Для описания массива используется словосочетание array of (массив из) и имеет вид:
array [тип индекса] of <тип>
Тип индекса – любой порядковый номер, определяющий границы изменения значений индекса.
Описание массива задается следующим образом:
<имя типа> = array [тип индекса] of <тип данных>;
mas=array [1..m] of integer; {массивиз m целыхчисел}
digit = array [0 .. 9] ofchar; {массив десяти символов, имеющих порядковые номера от 0 до 9}
matrix = array [byte] ofstring; {массив 256 строк, пронумерованных с 0 до 255}
Тип данных – это числа среди которых бывают константы и переменные. Они могут быть различных типов:
· целыечисла(byte, shortInt, word, integer, longInt);
· действительные числа (real);
· символьный тип чисел (char);
· строковый тип чисел (string);
· логический тип чисел (boolean);
· сложные типы чисел (комбинированный (record), множественный (set) и другие).
. Количество элементов называется размером массива. Тип элементов определяет тип массива. Размер и тип массива указываются при его описании, причем размер может быть указан либо конкретным значением, либо ранее определенной константой. Номер элемента называется индексом. Индексы могут быть целыми положительными константами или целыми переменными. Чтобы обратиться к некоторому элементу массива, нужно рядом с идентификатором массива в скобках указать индекс элемента.
Но часто данные могут быть организованы в виде таблицы (матрицы), где расположение каждой переменной определяется номером строки и номером столбца. Например, место в зрительном зале задается указанием номера ряда и номером места в этом ряду. Такие данные удобно описать как двумерный массив. В отличие от одномерного массива каждому элементу двумерного массива соответствует пара индексов. Первый индекс – это номер строки, а второй – номер столбца, где расположен элемент массива.
Размер двумерного массива задается парой чисел: M*N, где M – число строк, а N – число столбцов в таблице.
Пусть задан двумерный массив Matr, имеющий размер 10*20. Этот массив на языке Паскаль может быть описан следующим образом:
Var
Matr : array [1..10,1..20] of integer;
тогда
Matr[5,7] – элемент, расположенный в 5-ой строке и в 7-ом столбце.
Любая константа, переменная, значение функции или выражения в Турбо Паскале характеризуется своим типом. Тип любого из этих объектов определяет множество допустимых значений, которые может иметь объект, а также множество допустимых операций, которые применимы к объекту. Кроме того, тип определяет и формат внутреннего представления значения объекта.
Отличительной особенностью массивов является то обстоятельство, что все их компоненты суть данные одного типа (возможно, структурированного); эти компоненты можно легко упорядочить и обеспечить доступ к любому из них простым указанием его порядкового номера
Цель задания:
Даны целочисленная матрица размера nx3, целые числа k, l (1<=k<=n, 1<=l<=n, k ≠1). Преобразовать матрицу так , чтобы строка с исходным номером k непосредственно следовала за строкой с исходным номером l, сохранив порядок следования остальных строк.
Блок схема:
Решение:
Program perestanovka;
Uses Crt;
Var a: array[1..5,1..3] of integer;
i,j,k,l,n,t:integer;
Begin
writeln('Введитечисло');
readln(n);
ClrScr;
for i:=1 to n do
Begin
for j:=1 to 3 do
Begin
writeln('Введитечисло:');
readln(a[i,j]);
End;
End;
writeln('Исходныймассив');
for i:=1 to n do
Begin
for j:=1 to 3 do
write(a[i,j]:4);
writeln;
End;
writeln;
write('k=');
readln(k);
write('l=');
readln(l);
if k<l then
Begin
for i:=k to l-1 do
Begin
for j:=1 to 3 do
Begin
t:=a[i,j];
a[i,j]:=a[i+1,j];
a[i+1,j]:=t;
End;
End;
End
else
Begin
for i:=k downto l+2 do
Begin
for j:=1 to 3 do
Begin
t:=a[i,j];
a[i,j]:=a[i-1,j];
a[i-1,j]:=t;
End;
End;
End;
writeln('Перестановленныймассив');
for i:=1 to n do
Begin
for j:=1 to 3 do
write (a[i,j]:4);
writeln;
End;
End.
II. Работа с комбинированными типами данных.
Цель задания:
1. Получение навыков в организации ввода/вывода значений комбинированных типов данных.
2. Получение практических навыков программирования задач с использованием записей.
1.1ДАННЫЕ - информация, представленная в формализованном виде, что обеспечивает возможность ее хранения, обработки и передачи.
Программы на языке Паскаль имеют блочную структуру:
1) Блок типа PROGRAM – имеет имя, состоящее только из латинских букв и цифр. Его присутствие не обязательно, но рекомендуется записывать для быстрого распознавания нужной программы среди других листингов.
2) Программный блок, состоящий в общем случае из 7 разделов:
•раздел описания модулей (uses);
•раздел описания меток (label);
•раздел описания констант (const);
•раздел описания типов данных (type);
•раздел описания переменных (var);
•раздел описания процедур и функций;
•раздел описания операторов.
Общая структура программы на языке Паскаль следующая:
Рrogram ИМЯ
..; {заголовок программы}
Uses ...; {раздел описания модулей}
Var ..; {раздел объявления переменных}
...
Begin {начало исполнительной части программы}
... {последовательность
... операторов}
End. {конец программы}
2.1 Постановка задания:
Составить список учебной группы, включающей 25 человек. Для каждого студента указать дату рождения, год поступления в институт, курс, группу, оценки каждого года обучения. Информацию о каждом учащемся оформить в программе в виде записи. Совокупность записей объединить в массив.
Составить программу, которая обеспечивает ввод полученной информации, распечатку её в виде таблицы, а также распечатку информации согласно конкретному варианту.
Вариант: Упорядочить список студентов по среднему балу и распечатать его.
Решение:
Program spisok_grupp;
Uses Crt ;
Const kurs=3;
Const kol=5;
Type
sved=record
famil:string[25];
datar:string[8];
god: integer;
gruppa: integer;
ocenki:array[1..3,1..5] of integer;
srball:array[1..25] of real;
End;
Var
spisok: array[1..25] of sved;
i,i1,j, s,mesto,n,g:integer;
max,t:real;
q:string[25];
Begin
ClrScr;
writeln('Введите количество учеников');
readln(n);
for i:=1 to n do
With spisok[i] do
Begin
Writeln ('Фамилия ',i,' студента');
Readln (famil);
Writeln('Датарождения');
Readln (datar);
Writeln ('Годпоступления');
Readln (god);
Writeln ('Группа');
Readln (gruppa);
s:=0;
for i1:=1 to kurs do
begin
writeln('Оценки ',i1,' года');
for j:=1 to kol do
Begin
Writeln (j,' Предмет');
Readln (ocenki[i1,j]);
s:=s+ocenki[i1,j];
End;
end;
srball[i]:=s/(kol*kurs);
ClrScr;
End;
writeln('Фамилия':8,'Дата рождения':16,'Год поступления':18,'Курс':7,'Группа':8);
for i:=1 to n do
begin
with spisok[i] do write(famil:8,datar:16,god:18,kurs:7,gruppa:8);
writeln;
writeln;
for g:=1 to kurs do
begin
write(g,' год:');
for j:=1 to kol do
with spisok[i] do write(ocenki[g,j]:4);
writeln;
end;
with spisok[i] do writeln('Среднийбал =',srball[i]:6:2);
writeln;
end;
writeln;
writeln('Попорядку');
for j:=1 to n do
Begin
max:=spisok[j].srball[j];
mesto:=j;
for i:=j to n do
if spisok[i].srball[i]<=max then
Begin
max:=spisok[i].srball[i];
mesto:=i;
End;
t:=spisok[j].srball[j];
spisok[j].srball[j]:=spisok[mesto].srball[mesto];
spisok[mesto].srball[mesto]:=t;
q:=spisok[j].famil;
spisok[j].famil:=spisok[mesto].famil;
spisok[mesto].famil:=q;
with spisok[j] do writeln(famil:8,srball[j]:6:2);
End;
End.
III. Работа с файлами.
Цель задания:
1. Изучение файловых типов.
2. Получение практических навыков работы с файлами.
ФАЙЛ (от англ. file, основные значения), совокупность упорядоченных и взаимосвязанных записей, имеющая описание для идентификации отдельных записей.
Язык Турбо Паскаль предлагает три вида такого представления:
- типизированные файлы,
- текстовые файлы,
- нетипизированные файлы.
Типизированный файл – последовательность элементов одного типа.
Текстовый файл – файлы символьных данных. Текстовые файлы имеют тип text.
Нетипизированные файлы – это файлы, поддержка которых осуществляется с максимально возможной скоростью. Введение таких файлов в систему Турбо Паскаль было вызвано стремлением повысить эффективность программ, участвующих в интенсивном обмене с внешними наборами данных.
Для работы с файлами используются следующие функции:
- Assign – функция, ассоциирующая имя файла с некоторой переменной, с которой и идет последующая работа.
- Reset – функция, открывающая уже существующий файл для чтения из него.
- Rewrite – функция, создающая новый файл, или перезаписывающая старый.
- Readln – чтение из указанного файла строки с переходом на следующую строку.
- Writeln – запись в указанный файл строки с переходом на следующую строку.
Вообще, файл рассматривается не просто как несколько строк, а как запись (record), что значительно упрощает работу с файлами.
Поставленная задача:
Подготовить данные и организовать ввод данных в файл. Организовать чтение файла и вывод нужной информации.
Дан файл f, содержащий различные даты. Каждая дата – это число, месяц и год. Год с наименьшим номером.
Решение:
program spisok;
uses crt;
var f:text;
name,txt,s,a: string;
s1,min,y:integer;
begin
clrscr;
write('Введите имя файла для записи текста:');
readln(name);
writeln;
assign(f,name);
rewrite(f);
repeat
write('введитедату:');
readln(txt);
writeln(f,txt);
until txt='';
close (f);
writeln;
reset (f);
min:= 9999;
while not eof(f) do
Begin
readln (f,a);
s:=copy(a,7,4);
val(s,s1,y);
if (s1<min) and (s1<>0) then min:=s1;
end;
writeln('наименьший год:',min);
close (f);
end.
|