
- •Указания по выполнения практических и лабораторных работ
- •Языки программирования
- •Трансляторы
- •Язык программирования Паскаль
- •Использование среды программирования турбо паскаль
- •Типы вычислительных процессов
- •Блок-схемы алгоритмов
- •Примеры составления блок-схемы алгоритма
- •Основные файлы пакета Турбо Паскаль
- •Запуск интегрированной среды программирования Турбо Паскаль
- •Работа с меню ис
- •Меню File
- •Меню Run
- •Меню Compile
- •Меню Debug
- •Меню Tools
- •Меню Options
- •Меню Window
- •Меню Help
- •Процедуры ввода-вывода
- •Оператор записи WriteLn аналогичен процедуре Write, но после вывода последнего в списке значения для текущей процедуры WriteLn происходит перевод курсора к началу следующей строки.
- •Пример программы с использованием процедур ввода-вывода данных с различными форматами выводимых данных
- •Операторы языка Паскаль
- •Оператор присваивания
- •Оператор безусловного перехода (go to)
- •Оператор выбора case
- •Оператор повтора for
- •Примеры программ с использованием оператора for
- •Оператор повтора Repeat
- •Пример программы с использованием оператора repeat
- •Пример программы с использованием операторов присваивания, повтора и выбора
- •Пример программы с использованием оператора повтора while
- •Примеры описания одномерных и двумерных массивов
- •Действия над массивами
- •Действия над элементами массива
- •Ввод-вывод элементов массива
- •Пример программы ввода-вывода одномерного массива
- •Пример программы ввода-вывода двумерного массива
- •Пример программы нахождения в одномерном массиве максимального элемента
- •Порядок выполнения работы
- •Порядок выполнения работы
- •Основные логические структуры:
- •Встроенные функции и процедуры
- •Арифметические процедуры и функции
- •Скалярные процедуры и функции
- •Функции преобразования типов
- •Процедуры управления программой
- •Специальные процедуры и функции
- •Вызов стандартной процедуры или функции
- •Пример программы с использованием функции, определенной пользователем
- •Пример программы с использованием процедуры, определенной пользователем
- •Механизм передачи параметров
- •Нетрадиционное использование подпрограмм. Косвенная рекурсия
- •Линейный поиск
- •Линейный поиск в упорядоченном массиве данных
- •Бинарный (двоичный) поиск
- •Пример программы с использованием алгоритма бинарного поиска
- •Методы внутренней сортировки
- •Сортировки включением
- •Сортировка выбором
- •Реализация алгоритмов обменных сортировок при написании программы на Паскале
- •Шейкерная сортировка
- •Пирамидальная сортировка
- •Обменная сортировка разделением
- •Естественное слияние
- •Многопутевое слияние
- •Пример разработки собственного модуля
- •Скалярные процедуры и функции
- •Процедуры управления программой
- •Специальные процедуры и функции
- •Вызов стандартной процедуры или функции
- •Формат описания строкового типа
- •Фрагмент описания строковых данных
- •Стандартные строковые процедуры и функции
- •Пример программы работы со стандартными строковыми процедурами и функциями Порядок выполнения работы
- •Примеры программ работы со строковыми переменными
- •Пример программы работы с записями
- •Пример программы работы с записями
- •Операции над множествами
- •Объединение Пересечение Разность
- •Формат описания файлового типа
- •Средства обработки файлов
- •Текстовые файлы
- •Пример программы работы с текстовым файлом
- •Средства работы с типизированными файлами
- •Пример программы работы с типизированным файлом
- •Средства работы с нетипизированными файлами
- •Пример программы для работы с типизированными файлами
- •Распределение памяти при выполнении программы
- •Пример программы распределения памяти и получения доступа к полям psp.
- •Статические и динамические переменные
- •Указатели
- •Типизированные указатели
- •Нетипизированный указатель (pointer)
- •Доступ к переменной по указателю
- •Управление динамической памятью
- •Процедуры динамического распределения
- •Пример программы с использованием динамической памяти
- •Пример программы создания и использования связанного списка
- •Параметр процедурного типа
Процедуры ввода-вывода
Для выполнения операций ввода-вывода служат четыре процедуры: Read, Readln, Write, WriteLn.
Процедура чтения Read
Процедура чтения Read обеспечивает ввод числовых данных, символов, строк и т.д. для последующей их обработки программой.
Формат процедуры Read:
Read (x1, x2, …, xn);
или
Read (fv, x1, x2, …, xn);
где x1, x2, …, xn- переменные допустимых типов данных; fv- переменная, связанная с файлом, откуда будет выполняться чтение.
Значения x1, x2, …, xn набираются минимум через один пробел на клавиатуре и высвечиваются на экране. После набора данных для одной процедуры Read нажимается клавиша ввода Enter.
Значения переменных должны вводится в строгом соответствии с синтаксисом языка Паскаль. Если соответствие нарушено (например, х1 имеет тип Integer, а при вводе набирается значение типа Char), то возникают ошибки ввода-вывода. Сообщение об ошибке имеет вид: I/O error XX, где ХХ - код ошибки.
. . .
Var
I:Real;
J:Integer;
K:Char;
Begin
Read(I,J,K);
. . .
Первый вариант ввода данных: 21,5 23 ’B’
Второй вариант ввода данных: 34 ’A’ 12 ,4
Первый вариант обеспечивает правильный ввод данных, так как набираемые значения 21,5 23 ’B’ соответствуют типам переменных I, J, K в процедуре Read. Второй вариант ввода вызовет ошибку, так как для переменной I типа Real вводится значение типа Char.
Если в программе имеется несколько процедур Read, данные для них вводятся потоком, т.е. после считывания значений переменных для одной процедуры Read данные для следующей процедуры Read набираются в той же строке, что и для предыдущей, до окончания строки, затем происходит переход на следующую строку.
. . .
Var
A, B, Sum1: Integer;
C, D, Sum2: Real;
. . .
Begin
Read (A, B);
Sum1:=A+B;
Read (C, D);
Sum2:=C+D;
. . .
End.
В результате на экране появятся те данные, которые пользователь вводит с клавиатуры. Например:
12 34 12,5 34,5
Процедура чтения ReadLn
Процедура чтения ReadLn аналогична процедуре Read, единственное отличие заключается в том, что после считывания последнего в списке значения для одной процедуры ReadLn данные для следующей процедуры ReadLn будут считываться с начала новой строки.
. . .
ReadLn (A, B);
Sum1:=A+B;
ReadLn (C, D);
Sum2:=C+D;
. . .
После набора на клавиатуре значений для A и B курсор автоматически перейдет на новую строку, где будут набираться данные для C и D.
Например:
12 34
12,5 34,5
Процедуры записи Write, WriteLn
Процедура записи Write производит вывод числовых данных, символов, строк, булевских значений.
Формат процедуры Write:
Write (y1,y2, . . . yn);
или
Write (fv,y1,y2, . . . ,yn);
где y1, y2, …, yn- переменные допустимых типов данных; fv- имя файла, куда производится вывод.
Для вывода на принтер fv равно Lst. Чтобы устройство Lst стало доступным, необходимо подключить модуль Printer с помощью зарезервированного слова Uses:
Uses Printer;
Var
. . .
Begin
Write (234); {выражение представлено значением}
Write(A+B-2);{выводится результат выражения}
Write(Lst, ’Результат вычислений = ’, Result);{данные выводятся на принтер}
End.
Процедура записи WriteLn аналогична процедуре Write, единственное отличие заключается в том, что после вывода последнего в списке значения для одной процедуры WriteLn данные для следующей процедуры WriteLn будут выводиться с начала новой строки.
Порядок выполнения работы
Изучить теоретические сведения по теме “Операторы ввода-вывода данных”.
Получить индивидуальное задание у преподавателя и разработать программу в соответствии с поставленной задачей.
Показать работающую программу преподавателю.
Ответить на контрольные вопросы.
Контрольные вопросы
Общие сведения о вводе-выводе данных.
Процедуры ввода данных. Read. Формат, примеры.
Процедура ReadLn. Формат, примеры.
Процедуры вывода данных. Write, WriteLn. Форматы, примеры.
Лабораторная работа № 5
Написание программы на Паскале
с использованием операторов ввода-вывода данных с различными форматами выводимых данных
Цель работы: формирование знаний и умений по работе с простейшими операторами языка. Приобретение навыков написания программ с использованием различных форматов вывода данных.
Краткие теоретические сведения
В процедурах вывода Write и WriteLn имеется возможность записи выражения, определяющего ширину поля вывода. В приведенных ниже форматах используются следующие обозначения:
I, p, q – целочисленное выражение;
R –выражение вещественного типа;
B – выражение булевского типа;
Ch –выражение символьного типа;
S –выражение строкового типа;
# -цифра;
* - знак “+” или “-“;
_-пробел.
I-выводится десятичное представление величины I, начиная с позиции расположения курсора.
Значение I Выражение Результат
134 Write (I); 134
287 Write (I,I,I); 287287287
I:p -выводится десятичное представление величины I в крайние правые позиции поля шириной p.
Значение I Выражение Результат
134 Write (I: 6); _ _ _134
1 Write (I: 1); _ _ _ _ _ _ _ _ _ 1
312 Write (I+I:7) _ _ _ _624
R- в поле шириной 18 символов выводится десятичное представление величины R в формате с плавающей точкой. Если R>=0.0, используется формат _#.##########E*##.
Если R<0.0, формат имеет вид: -#.##########E*##.
Значение R Выражение Результат
715.432 Write (R); _ _ 7.1543200000E+02
-1.919E+01 Write (R); _ -1.9190000000E+01
567.986 Write (R/2); _ _ 2.8399300000E+02
R:p –в крайние правые позиции поля шириной p символов выводится десятичное представление значения R в формате с плавающей точкой. Если R>=0.0, используется формат _ _…_##..#E*##, причем минимальная длина поля вывода составляет 7 символов. Если R<0.0, формат имеет вид:
_ _ …_--#.##..#E*##. Минимальная длина поля вывода 8 символов. После десятичной точки выводится, по крайней мере, одна цифра.
Значение R Выражение Результат 511.04 Write (R:15); 5.110400000E+02
-511.04 Write (R:15); -5.11040000E+02
46.78 Write (-R:12); -4.67800E+01
R:p:q –в крайние правые позиции поля шириной p символов выводится десятичное представление значения R в формате с фиксированной точкой, причем после десятичной точки выводится q цифр (0<=q<=24), представляющих дробную часть числа. Если q=0, ни дробная часть, ни десятичная точка не выводится. Если q>24, то при выводе используется формат с плавающей точкой.
Значение R Выражение Результат
511.04 Write (R:8:4); 511.0400
-46.78 Write (R:15); _-46.78
-46.78 Write (R:9:4); _-46.7800
Ch-начиная с позиции курсора выводится значение Ch.
Значение Ch Выражение Результат
’X’ Write (Ch); X
‘Y’ Write (Ch); Y
’!’ Write (Ch, Ch, Ch); !!!
Ch:p-в крайнюю правую позицию поля шириной p выводится значение Ch.
Значение Ch Выражение Результат
’X’ Write (Ch:3); _ _X
‘Y’ Write (Ch:5); _ _ _ _Y
’!’ Write (Ch:2, Ch:4); _!_ _ _!
S- начиная с позиции курсора, выводится значение S (строка или массив символов, если его длина соответствует длине строки).
Значение S Выражение Результат
’Day N’ Write (S); Day N ‘Ведомость 11’ Write (S); Ведомость 11
’RRRDDD’ Write (S, S); RRRDDDRRRDDD
S:p- значение S выводится в крайние правые позиции поля шириной p символов.
Значение S Выражение Результат
’Day N’ Write (S:10); _ _ _ _ _ Day N ‘Ведомость 11’ Write (S:13); _Ведомость 11
’RRRDDD’ Write (S:7, S:7); _RRRDDD_RRRDDD
B- выводится результат выражения B True или False, начиная с текущей позиции курсора.
Значение B Выражение Результат
True Write (B); True
False Write (B, not B); False True
B:p- в крайние правые позиции поля шириной p символов выводится результат булевского выражения B True или False.
Значение B Выражение Результат
True Write (B:6); _ _ True
False Write (B:10); _ _ _ _ _False
True Write (B:5,not B:7); _True_ _False