Автор работы: Пользователь скрыл имя, 29 Октября 2013 в 15:08, курсовая работа
Массив - упорядоченные данные одного типа. Массивом часто обозначают характеристики объектов одного типа, имеющих одинаковые единицы измерения. Массив состоит из элементов, имеющих порядковые номера, т. е. элементы массива упорядочены. Таким образом, если объекты одного типа обозначить именем, например "A", то элементы объекта будут A[1], A[2] и т. д. В квадратных скобках указан номер элемента
I ЧАСТЬ
• Теоретический материал по теме: «Массивы»………………………………………
• Постановка задачи…………………………………………………………………….
• Таблица соответствия обозначений………………………………………………….
• Построение алгоритма. Схема алгоритма главной программы и подпрограммы..
• Описание программы…………………………………………………………………
• Процедуры и функции языка программирования Паскаль, используемые
в программе……………………………………………………………………………
•Программа на языке Паскаль…………………………………………………………
• Тестирование и отладка программы………………………………………………….
II ЧАСТЬ
• Теоретический материал по теме: «Записи и файлы»……………………………….
• Таблицу соответствия полей записи………………………………………………….
• Таблица с исходными данными……………………………………………………….
• Схему алгоритма создания файла……………………………………………………..
• Таблицу с исходными данными для создания файла………………………………..
• Программы создания файла……………………………………………………………
• Схему алгоритма обработки файла……………………………………………………
• Программу обработки файла…………………………………………………………..
• Таблицу с результатами обработки файла……………………………………………
• Список литературы………………………………
СОДЕРЖАНИЕ
I ЧАСТЬ
• Теоретический материал по теме: «Массивы»………………………………………
• Постановка задачи………………………………………………………………
• Таблица соответствия обозначений…………………………………………………
• Построение алгоритма. Схема алгоритма главной программы и подпрограммы..
• Описание программы………………………………………………………
•Программа на
языке Паскаль……………………………………………
• Тестирование и отладка программы………………………………………………….
II ЧАСТЬ
• Теоретический материал по теме: «Записи и файлы»……………………………….
• Таблицу соответствия
полей записи………………………………………………
• Таблица с исходными данными……………………………………………………….
• Схему алгоритма создания файла……………………………………………………..
• Таблицу с исходными данными для создания файла………………………………..
• Программы создания файла……………………………………………………………
• Схему алгоритма
обработки файла………………………………………
• Программу обработки файла……………
• Таблицу с результатами обработки файла……………………………………………
• Список литературы……………………………………………………
ЧАСТЬ I
ТЕОРЕТИЧЕСКИЙ МАТЕРИАЛ ПО ТЕМЕ МАССИВЫ
Массив - упорядоченные данные одного типа. Массивом часто обозначают характеристики объектов одного типа, имеющих одинаковые единицы измерения. Массив состоит из элементов, имеющих порядковые номера, т. е. элементы массива упорядочены. Таким образом, если объекты одного типа обозначить именем, например "A", то элементы объекта будут A[1], A[2] и т. д. В квадратных скобках указан номер элемента. Порядковый номер элемента массива, обычно не несет никакой информации о значении элемента, а показывает расположение элемента среди других. К элементам массива можно обращаться только по их номеру (индексу). Значения элементам массива присваиваются также как и другим переменным с учетом типа массива. Если элементы массива имеют один индекс, то массив называется одномерным или линейным, либо массив - вектор. Значения элементов одномерного массива обычно выводят на экран или бумагу в виде столбца или строки. В некоторых случаях удобно элементы массива пронумеровывать двумя независимыми индексами, такие массивы называются двумерными или матрицами. Значения элементов двумерного массива обычно выводят на экран в виде таблицы. Если элементы массива имеют три независимых индекса, то массив называется трехмерным. Значения элементов трехмерного массива обычно выводят на экран в виде набора таблиц.
Описание массивов:
Var A : array[1..30] of byte; S : array[1..30] of string; SO: array[1..30] of string[12];
Присвоение значений элементам массива "A": A[1]:=5; A[2]:=4; и т. д.
Присвоение значений элементам массива "S ": S[1]:= 'Иванов'; S[2]:= 'Петров'; и т. д.
При выводе массива на экран удобно размещать данные в виде таблицы - в несколько колонок. Для вывода обозначений переменных ("шапки таблицы") можно использовать операторы вывода символов в цикле, например:
For j:=1 to 66 do Write('-'); Writeln; For
j:=1 to 3 do Write('| Фамилия | оценка |'); Writeln;
For j:=1 to 66 do Write('-'); Writeln;
В цикле удобно определять сумму элементов
массива, наибольший (наименьший) элемент
и создавать новые массивы, удовлетворяющие
некоторому условию, например:
s := 0; for i := 1 to 100 do s:= s + a[i]; { s - сумма элементов
массива}
a_max:=a[1];
for i:= 1 to 100 do { поиск наибольшего элемента a[j] }
if a[i] > a_max then begin a_max:= a[i]; j:= i; end;
j := 0; k := 0; for i:=1 to 100 do {создание новых массивов с элементами: b[j]>=0, c[k]<0}
if a[i] >= 0 then begin j := j+1; b[j] := a[i]; end else begin k := k+1; c[k] := a[i]; end; j := 0; k := 8;
for i:= 1 to 100 do {создание массива номеров "M" для
элементов: a[i] > a[k]}
if a[i] > a[k] then begin j := j+1; M[j] := i; end;
Двумерные массивы отличаются от линейных, одномерных лишь тем, что имеют элементы, упорядоченные по двум индексам и часто называются матрицами. В Турбо-Паскале при описании многомерного массива диапазоны изменения индексов перечисляются через запятые, например: Var A: array[1..30, 1..7] of byte;
Работу с двумерными
массивами легко иллюстрировать
массивом оценок учеников класса по нескольким
предметам. В данном случае оценка будет
являться значением элемента массива
оценок "A" и иметь порядковый номер
(два индекса). Первому индексу можно поставить
в соответствие номер фамилии в списке
учеников, а второму - номер предмета, по
которому получена оценка. Тогда двумерный
массив оценок можно представить в виде
таблицы: каждый элемент a[i,j] будет находиться
на пересечении I-ой строки и J-го столбца.
Сам двумерный массив можно задать
с использованием функции Random, например:
for i:= 1 to N do for j:= 1 to M do A[i, j]:= random(4) + 2;
Для вывода "шапки"
таблицы можно использовать операторы:
Writeln; Write('Фамилия\\Предметы:|'); For i:= 1 to M
do write(P[i]:9,' |');
Для вывода элементов
массива "A" на экран удобно использовать вложенный цикл:
for i:= 1 to N do begin writeln; write(S[i]:19, ' |'); for j:= 1 to
M do write(A[i,j]:7, ' |'); end;
Если порядковый номер предмета изменится, то необходимо изменить расположение оценок в массиве "A", например, перестановку колонок с оценками по физике и химии можно сделать операторами: for j:= 1 to N do begin a1:=A[1,j]; A[1,j]:=A[2,j]; A[2,j]:=a1; end;
Дана матрица N(строки)xM(
Индивидуальное задание: определить на каких станциях общий объём услуг составляет выше 300.
Решение:
В задании дана матрица NxM. Согласно варианту №16 количество станций N=3. По условию задачи количество услуг М=6. Согласно индивидуальному заданию, требуется определить на каких станциях общий объём услуг составляет выше 300. Это значит, что нужно найти сумму элементов матрицы в каждой строке и вывести на экран те номера строк, где полученные значения будут больше 300. Таким образом исходная матрица 3x6, а количество услуг, оказанных каждой станцией, определяется формулой aij=random(30*k+50), где k=16 – номер варианта.
ТАБЛИЦА 1. СООТВЕТСТВИЯ ОБОЗНАЧЕНИЯ ЗАДАНИЯ №16
Идентификатор |
Назначение |
A |
Исходный двумерный массив, из элементов целочисленного типа |
С |
Массив, элементы которого равны суммам элементов массива А в соответствующих строках |
I, J |
Номер текущей строки и столбца элемента в массиве |
Summa |
Подпрограмма – функция, определяющая сумму элементов в i-ой строке массива А. |
Formirovka |
Подпрограмма – процедура, заполняющая массив С значениями сумм элементов массива А в соответствующих строках. |
Reshenie |
Подпрограмма – процедура, выводящая на экран номера тех строк массива А, суммы элементов в которых больше 300. |
Схема алгоритма основной программы приведена на рисунке 1. Схема начинается с блока НАЧАЛО. После этого запускается на выполнение цикл с известным количеством повторений FOR i:=1 to N do For j:=1 to M do Begin …End; создания исходного массива из элементов целочисленного типа с помощью счетчика случайных чисел. В данном случае N=3, M=6. Создаются числа положительные, поэтому в формулу вводится математическое выражение a[i,j]:=random(480)+50 (что означает , что числа будут формироваться в диапазоне от -50 до 50). Во вложенном цикле FOR по строкам и столбцам формируется и вводится в виде таблицы двумерный массив А.
Далее следует блок обращения к подпрограмме formirovka – заполнения массива объёмов и номеров станций. В результате работы этой подпрограммы указанный массив будет не только создан, но и выведен на экран. Аналогично представлен блок обращения к процедуре reshenie. Эта процедура не только выводит на экран номера станций, где объём услуг больше 300, как того требует задание, но и считает их количество. Кроме этого, она выводит на экран сообщение «Таких станций нет», если того требуют обстоятельства. Оканчивается схема блоком КОНЕЦ.
На рисунке 2 приведены БЛОК СХЕМЫ алгоритмов подпрограмм Summa, formirovka и zapolnenie. Схемы начинаются с блока ВХОД. В подпрограмме Summa осуществляется подсчёт значения S – суммы элементов i – ой строки массива А. Для этого значение S обнуляется и с каждым шагом цикла for l:=1..M do увеличивается на значение элемента A[I,l] – следующего элемента строки массива А. После чего, найденное значение S присваивается значению подпрограммы – функции Summa. Процедура Formirovka, в свою очередь, циклом for i:=1..N do заполняет массив С, используя для работы функцию Summa. Так как элементы массива С представлены в виде такой структуры, как запись, то, поле k элементов C[i] позволяет сохранять ещё и номер соответствующей строки. Далее, эта же процедура выводит на экран значения полей элементов массива С, используя, как и прежде, цикл for. Подпрограмма Reshenie средствами цикла for i:=1 to N do проверяет, не содержит ли текущий элемент массива C значение, меньшее 100. В случае, если такой элемент найден, на экран не только выводится необходимое сообщение, но и происходит подсчёт таких станций, увеличением значения f. На смену циклу приходит условный оператор, проверяющий условие f<>0 и выводящий на экран соответствующее сообщение.
Программа состоит из трех частей: заголовка, раздела описания констант, типов, переменных, объявления процедур, функций и тела программы.
program ex16_1; const N=3; M=6; type mas=array[1..N,1..M+1] of integer; zap=record B,k:integer; end; mas1=array[1..N] of zap; var A:mas; C:mas1; i,j,f:integer; function summa(i:integer):integer; var l,S:integer; begin S:=0; for l:=1 to M do begin S:=S+A[i,l]; end; summa:=S; end; procedure formirovka; var i:integer; begin for i:=1 to N do begin C[i].B:=summa(i); C[i].k:=i; end; writeln('Исходные значения:'); for i:=1 to N do begin writeln('Объём=',C[i].B,' Номер станции=',C[i].k); end; end; procedure zapolnenie; var f,i:integer; begin f:=0; for i:=1 to N do begin if C[i].B<100 then begin writeln('Номер станции, где объём услуг<100: ',C[i].k); f:=f+1; end; end; if f<>0 then begin writeln('Таких станций= ',f); end else writeln('Таких станций нет'); end; begin for i:=1 to N do begin for j:=1 to M do begin A[i,j]:=random(390)-50; write(' ',A[i,j]); end; writeln; end; zapolnenie; proverka; end. |
Заголовок программы с именем ex13_1 Раздел констант Раздел описания типов Двумерный массив, целочисленного типа Тип – запись Одномерный массив Раздел описания переменных Раздел описания функций Функция Summa
Процедура formirovka
Процедура zapolnenie
Тело программы |
Вложенный цикл повтора FOR .
for i:=1 to N do for j:=1 to M do - Для i , изменяющегося от1 до N делать
begin - Начало тела цикла
A[i,j]:=random(390)-50 - Функцией RANDOM формируется положительное число в диапазоне от -50 до 50.
write(A[i,j]); - Процедурой вывода распечатывается полученный массив в виде таблицы.
end
for i:=1 to N do
begin
C[i].B:=summa(i);
C[i].k:=i;
end;
for l:=1 to M do
begin
S:=S+A[i,l];
end;
summa:=S;
if C[i].B<100
then begin
writeln('Номер станции,
где объём услуг>300: ',C[i].k);
f:=f+1;
end;
if f<>0
then begin
writeln('Таких станций= ',f); выводится соответствующее
end
else writeln('Таких станций нет');
Информация о работе Теоретический материал по теме: «Массивы»