
- •Программирование на языке паскаль Учебное пособие
- •1. Общая характеристика языков программирования
- •1.1. Языки программирования
- •1.2. Трансляторы
- •1.3. История создания языков
- •1.4. Базовые структуры языков программирования
- •Контрольные вопросы
- •2. Описание языка паскаль
- •2.1. Основные объекты языка
- •2.2. Структура Паскаль-программы
- •2.3. Типизация данных
- •2.4. Объявление данных
- •Контрольные вопросы
- •3. Простые операторы. Ввод/вывод данных
- •3.1. Оператор присваивания и выражения
- •3.2. Операторы вызова процедур. Ввод/вывод данных
- •3.2.1. Процедуры ввода read и readln
- •Общая форма записи оператора
- •3.2.2. Процедуры вывода write и writeln
- •Контрольные вопросы
- •Каково назначение процедуры writeln без параметров? Задания для самостоятельной работы
- •Варианты заданий
- •Дополнительные задания
- •4. Структурные операторы. Организация ветвлений и циклов
- •4.1. Составной и пустой операторы
- •4.2. Организация ветвлений. Операторы выбора
- •4.2.1. Оператор ветвления if
- •4.2.2. Оператор варианта case
- •Общая форма записи
- •Контрольные вопросы
- •Задания для самостоятельной работы
- •Варианты заданий
- •Дополнительные задания
- •4.3. Организация циклов. Операторы повторения
- •4.3.1. Оператор while
- •4.3.2. Оператор repeat
- •4.3.3. Оператор for
- •Контрольные вопросы
- •Задания для самостоятельной работы
- •Варианты заданий
- •5. Организация подпрограмм. Процедуры и функции
- •5.1. Процедуры и их типизация
- •5.1.1. Встроенные процедуры
- •5.1.2. Процедуры пользователя
- •5.1.3. Процедуры без параметров
- •5.1.4. Фактические и формальные параметры
- •5.1.5. Локальные и глобальные переменные
- •5.1.6. Процедуры с параметрами-значениями
- •5.1.7. Процедуры с параметрами-переменными
- •5.1.8. Комбинированные процедуры
- •5.2. Функции пользователя. Рекурсивные функции
- •5.2.1. Определение функции
- •О бщая форма записи заголовка функции
- •5.2.2. Функции пользователя
- •5.2.3. Рекурсивные функции
- •Контрольные вопросы
- •Задания для самостоятельной работы
- •Варианты заданий
- •Дополнительные задания
- •6. Массивы. Данные типа array
- •Одномерные массивы
- •Общая форма записи
- •Общая форма записи
- •6.2. Многомерные массивы
- •6.3. Способы работы с массивами
- •Контрольные вопросы
- •Задания для самостоятельной работы
- •Варианты заданий
- •Дополнительные задания
- •Обработка литерных величин. Данные типа char и string
- •7.1. Тип данных char
- •Работа программы
- •7.2. Массивы литер
- •7.3. Тип данных string
- •7.4. Строковые функции и процедуры
- •Контрольные вопросы
- •Задания для самостоятельной работы
- •Варианты заданий
- •Дополнительные задания
- •8. Множества. Данные типа set
- •О бщий вид регулярного типа
- •8.1. Определение типа set
- •8.2. Операции над множествами
- •8.2.1. Принадлежность множеству
- •8.2.2. Сравнение множеств
- •8.2.3. Действия над множествами
- •8.3. Вывод множеств
- •Контрольные вопросы
- •Задания для самостоятельной работы
- •Варианты заданий
- •9. Комбинированный тип. Данные типа record
- •9.1. Оператор типа record
- •9.2. Оператор with
- •9.3. Записи с вариантами
- •Контрольные вопросы
- •Задания для самостоятельной работы
- •Варианты заданий
- •10. Файловый тип
- •10.1. Определение и описание типизированного файла
- •Общая форма записи
- •10.2. Типы файлов. Процедура работы с файлами
- •10.3. Основные приемы работы с файлами
- •10.4. Текстовые файлы
- •Контрольные вопросы
- •Задания для самостоятельной работы
- •Типизированные файлы
- •Текстовые файлы
- •Программирование графики
- •Основные понятия компьютерной графики
- •Формирование изображения на экране
- •Инициализация графического режима
- •Простейшие графические операторы (процедуры)
- •Основные приемы работы с графикой
- •Работа с цветом
- •Заполнение (закрашивание) произвольной замкнутой фигуры
- •Построение простейших геометрических фигур
- •Контрольные вопросы
- •Задания для самостоятельной работы
- •Варианты заданий
- •Библиографический список
10.4. Текстовые файлы
Среди всех файлов особое место занимают текстовые файлы. Особенностью текстовых файлов является объединение в них символов в строки. Каждая строка кончается специальным символом конца строки. Этот специальный символ (литера) не входит в стандартный тип CHAR и не имеет графического представления. Нас и не интересует вид этого символа. Главное, что с ним связана логическая функция EOLN (конец строки). EOLN (F) = TRUE, если окно указывает на признак конца строки. Заметим, что если EOLN (F) = TRUE, то при чтении элементов из файла в символьную переменную она принимает значение пробела (пробел – аналог конца строки). Для записи в файл признака конца строки служит стандартная процедура WRITELN.
Текстовые файлы, т.е. файлы с делением на строки, описываются с помощью слова TEXT, например: VAR X, D: TEXT.
П р и м е р 1. Определить количество строк в файле с именем BOOK.
program NOMBRELINE;
var K: integer; BOOK : text; S: char;
begin {Формирование файла BOOK}
assign (BOOK,'f1'); rewrite (BOOK); read (S);
while S<> '.' do begin
while S <> '#' do begin
write (BOOK, S); read (S); end;
writeln (book); read (S); end; close (BOOK);
{Подсчет числа строк в текст; BOOK}
K := 0; reset (BOOK); writeln ;
while not eof (BOOK) do
begin
if eoln (BOOK) then K := K + 1; read (BOOK, S); write (S);
end;
writeln ('В текстовом файле BOOK ', K,' – строк');
end.
Пояснение. В программе сначала формируется текстовый файл, у которого строки кончаются символом «$», а сам текст – символом «.». Текст вводится с клавиатуры в виде непрерывной цепочки, например:
Наша Маша громко плачет,$Уронила в речку мячик.$Тише, Машенька, не плачь,$Не утонет в речке мяч.$.
Во второй части программы с помощью функции EOLN подсчитывается число строк текста, и текст выводится на экран построчно:
Наша Маша громко плачет,
Уронила в речку мячик.
Тише, Машенька, не плачь,
Не утонет в речке мяч.
Итак, для записи литеры «конец строки» используется процедура WRITELN (F), где F находится в режиме записи.
Схема работы процедуры WRITELN
T |
a |
g |
… |
c |
d |
|
|
|
|
|
|
|
|
^ |
|
|
|
|
|
|
|
окно |
|
WRITELN (T):
T |
a |
g |
… |
c |
d |
# |
|
|
|
|
|
|
|
^ |
|
|
|
|
|
|
|
окно |
|
Таким образом, сформированный файл легко выводится на печать построчно с помощью оператора WRITE, так как признак конца строки в файле инициирует переход на другую строку экрана (эффект оператора WRITELN).
В режиме чтения для работы с литерой «конец строки» есть процедура READLN. По этой процедуре окно файла устанавливается на первый элемент следующей строки файла.
Схема работы процедуры READLN
T |
d |
… |
b |
c |
d |
# |
e |
f |
|
|
|
|
|
^ |
|
|
|
|
|
|
|
|
|
окно |
|
|
|
|
|
READLN (T):
T |
d |
… |
b |
c |
d |
# |
e |
f |
|
|
|
|
|
|
|
|
^ |
|
|
|
|
|
|
|
|
|
окно |
|
|
Файлы как переменные величины могут выступать в качестве аргументов и результатов при создании функций-процедур, причем эти переменные должны быть всегда оформлены как параметры-переменные, даже если файл в процедуре играет роль аргумента.
П р и м е р 2. Посчитать число знаков препинания в указанном текстовом файле.
function PUNCTUATION (var CHARFILE: text): integer;
var SYMBOLNOMB: integer;
SYMBOL: char;
begin
SYMBOLNOMB := 0; reset (CHARFILE);
while not eof (CHARFILE) do
begin
read (CHARFILE, SYMBOL);
if SYMBOL in ['.',',',' ',':','...] then
SYMBOLNOMB := SYMBOLNOMB + 1
end;
PUNCTUATIОN := SYMBOLNOMB
end.
С помощью этой функции можно теперь произвести подсчет числа вхождений знаков препинания в любой текст, представленный некоторым текстовым файлом. Рассмотрим в качестве примера фрагмент программ для файла с именем FIL:
assign (FIL, 'FIL');
reset (FIL);
n := PUNCTUATION (FIL);
close (FIL);
writeln ('число знаков препинания в тексте FIL =', n).