
- •Содержание работы
- •Требования к программе
- •Объем работы
- •Форма сдачи работы
- •Расчётно графическая работа
- •Задание
- •Описание программы
- •Блок схема программы
- •Текст программы
- •Приложения
- •Структура текстового файла
- •Процедуры работы с текстовым файлом
- •Пример работы с текстовым файлом
- •Оформление экрана
- •Очистка экрана
- •Управление курсором
- •Управление звуком
- •Клавиши и коды
- •Пример программы выявления нажатия любой клавиши
- •Цвета символов и фона
- •Информатика
- •394000, Воронеж, пр. Революции, 19
Расчётно графическая работа
по дисциплине «Информатика»
Тема: «Вложенные циклы»
Выполнил : студент гр. А064
Иванов И.И.
Проверил: доц. каф. ММИиТС
Медведкова И.Е.
Воронеж 2006
Задание
Считать из файла целочисленную матрицу и вывести ее на экран, выделяя цветом те ее строки, в которых сумма элементов кратна N. N ввести с терминала и предусмотреть ее неоднократный ввод.
Описание программы
Программа состоит из 2-х основных частей.
Считывание матрицы из файла
Печать матрицы в соответствии с заданием.
Считывание из текстового файла dat.txt исходной матрицы М организовано построчно двумя вложенными циклами с предусловием (WHILE). Использование цикла с условием предпочтительнее по сравнению с циклом FOR, поскольку при этом исключается ситуация, когда программа пытается считать из файла целое число, а файл уже весь считан. Эта ситуация исключается потому что в цикле WHILE проверяется условие того, что конец файла не достигнут (Eof(f)=false).
После окончания считывания производится проверка: все ли элементы матрицы заполнены. Если в файле не было достаточного числа данных, то печатается диагностика: ‘ Проверьте данные в файле dat.txt’ и прогон прекращается.
2-я часть программы - печать матрицы. В задании оговорено, что это действие должно повторяться произвольное число раз по желанию пользователя.
Признаком того, что программу надо закончить является ввод запрашиваемой переменной N равной 0. Это условие проверяется в цикле с постусловием REPEAT.
Каждая итерация цикла REPEAT начинается с ввода переменной N. Потом матрица просматривается построчно. Для каждой строки считается сумма S, и если она равна N, то строка печатается красным цветом, а в противном случае – зелёным.
Блок схема программы
Текст программы
Program Matr;
Uses CRT;
Const kstr = 5;
Kstb = 7;
Var f: text;
M: array [1..kstr, 1.. kstb] of integer;
N, i, j, kstr, kstb : byte;
Begin
Assign (f, ‘dat.txt’);
Reset (f);
Readln(f, kstr, kstb);
i:=1;
While (Eof(f) = false) or (i> kstr) do {считывание всех строк
матрицы}
Begin
j:=1;
While (Eof(f) = false) or (j> kstb) do {считывание всех
элементов i –й строки матрицы}
Begin
Readln(f, M[I,j]); {считывание очередного элем.}
Inc(j); {переход к следующему элем. i –й строки}
End;
Inc(i); {переход к следующей строке матрицы}
End;
// Проверка, считаны ли все элементы матрицы
If (i<= kstr) or (j<= kstb) then {если не удалось считать
матрицу}
Begin
Writeln(‘ Проверьте данные в файле dat.txt’);
Exit; {Выход из программы}
End;
// считывание матрицы закончено
// Печать матрицы
{ Цикл, повторяющийся до тех пор, пока с терминала не будет введён признак конца – 0}
Repeat
ClrScr; {очистка экрана}
Goto XY (3,5);
Write (‘ введите число, кратность которому будет проверяться’);
Readln(N);
If N=0 then break {выход из цикла Repeat, если ведён
признак окончания }
{подсчёт построчных сумм и печать строк}
for i:= 1 to kstr do
begin
s:=0;
for j:= 1 to kstb do {подсчёт суммы i-й строки}
s:=s+M[i,j];
// печать i-й строки красным либо зелёным цветом
Goto XY (5,5);
If S mod N =0 then
Begin
TextColor (Red); {установка красного цвета символов}
for j:= 1 to kstb do {печать i-й строки}
writeln (M[i,j] :4);
End
else
Begin
TextColor (Green); {установка зелёного цвета
символов}
for j:= 1 to kstb do {печать i-й строки}
writeln (M[i,j] :4);
End
Until N=0;
End.
Результат прогона программы
Если исходный файл dat.txt таков:
6
1 3 5 4 0 10
8 1 3 3 7 1
12 4 3 1 0 1
2 2 2 2 2 2
Результатом работы программы будет:
введите число, кратность которому будет проверяться 6
1 3 5 4 0 10
8 1 3 3 7 1
12 4 3 1 0 1
2 2 2 2 2 2
В данном тексте красный цвет показан жирным шрифтом.
Контрольные вопросы
Какого назначение модуля CRT?
Общие о отличительные черты процедур ClrScr, ClrEol, DelLine .
Назначение процедуры GotoXY, функций WhereX и WhereY.
Какого назначение стандартных процедур Sound, NoSound и Delay ?
Какие процедуры используются для установления цвета фона и цвета символов?
Сколько цветов доступно для установления цвета фона?
Сколько цветов доступно для установления цвета текста?
Как, используя модули, создать области глобальных переменных, доступные в одних и недоступные в других модулях?
В чем состоит отличие сферы действия переменных в модуле и процедуре головной программы?
Каков порядок трансляции многомодульной программы?
Как задать каталог, куда будет помещён откомпилированный модуль?
Что содержит раздел интерфейса?
Что содержит исполняемый раздел?
Что содержит раздел инициализации?
В чем разница между разделом интерфейса и исполняемым разделом?
Когда выполняется раздел инициализации?
Может ли модуль не содержать раздел инициализации?
Как запустить на выполнение многомодульную программу?
Какие настройки надо установить в среде TURBO-PASCAL 7.0 для прогона программы, содержащей пользовательские модули?