Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
620251-ПБ / МУ_ЛР_Информатика / ЛР №6 Delphi циклы и массивы.doc
Скачиваний:
69
Добавлен:
16.03.2016
Размер:
234.5 Кб
Скачать
    1. Считывание массива из файла

Чтобы сто раз не вводить одно и то же, удобно организовать считывание элементов массива из текстового файла. В каждой строчке такого файла записан один элемент массива (Рис. 6, а).

2.0

14.5

-15.3

2.0 3.0 4.0

3.0 -2.5 14.3

16.2 18.0 1.0

а) одномерный массив

б) двумерный массив

Рис. 6 – Файлы для хранения массивов.

Считывание делается примерно следующим образом:

TYPE TA=ARRAY[1..10] OF REAL;

VAR a:TA; f:TEXTFILE; i:BYTE;

BEGIN

ASSIGNFILE(f,'1.txt');

RESET(f);

FOR i:=1 TO 10 DO

READLN(f,a[i]);

CLOSEFILE(f);

Преобразование типов (из файла считывается текстовая строка, а в массив оно заносится как вещественное число) выполняется автоматически процедурой READLN.

Если массив двумерный, то удобно в каждой строчке файла располагать несколько его элементов, разделяя их пробелами. Давайте считаем массив 33 элемента, показанный на Рис. 6, б:

TYPE TA=ARRAY[1..3,1..3] OF REAL;

VAR a:TA; i,j:BYTE; f:TEXTFILE;

BEGIN

ASSIGNFILE(f,'1.txt');

RESET(f);

// Цикл по строкам файла

FOR i:=1 TO 3 DO

BEGIN

// Цикл по числам внутри строки

FOR j:=1 TO 3 DO

READ(f,a[I,j]);

// Считывание символов конца строки

READLN(f)

END;

CLOSEFILE(f);

В приведенном фрагменте используется процедура READ, которая считывает не строку целиком, а ее часть до следующего пробела. После считывания всех чисел из строки нужно перейти на следующую строчку, для чего применяется процедура READLN(f). Данных она не считывает, а просто переходит к следующей строке файла.

    1. Поиск максимума и минимума

Допустимые отклонения размеров деталей будут накапливаться

однонаправленно, чтобы причинить максимум трудностей при сборке.

Из законов Мэрфи

Очень часто встречается задача нахождения минимального или максимального элемента в массиве. Существует много неправильных способов ее решения. А вот как выглядит правильный:

CONST Nmax=10; { число элементов в массиве }

TYPE TA=ARRAY[1..Nmax] OF REAL;

VAR a:TA; i:BYTE; max: REAL;

BEGIN

// заполнение массива

FOR i:=1 TO Nmax DO

a[i]:=RANDOM;

max := a[1];

FOR i:=2 TO Nmax DO

IF a[i]>max THEN

max:=a[i];

Label1.Caption:=

'Максимальный элемент равен '+FloatToStrF(max,ffFixed,10,4);

Суть этого способа в том, что сначала мы принимаем первый элемент массива за максимальный, а потом сравниваем с ним все остальные элементы, начиная со второго. Если очередной элемент окажется больше, мы запоминаем его значение в переменной max.

  1. Объекты исследования, оборудование, материалы и наглядные пособия

Для выполнения работы применяеются:

- IBM-совместимый ПК с ОC Windows XP, 7, 8;

- файловый менеджер Far Commander;

- среда программирования Delphi версий 7.0 и выше.

  1. Задание на работу

Пример задания на ЛР:

Составить программу вычисления значений функции Z(x):

,

если и- элементы массивов, состоящих изN элементов, где .

  1. Порядок выполнения работы

  1. Определить структуры данных (массивы) в разрабатываемом алгоритме.

  2. Выявить цикл (-ы) в разрабатываемом алгоритме.

  3. Подобрать нужный тип оператора цикла.

  4. Реализовать алгоритм в программном коде

  5. Отладить программу

  1. Содержание отчета

Отчет содержит распечатку текста программы и копии экрана работающей программы.

  1. Список использованных источников

  1. Информатика:Базовый курс : учеб.пособие для втузов / под ред.С.В.Симоновича .— 2-е изд. — М.[и др.] : Питер, 2009 .— 640с. : ил. — (Учебник для вузов) .— Библиогр.в конце кн. — ISBN 5-94723-752-0 /в пер./ : 185.00.

  2. Степанов А.Н. Информатика : учеб.пособие для вузов / А.Н.Степанов .— 5-е изд. — М.[и др.] : Питер, 2007 .— 765с. : ил. — (Учебник для вузов) .— Библиогр.в конце кн. — ISBN 978-5-469-01348-8 /в пер./ : 250.52.