Ввод данных
Как я уже говорил, что программу можно разделить на три основных блока.
1. Ввод данных.
2. Обработка данных.
3. Вывод результата.
Начнем по порядку. С ввода данных.
Помимо прочего каждой программе дается имя. Требования следующие: используются буквы латинского алфавита и цифры. Начинаться имя должно с букв.
Пример:
Program summa;
Program — оператор, говорящий о том, что далее будет имя программы.
Summa — название программы.
Каждая команда в паскале должна заканчиваться точкой с запятой «;».
Программы на языке Паскаль начинаются с описания величин, которые будут использованы. Название величин описанных в начале программы должно совпадать с именем в самой программе. Даже если имя в описании будет начинаться с маленькой буквы, а в самой программе с большой — то компилятор выдаст ошибку.
Компилятор — это сервис, который проверяет программу на наличие ошибок. Если компилятор покажет, хотя бы одну. Программа не пойдет!!!
Существует несколько типов величин:
Идентификатор
|
Длина (байт)
|
Диапазон значений
|
Целые типы
| ||
integer
|
2
|
-32768..32767
|
byte
|
1
|
0..255
|
word
|
2
|
0..65535
|
shortint
|
1
|
-128..127
|
longint
|
4
|
-2147483648..2147483647
|
Вещественные типы
| ||
real
|
6
|
2,9x10-39 - 1,7x1038
|
single
|
4
|
1,5x10-45 - 3,4x1038
|
double
|
8
|
5x10-324 - 1,7x10308
|
extended
|
10
|
3,4x10-4932 - 1,1x104932
|
Логический тип
| ||
boolean
|
1
|
true, false
|
Символьный тип
| ||
Char
|
1
|
все символы кода ASCII
|
Описание величин начинается оператором var.
Пример:
Составить программу нахождения суммы двух натуральных чисел a и b.
Program summa;
var a,b,c: integer;
Если бы числа были вещественными, то было бы:
Program summa;
var a,b,c: real;
И так далее.
Если вы спросите откуда взялась величина с, то объясняю - при сложении величин a и b, получается результат. Это и будет величина c.
При составлении программы возникает вопрос, как будем вводить данные в программу. Существует несколько способов:
1 способ.
Данные величин прописываются в программе.
Пример программы:
| program summa; | (название программы) |
| var | |
| a, b, c: integer; | (описываем тип величин) |
| begin | (тело программы всегда начинается с оператора begin) |
| a:=3; b:=4; | {Присвоение значений всегда производится командой (:=)} |
| c:=a+b; end. | (суммируем a и b, получаем значение c) (Программа всегда заканчивается командой end и обязательно ставится точка. |
2 способ.
|
Ввод и вывод данных с терминального устройства.
Терминальное устройство - это устройство, с которым работает пользователь, обычно это клавиатура и экран (дисплей).
Ввод данных
Для ввода исходных данных чаще всего используется процедуры:
Read(A1,A2,...AK);
ReadLn(A1,A2,...AK);
Процедура производит чтение К значений исходных данных и присваивает эти значения переменным А1, А2, ..., АК.Второй оператор, не только производит ввод данных, но и производит переход к началу следующей строке.
При вводе исходных данных происходит преобразование из внешней формы представления во внутреннюю, определяемую типом переменных. Переменные, образующие список ввода, могут принадлежать либо к целому, либо к действительному, либо к символьному типам. Чтение исходных данных логического типа в языке Паскаль недопустимо.
Значения исходных данных могут отделяться друг от друга пробелами и нажатием клавиш табуляции и Enter.
Не допускается разделение вводимых чисел запятыми!
Вывод данных
Для вывода результатов работы программы на экран используются процедуры:
Write(A1,A2,...AK);
WriteLn(A1,A2,...AK);
Первый из этих операторов производит вывод значений переменных А1, А2,...,АК в строку экрана. Второй оператор, в отличие от первого, не только производит вывод данных на экран, но и производит переход к началу следующей экранной строки. Если процедура writeln используется без параметров, то она просто производит пропуск строки и переход к началу следующей строки.
Пример программы:
| program summa; | (название программы) |
| var | |
| a, b, c: integer; | (описываем тип величин) |
| begin | (тело программы всегда начинается с оператора begin) |
| writeln ('BBedi a'); | {Данная строка сообщает пользователю, что необходимо ввести величину а, текст который находится между кавычками копируется на экран} |
| read (a); writeln('BBedi b'); read (b); c:=a+b; writeln('cymma raBna=',c); end. | (ввод значения а, так как в предыдущей команде окончание ln, то данные вводятся на новой строке) {Данная строка сообщает пользователю, что необходимо ввести величину b, текст который находится между кавычками копируется на экран} (ввод значения b) находим сумму (Вывод результата на экран) (Программа всегда заканчивается командой end и обязательно ставится точка. |
3 способ.
Файловый ввод и вывод данных.
Этот метод позволяет автоматизировать ввод-вывод данных, исключив человека из этого процесса.
Файл - поименованная целостная совокупность данных на внешнем носителе информации.
По способу организации в Паскале различают файлы трех типов - текстовые, типизированные и нетипизированные.
По способу организации в Паскале различают файлы трех типов - текстовые, типизированные и нетипизированные.
Текстовые файлы
Текстовые файлы состоят из символьных строк (символы из набора ASCII). Строки могут иметь разную длину, каждая строка заканчивается специальными символами возврата каретки CR (#13) и перевода строки LF (#10). Эти символы во время "заставляют" следующий за ними символ печататься с новой строки. Оканчивается текстовый файл признаком конца файла (EOF - сокращенно End Of File, #26).
Существуют два способа доступа к файлам - последовательный и прямой. Текстовые файлы допускают только последовательный доступ. Это означает, что для нахождения определенного элемента такого файла нужно просмотреть все, что ему предшествовало. При последовательном доступе программа не может в любой момент времени считать из файла произвольную порцию информации или произвести запись в произвольное место файла.
Можно считать, что при обращении к файлу используется специальный указатель на элемент файла, а файл представляет собой последовательность элементов, каждому из которых присвоен свой номер. Указатель при считывании очередного элемента файла перемещается к следующему элементу.
Программа может читать данные из имеющегося файла, создавать новые файлы, изменять уже созданные файлы, но в любом случае последовательность обращения к файлу следующая:
Существуют два способа доступа к файлам - последовательный и прямой. Текстовые файлы допускают только последовательный доступ. Это означает, что для нахождения определенного элемента такого файла нужно просмотреть все, что ему предшествовало. При последовательном доступе программа не может в любой момент времени считать из файла произвольную порцию информации или произвести запись в произвольное место файла.
Можно считать, что при обращении к файлу используется специальный указатель на элемент файла, а файл представляет собой последовательность элементов, каждому из которых присвоен свой номер. Указатель при считывании очередного элемента файла перемещается к следующему элементу.
Программа может читать данные из имеющегося файла, создавать новые файлы, изменять уже созданные файлы, но в любом случае последовательность обращения к файлу следующая:
- установить связь программы с файлом;
- "открыть" файл для чтения или записи;
- читать из файла или записать в файл;
- закрыть файл.
Операторы работы с файловым типом данных
В программе на Паскале текстовый файл представлен файловой переменной типа TEXT.
Var <имя файловой переменной>: text;
Связь файловой переменной с именем файла на диске осуществляется с помощью оператора
Assign (имя файловой переменной, имя файла на диске);
Имя файла на диске больше нигде в программе не появляется. <Имя файла на диске> должно содержать полный путь для поиска данного файла. Если полный путь к файлу не указан, то файл будет искаться в каталоге, где находится исходный текст программы.
Открытие файла для чтения выполняется оператором
Reset (имя файловой переменной);
Если на диске нет файла с данным именем, то выполнение программы прервется.Открытие файла для записи осуществляется оператором
Rewrite (имя файловой переменной);
Если на диске нет файла с данным именем, то файл будет создан.Открытие файла для дозаписи осуществляется оператором
Append (имя файловой переменной);
Если на диске нет файла с данным именем, то выполнение программы прервется.
Окончание работы с файлом фиксируется с помощью оператора
Close (имя файловой переменной);
Пример программы
| program summa; | |
| var | |
| a, b, c: integer; | |
| f, g: text; | {Описываем файловые переменные f и g.} |
| begin | |
| assign (f, 'input.txt'); | {Устанавливаем связь программы с файлом на диске.} |
| reset (f); | {Открываем файл для чтения.} |
| readln (f, a, b); | {Читаем две переменные целого типа из файла.} |
| close (f); | {Закрываем файл.} |
| c:=a+b; | |
| assign (g, 'output.txt'); | {Устанавливаем связь программы с файлом на диске.} |
| rewrite (g); | {Открываем файл для записи.} |
| writeln (g, c); | {Записываем значение переменной c в файл.} |
| close (g); | {Закрываем файл.} |
| end. |
Обратите внимание, что первым параметром в операторах readln и writeln ставится файловая переменная. Если ее не будет, то ввод будет осуществляться с клавиатуры, а вывод - на экран.
P.S. Третий способ сейчас наверное самый "модный". Поэтому в дальнейшем при разборе задач я буду использовать именно этот способ.
Комментариев нет:
Отправить комментарий