
- •Введение
- •Глава 1. Основные сведения о работе на персональном компьютере
- •1.1. Конфигурация персонального компьютера
- •Клавиатура
- •Системный блок
- •Монитор
- •1.2. Файловая система ms dos
- •Примеры записи имен файлов
- •1.3. Команды ms dos
- •Системные команды
- •Команды работы с каталогами
- •Команды работы с файлами
- •Команды работы с группой файлов
- •Команды работы с дисками
- •1.4. Инструментальная система nc
- •Основные приемы работы в nc
- •1.5. Контрольные вопросы и задание
- •Тема 1. Конфигурация пк. Клавиатура
- •Тема 2. Файловая система ms dos
- •Тема 3. Команды ms dos
- •Тема 4. Работа в среде nc
- •Глава 2. Работа в интегрированной среде Турбо Паскаль 7.0
- •2.1. Организация вычислений в среде Турбо Паскаль
- •2.2. Главное меню
- •Команда File
- •Команда Edit
- •Команда Search
- •Команда Run
- •Команда Compile
- •2.3. Работа с окнами
- •2.4. Текстовый редактор
- •2.5. Интегрированный отладчик
- •Глава 3. Простейшие конструкции языка Турбо Паскаль
- •3.1. Алфавит языка
- •3.2. Константы и переменные
- •Пример раздела описания переменных
- •3.3. Арифметические выражения
- •Стандартные функции
- •Возведение в степень
- •Примеры программирования арифметических выражений
- •3.4. Контрольные задания
- •1. Составить раздел описания для заданных переменных
- •2. Записать на языке Турбо Паскаль числовые константы
- •3. Записать на языке Турбо Паскаль арифметические выражения
- •4. Записать в виде алгебраической формулы
- •Глава 4. Линейные вычислительные процессы
- •4.1. Оператор присваивания
- •Примеры использования оператора присваивания
- •4.2. Операторы ввода-вывода
- •Операторы ввода исходных данных с клавиатуры
- •Операторы вывода данных на экран
- •4.3. Структура основной программы
- •Общий вид основной программы
- •Пример линейной программы
- •4.4. Контрольные задания
- •1. Записать на языке Турбо Паскаль операторы присваивания
- •Глава 5. Разветвляющиеся вычислительные процессы
- •5.1. Логические выражения
- •Отношения
- •Примеры записи отношений на языке Турбо Паскаль
- •Логические операции
- •Порядок выполнения операций в логических выражениях
- •1. Not. 2. And. 3. Or. 4. Отношения.
- •Примеры записи логических выражений
- •5.2. Условные операторы
- •Короткий условный оператор
- •Полный условный оператор
- •Вложенные структуры условных операторов
- •5.3. Оператор выбора
- •5.4. Контрольные задания
- •1. Записать на языке Турбо Паскаль логические выражения
- •2. Записать на языке Турбо Паскаль логические выражения, принимающие значение true для точек, принадлежащих заштрихованной области (рис. 5.1).
- •3. Начертить на плоскости область, в которой логическое выражение имеет значение true
- •Глава 6. Циклические вычислительные процессы
- •6.1. Операторы цикла с условием
- •Оператор цикла while
- •Оператор цикла repeat…until
- •Основные отличия оператора цикла while от оператора цикла repeat…until
- •6.2. Операторы цикла с параметром
- •Правила использования операторов цикла с параметром
- •6.3. Базовые алгоритмы
- •6.4. Кратные циклы
- •Глава 7. Массивы
- •7.1. Понятие массива
- •7.2. Одномерные массивы
- •Описание одномерного массива
- •Индексные переменные
- •X[I] – индексная переменная (элемент массива).
- •Ввод-вывод одномерных массивов
- •Обработка одномерных массивов
- •7.3. Двухмерные массивы
- •Описание двухмерного массива
- •Ввод-вывод двухмерного массива
- •Обработка матриц
- •Глава 8. Подпрограммы
- •8.1. Структура сложной программы
- •8.2. Процедуры
- •Общий вид описания процедуры
- •Обращение к процедуре
- •Глобальные и локальные переменные
- •Пример программы с процедурой
- •Согласование параметров
- •Механизм замены параметров
- •8.3. Функции
- •Общий вид описания функции
- •Обращение к функции
- •Пример программы с функцией
- •8.4. Параметры-массивы
- •8.5. Примеры программирования задач с использованием подпрограмм
- •Задача 1
- •Задача 2
- •Задача 3
- •Задача 4
- •Глава 9. Текстовые данные
- •9.1. Символьный тип данных
- •Ввод-вывод символьных данных
- •Обработка символьных данных
- •9.2. Строковый тип данных
- •Ввод-вывод строковых данных
- •Обработка строковых данных
- •Пример программирования текстовой задачи
- •9.3. Контрольное задание
- •Глава 10. Записи и файлы данных
- •10.1. Понятие записи
- •10.2. Файлы данных
- •Способы объявления файлов данных
- •Доступ к файлам данных
- •Инициация файла
- •Стандарные функции и процедуры обработки текстовых файлов
- •Пример программирования задачи с использованием файлов данных
- •10.3. Пример решения задачи создания документа
- •4 5 5 Андреева с.В.
- •10.4. Контрольное задание
- •Заключение
- •Библиографический список
- •Приложение 1. Сообщения об ошибках
- •Приложение 2. Таблица альтернативной кодировки символов
Пример программирования задачи с использованием файлов данных
Создать файл F1, состоящий из целых чисел по 6 чисел в строке. Числа могут быть как положительными, так и отрицательными. Переписать из файла F1 все положительные числа в файл F2, оставляя их в этих же строках.
Решение
Пусть для хранения файлов используется тот же текущий каталог (папка), в котором записана программа.
В данной задаче файл F1 является файлом входных данных, который необходимо создать до выполнения программы. Используя текстовый редактор среды Турбо Паскаль, создадим файл с именем ‘F1.dat’, например, следующего вида:
-
–5
16
–7
10
–1
2
4
–12
–19
8
–34
17
Выходному файлу зададим имя ‘F2.dat’. В этот файл в процессе выполнения программы будут записаны результаты.
Program P_F;
Uses Crt;
Var
f1, f2: text;
a: integer;
Begin
ClrScr;
assign(f1, ‘F1.dat’);
reset(f1);
assign(f2, ‘F2.dat’);
rewrite(f2);
while not eof(f1) do
begin
read(f1, a);
if (a>0) then
if not eoln(f1) then
write(f2, a:5);
else
writeln(f2, a:5);
end;
close(f1);
close(f2);
writeln(‘Выходной файл создан’);
readln;
End.
В результате выполнения программы будет создан выходной файл следующего вида:
-
16
10
2
4
8
17
10.3. Пример решения задачи создания документа
Пусть требуется получить результаты обработки экзаменационной ведомости в виде следующего документа.
РЕЗУЛЬТАТЫ ОСЕННЕЙ СЕССИИ ГР. 151
№ п/п |
ФИО |
Матема-тика |
Информа-тика |
Химия |
Средний балл |
1 |
Андреева С.В. |
4 |
5 |
5 |
x |
… |
… |
… |
… |
… |
… |
20 |
Яковлев А.Н. |
5 |
5 |
4 |
x |
Ср. оценка по дисциплине |
x |
x |
x |
x |
Примечание. x – расчетные данные.
Составить программу, обеспечивающую чтение входных данных из файла и вывод документа с расчетными данными по заданной форме. В программе предусмотреть чтение каждой строки файла в переменную типа запись.
Решение
Создадим в текущем каталоге файл данных ‘Wed.dat’, каждая строка которого имеет вид:
4 5 5 Андреева с.В.
Заметим, что ФИО студента записывается в файле в конце строки. Это связано с тем, что переменная типа запись, в которую будет читаться строка из файла, содержит поле fam (ФИО студента) строкового типа, для которого не указан максимальный размер, а следовательно, конец поля должен быть зафиксирован нажатием клавиши [Enter].
Program P_Wed;
Uses Crt;
Const
pr = ‘ ’; {20 пробелов}
Type
zap = record
m, inf, h: integer;
fam: string;
end;
Var
str: zap;
f: text;
n, d: integer;
fam1: string;
Sm, Sinf, Sh, Sc, Sg: real;
Begin
ClrScr;
{Вывод заголовка документа}
writeln(‘РЕЗУЛЬТАТЫ ОСЕННЕЙ СЕССИИ ГР. 151’);
{Вывод шапки документа}
writeln(‘|
| | |
|’,
‘ | |’);
writeln(‘| № | ФИО | Математика | Информатика |’, ‘Химия| Средний балл |’);
writeln(‘|п/п |’, pr, ‘|’, copy(pr,1,12), ‘|’, copy(pr,1,13), ‘|’,
copy(pr,1,7), ‘|’, copy(pr,1,14), ‘|’);
writeln(‘| | | | |’,
‘ | |’);
{Обработка файла данных}
assign(f, ‘Wed.dat’);
reset(f);
Sm := 0;
Sinf := 0;
Sh := 0;
n := 0; {Счетчик строк файла}
while not eof(f) do
begin
n := n + 1;
readln(f, str.m, str.inf, str.h, str.fam);
Sc := (str.m + str.inf + str.h)/3; {Ср. балл студента}
Sm := Sm + str.m;
Sinf := Sinf + str.inf;
Sh := Sh + str.h;
{Вывод строки документа}
d := 20 – length(str.fam);
fam1 := str.fam + copy(pr, 1, d);
writeln(‘|’, n:2, ‘ |’, fam1, ‘|’, str.m:6, copy(pr,1,6), ‘|’,
str.inf:7, copy(pr,1,6), ‘|’, str.h:4, copy(pr,1,3), ‘|’,
Sc:9:2, copy(pr,1,5), ‘|’);
end;
close(f);
Sm := Sm/n;
Sinf := Sinf/n;
Sh := Sh/n;
Sg := (Sm + Sinf + Sh)/3; {Средний балл по группе}
writeln(‘| | | |’,
‘ | |’);
writeln(‘| Ср. оценка по дисциплине|’, Sm:8:2,
copy(pr,1,4), ‘|’, Sinf:9:2, copy(pr,1,4), ‘|’, Sh:6:2, ‘ |’,
Sg:9:2, copy(pr,1,5), ‘|’);
writeln(‘| | | |’,
‘
| |’);
End.
Пояснения к программе
Для рисования таблицы используются символы псевдографики. Коды символов приведены в приложении 2. Ввод символов псевдографики рассмотрен в главе 1 (см. п. 1.1).
Переменная d в программе определяет количество пробелов, которые надо присоединить справа к строковой переменной fam, чтобы получить длину строки fam1, равную 20 символам. Задание строковой переменной fam1 позволяет в графе ФИО выводить фамилии студентов, выровненные по левому краю.