Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Ввод и вывод двухмерного массива

Поиск

При обработке элементов двумерного массива используются сложные (вложенные) циклы.

Пример 7.10. Ввести с пульта элементы массива A[M, N].

Приведем блок-схему сложного цикла.

Внутренний цикл
Внешний цикл

Здесь используются две целочисленные переменные I и J, определяющие номера строк и столбцов, т.е. положение элемента массива. Программисту надлежит внимательно относиться к назначению и изменению индексов (в циклах) и неукоснительно выполнять следующие требования к сложным (вложенным) циклам:

– параметры внутреннего и внешнего циклов имеют различные имена;

– внутренний цикл полностью лежит внутри внешнего;

– недопустим вход во внутренний цикл, минуя внешний.

Фрагмент программы имеет вид

For I:=1 to m do

For J:=1 to n do

Readln(A[I, J]);

или

For I:=1 to m do

For J:=1 to n do

Begin

Write(‘A[‘, I:2, ‘,’, J:2, ’]=’);

Readln(A[I, J]);

End;

Подумайте, в чем разница этих фрагментов, и в каких случаях удобнее использовать тот или иной вариант.

Пример 7.11. Вывести элементы двухмерного массива в виде матрицы.

For I:=1 to m do

begin

For J:=1 to n do Write(A[I, J]:10:2);

Writeln; {перевод курсора на новую строку}

End;

Обратите внимание, именно выделенные элементы этого фрагмента программы обеспечивают вывод элементов массива в виде четко выраженных строк и столбцов.

Пример 7.12. Вычислить сумму элементов квадратной матрицы X[N, N], стоящих на главной диагонали (элементов X[I, I].

1-й способ

2-й способ Sum:=0; For I:=1 to n do Sum:=Sum+X[I, I]; Writeln(Sum);
 
Sum:=0;

For I:=1 to n do

For J:=1 to n do

If I=J then Sum:=Sum+X[I, J];

Writeln(Sum);

Пример 7.13. Сортировка массива. В одномерном массиве X[N] произвести перестановку так, чтобы элементы были расположены по возрастанию, т.е.

Рассмотрим метод «пузырьков». Идея метода заключается в последовательном упорядочении смежных пар элементов массива

.

В итоге максимальный элемент переместится в конец, т.е. в n -ю позицию.

Затем эту процедуру повторяют для (n -1) элементов, т.е. для элементов , и наибольший из них помещают в (n –1)-ю позицию и т.д., вплоть до цепочки из 2 элементов: х 1 и х 2.

Такой алгоритм имеет структуру двух вложенных друг в друга циклов. Причем внутренний цикл является циклом переменной (сокращающейся) длины.

 

For I:=1 to N-1 do

For K:=1 to N-1 do

If X[K]> X[K+1] then

Begin

A:= X[K]

X[K]:= X[K+1];

X[K+1]:=A;

End;

 

Типизированная константа

В процессе отладки программы вводить каждый раз элементы массива занятие весьма утомительное. В этих случаях для ввода элементов массива удобно использовать типизированную константу. В отличие от нетипизированной константы, в описании типизированной константы указываются как тип, так и значение константы.

 

 

Формат типизированной константы:

Const

<Имя массива>: Array[<тип индексов>] of (<тип элементов>) =

(<значения элементов массива>);

Например.

Var

A1: Array[1..5] of integer = (1, 2, 3, 4, 5);

A2: Arrey[1..2,1..3] of real = ((0.5, 1.2, 3),

(6, 7, 3.2));

Здесь инициализированы два массива: одномерный массив А1 с элементами {1, 2, 3, 4, 5} и двухмерный массив – матрица

.

 

Контрольные вопросы и задания

1. Что такое массив? Что такое индекс, каким требованиям он удовлетворяет?

2. Два способа описания массивов (явное и неявное).

3. Понятие размера и размерности массива.

4. Особенности расположения элементов массива в памяти ПК.

5. Организация ввода и вывода элементов массива.

6. На плоскости своими координатами задано 5 точек. Найти расстояние от самой удаленной от начала координат точки.

7. Написать фрагмент программы, выводящий элементы двухмерного массива в виде матрицы.

 

 


Лекция 8.

Работа с внешними файлами данных

 


Общие сведения

Большие совокупности данных (списки, справочники и т.д.) удобно хранить на внешних носителях в виде файлов. Паскаль имеет средства для организации хранения информации на внешних носителях и доступа к этой информации.

В качестве внешнего носителя может служить как винчестер, так и дискетка. Такие файлы называют внешними файлами данных (ВФ).

До сих пор исходные данные вводились с клавиатуры. При этом ни исходные данные, ни результаты счета не сохранялись. Всякий раз их приходилось вводить заново. Это неудобно, особенно когда данных много (например, массивы), и трудоемко, особенно в процессе отладки программы.

Таким образом, целесообразность применения внешних файлов данныхобоснована следующим:

– ввод больших объемов исходных данных с клавиатуры утомителен и требует большого количества времени; гораздо удобнее создать файл данных заранее и использовать его неоднократно;

– внешний файл данных может быть подготовлен другой программой, другим программистом.

В Паскале существует несколько типов внешних файлов. По способу доступа к элементам различают файлы последовательного и прямого доступа.

Файл последовательного доступа – это файл, доступ к элементам которого обеспечивается в той же последовательности, в какой они записывались в файл. Например, если нужно прочесть 100-й элемент, то предварительно нужно прочесть первые 99 элементов этого файла.

Файл прямого доступа – это файл, доступ к элементам которого осуществляется по адресу этого элемента. В этом случае для чтения 100–го элемента достаточно указать номер его позиции.

В этом курсе рассматриваются только внешние файлы последовательного доступа, в которых данные записываются в виде символов. Такие внешние файлы называются текстовыми файлами. Различная документация, информация, передаваемая по каналам электронной связи, – это все текстовые файлы.

Текстовый файл представляет собой последовательность символов, разбитую на строки длиной от 0 до 256 символов. Каждая строка заканчивается специальным кодом – маркером конца стоки (МКС). А весь файл заканчивается маркером конца файла (МКФ).

Схематично это выглядит так:

Текущий указатель

S 11 S 12 ……….. S 1 n MKC S 21 S 22 S 2 n MKC МКФ

В любой момент времени программе доступен только один элемент файла, тот, на который ссылается текущий указатель файла.

Текстовый файл можно создать или отредактировать в текстовом редакторе или программно. Его можно просмотреть на экране, распечатать на принтере.

 

Файловая переменная

Допустим, исходные данные хранятся во внешнем файле Dan1.pas на каком-либо носителе (на винчестере или на дискете). Вопрос, как он был создан, рассмотрим позже.

Наряду с именем конкретного файла на конкретном носителе вводится понятие файловой переменной (ФП).

Имя файловой переменной назначается в соответствии с синтаксисом, например F, F1, Finp, Fout. Прежде всего, файловая переменная должна быть объявлена в программе в разделе описаний. Для описания файловой переменной текстового файла используется стандартный тип – Text.

Формат описания: Var <имя ФП>: Text;

Затем в программе необходимо проинформировать компилятор о местонахождении внешнего файла. Для этого устанавливается связь между ФП и конкретным внешним файлом на конкретном носителе.

Связь между внешним файлом и файловой переменной в программе устанавливается с помощью процедуры Assign.

Формат процедуры: Assign(<имя ФП>,<имя ВФ>);

Это можно представить следующей схемой:

Например.

Assign(Finp,’Dan1.pas’); {ВФ находится в текущей папке}

Assign(Finp,’A:\Dan1.pas’); { ВФ находится на диске А:}



Поделиться:


Последнее изменение этой страницы: 2016-09-20; просмотров: 560; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.138.113.44 (0.011 с.)