
- •Методические указания к лабораторной работе №6 Программирование алгоритмов с циклами
- •Информатика-1
- •Содержание
- •Цели и задачи работы
- •Теоретические сведения
- •Цикл с предусловием
- •Вечный цикл
- •Цикл с постусловием
- •Цикл с переменной
- •Дополнительные операторы управления циклами
- •Вложенные циклы
- •Статические массивы
- •Многомерные статические массивы
- •Ввод-вывод массивов
- •Ввод с клавиатуры
- •Считывание массива из файла
- •Поиск максимума и минимума
- •Объекты исследования, оборудование, материалы и наглядные пособия
Считывание массива из файла
Чтобы сто раз не вводить одно и то же, удобно организовать считывание элементов массива из текстового файла. В каждой строчке такого файла записан один элемент массива (Рис. 6, а).
|
| ||
а) одномерный массив |
б) двумерный массив |
Рис. 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.
Если массив двумерный, то удобно в каждой строчке файла располагать несколько его элементов, разделяя их пробелами. Давайте считаем массив 33 элемента, показанный на Рис. 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). Данных она не считывает, а просто переходит к следующей строке файла.
Поиск максимума и минимума
Допустимые отклонения размеров деталей будут накапливаться
однонаправленно, чтобы причинить максимум трудностей при сборке.
Из законов Мэрфи
Очень часто встречается задача нахождения минимального или максимального элемента в массиве. Существует много неправильных способов ее решения. А вот как выглядит правильный:
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.
Объекты исследования, оборудование, материалы и наглядные пособия
Для выполнения работы применяеются:
- IBM-совместимый ПК с ОC Windows XP, 7, 8;
- файловый менеджер Far Commander;
- среда программирования Delphi версий 7.0 и выше.
Задание на работу
Пример задания на ЛР:
Составить программу вычисления значений функции Z(x):
,
если
и
- элементы массивов, состоящих изN
элементов, где
.
Порядок выполнения работы
Определить структуры данных (массивы) в разрабатываемом алгоритме.
Выявить цикл (-ы) в разрабатываемом алгоритме.
Подобрать нужный тип оператора цикла.
Реализовать алгоритм в программном коде
Отладить программу
Содержание отчета
Отчет содержит распечатку текста программы и копии экрана работающей программы.
Список использованных источников
Информатика:Базовый курс : учеб.пособие для втузов / под ред.С.В.Симоновича .— 2-е изд. — М.[и др.] : Питер, 2009 .— 640с. : ил. — (Учебник для вузов) .— Библиогр.в конце кн. — ISBN 5-94723-752-0 /в пер./ : 185.00.
Степанов А.Н. Информатика : учеб.пособие для вузов / А.Н.Степанов .— 5-е изд. — М.[и др.] : Питер, 2007 .— 765с. : ил. — (Учебник для вузов) .— Библиогр.в конце кн. — ISBN 978-5-469-01348-8 /в пер./ : 250.52.