Pascal признак конца ввода

Ввод-вывод данных в Pascal

Компьютерные программы обрабатывают (изменяют) различные данные. Программа получает данные, что-то делает с ними и выводит их в измененной форме или выводит другие данные.

Откуда или с помощью чего можно ввести данные в программу? Обычно это можно сделать с помощью клавиатуры или из файлов.

Куда можно вывести данные? На экран, в файл, на принтер и др.

Стандартным устройством ввода является клавиатура, а вывода — монитор. Стандартные — значит «работающие по-умолчанию»; т.е. если не указано ничего иного, то программа будет считывать данные с клавиатуры, а выводить их на монитор. Вместе клавиатуру и монитор называют консолью. Таким образом консоль представляет собой стандартное устройство ввода-вывода.

Вывод данных на экран. Форматированный вывод

Write() чаще используется, когда надо вывести для пользователя сообщение на экран, после чего получить данные, не переводя курсора на новую строку. Например, выводим на экран «Введи число: » и не переводим курсор на новую строку, а ждем ввода.

Еще один пример. В памяти компьютера хранятся данные. Из программы мы обращаемся к ним с помощью переменных num, fl и st. Вывести их значения на экран можно по-разному.

Во втором случае мы видим, что процедуры вывода (как write() так writeln() ) позволяют конструировать выводимую информацию из различных компонент (строк-констант и переменных).

В третьем случае был осуществлен так называемый форматированный вывод. При этом для выводимого значения указывается ширина поля вывода (количество знакомест). Если мы выводим вещественное (дробное) число, то вторым числом через двоеточие указывается количество знаков после запятой. Если для вещественных чисел не осуществлять форматирование, то они отобразятся так, как определено для данного компьютера. Если указать только число знакомест без фиксирования дробной части, то вывод будет в экспоненциальной форме.

Ввод данных с клавиатуры

Когда данные вводятся, то они помещаются в ячейки памяти, доступ к которым обеспечивается с помощью механизма переменных. Поэтому, когда в программе на Pascal используется процедура read() (или readln() ), то в качестве фактического параметра (аргумента) ей передается имя переменной, которая будет связана с вводимыми данными. Потом эти данные можно будет использовать в программе или просто вывести на экран.

В процедуры ввода можно передавать не один фактический параметр, а множество.

При вводе данных их разделяют пробелом, табуляцией или переходом на новую строку (Enter). Данные символьного типа не разделяются или разделяются переходом на новую строку.

Источник

Урок 4. Работа с текстовыми файлами

Урок из серии: «Язык программирования Паскаль«

Для участия в олимпиаде по информатике вы должны уметь работать с текстовыми файлами (считывать и записывать информацию). На олимпиадах, начиная с областных, они используются для ввода и вывода данных. Лучше всего попробовать работать с файлами до того, как Вы пойдете на олимпиаду.

На этом уроке мы рассмотрим, как используются текстовые файлы для ввода и вывода данных в программе на языке Паскаль.

Текстовые файлы – это файлы, содержащие символы, разделенные на строки. Причем в конце каждой строки стоит символ конца строки.

Общая последовательность действий при работе с файлами в языке программирования Паскаль:

Описание переменной файлового типа

С текстовым файлом на диске в программе должна быть связана файловая переменная, которая описывается с указанием стандартного типа Text:

Связь переменной файлового типа с конкретным внешним файлом

Для установления связи между файловой переменной и именем файла, присваиваемого операционной системой, имеется стандартная процедура Assign.

Такое соответствие обозначает, что все операции, выполняемые над переменной F1, будут выполняться над файлом, хранящемся на диске и имеющим имя ‘Int.dat’

Чтение из файла

Под чтением из файла понимается ввод данных из внешнего файла, находящегося на диске, в оперативную память. Данные входного файла становятся доступными программе.

Читайте также:  Морфологические признаки болезни это

Для чтения файла в программе необходимо выполнить следующие действия:

Открыть файл для чтения:

Процедура Read последовательно считывает все элементы строки:

Процедура Readln – считывает элемент из текущей строки и переходит на следующую строку (независимо от того, достигнут конец строки или нет):

Если не указывать второй параметр, то произойдет переход в начало следующей строки без ввода данных:

Закрытие файла

Общий вид оператора:

Общая форма чтения файла имеет вид:

Многоточием отмечено наличие других операторов в программе.

Признак конца файла

Так как, по определению, число элементов файла не задается заранее, то в языке Паскаль введена логическая функция Eof() для определения признака конца файла.

Она определяет, достигнут ли конец файла или еще нет (принимает значение (true), если достигнут конец файла, и ложь (false) — в противном случае).

Для определения конца файла используется оператор цикла, например, (пока не достигнут конец файла …):

While Not EOF ( ) Do …

Запись в файл

Под записью файла понимается вывод результатов программы из оперативной памяти на диск, т.е. создание нового файла на внешнем устройстве.

Для записи файла в программе необходимо выполнить следующие действия:

Открыть файл для записи с помощью процедуры Rewrite:

Записать данные в файл спомощью процедур Write или Writeln.

Процедура Write производит запись поэлементно в текущую строку:

Процедура WriteLn записывает элемент и переводит указатель в начало следующей строки:

Если не указывать второй параметр процедуры, то в конце данной строки ставится признак конца файла и текущий указатель перемещается на начало следующей строки:

После завершения работы с файлом его закрытие обязательно.

Общая форма записи файла имеет вид:

Логическая функция Eoln()

Часто для обработки текстовых файлов используется специфичная для них функция Eoln(), позволяющая определить, достигнут ли конец строки. Если достигнут — значение функции равно True, а если нет — False.

Таким образом, для анализа конкретных символов строк файла можно применить вложенный цикл типа:

Пример. Дан текстовый файл, содержащий только целые числа, в каждой строке может быть несколько чисел, которые разделяются пробелами. Вывести на экран все числа с учетом разбиения на строки и подсчитать количество элементов в каждой строке.

Пусть в файле содержится следующая информация:

Этот файл можно создать в среде Паскаль следующим образом:

Программа будет иметь следующий вид:

На этом уроке было рассмотрено, как использовать текстовые файлы для ввода и вывода данных в программе на языке Паскаль.
На следующем уроке Вы узнаете, как использовать тип данных Bulean для представления данных логического типа.
Следующий урок: Логический тип данных

Урок понравился? Отзывы и замечания можно оставить в форме для комментариев, расположенной в нижней части страницы.

Источник

Вводится текст, конец ввода F1

Вводится текст. Конец ввода точка. Найти количество предложений
Вводится текст. Конец ввода точка. Найти количество предложений, предложения разделяются «!».

Написать программу (вводится текст, конец ввода две гласные буквы.)
Вводится текст, конец ввода две гласные буквы. Сосчитать количество предложений, в которых больше.

Вводится текст, конец ввода F1, подсчитать количество нечетных слов, начинающихся на букву k
ПОМОГИТЕ РЕШИТЬ ЗАДАЧУ! Вводится текст. Конец ввода F1. Подсчитать количество нечетных слов.

Вводится текст конец ввода F5. Определить количество предложений, в которых 3 слова
Вводится текст конец ввода F5. Определить количество предложений, в которых 3 слова. Слова.

Полагаю, это задание таскают из задачника с незапамятных времён, когда типа string в паскале ещё не было, а с консолью работали как с двумя файлами последовательного доступа. Посимвольный ввод. И, если у (физической) консоли не был включен эхо-режим, то, как правило, требовалось после ввода символа с клавиатуры выводить его на дисплей. Естественно, можно было прекратить ввод по коду любого символа. Это можно делать и сейчас, в модуле CRT эта возможность оставлена.

Для любого паскаля, кроме Pascal ABC.NET:

В Pascal ABC.NET модуль CRT не предусмотрен (типа, устарел), и для работы с консолью используется класс System.Console. Насколько я знаю, System.Console делает далеко не всё, что может CRT, и вряд ли получится перевести мою программу на Pascal ABC.NET. Хотя, кто его знает. Я Pascal ABC.NET знаю очень плохо.

Читайте также:  Признаки менингита у маленького ребенка

Добавлено через 3 минуты
Вот что бывает, когда не обновляешь вкладку браузера перед отправкой сообщения.

CRT реализует только основные старые вещи (и некоторые не полностью), в то время как System.Console даёт доступ и к современным примитивам работы с консолью.

Я имел ввиду модуль CRT вообще. Во всех паскалях, начиная с TP.

Вы как то странно понимаете совместимость. Она поддерживается не ради удовлетворения тех кому лень учится, а наоборот, для более простого перехода на новый стиль.
Благодаря ней можно прийти и в основном писать по-старому, но пробовать новые элементы по 1. Так проще научится писать по-новому, чем переучиваясь всему и сразу.

Источник

Лекция 2. Ввод и вывод данных(Паскаль)

Для дошкольников и учеников 1-11 классов

Рекордно низкий оргвзнос 25 Р.

раздел указания используемых модулей;

Program заголовок программы;

USES подключаемые модули, библиотеки;

LABEL объявление глобальных меток;

CONST объявление глобальных констант

TYPE объявление глобальных типов;

VAR объявление глобальных переменных;

(FUNCTION) заголовок процедуры или функции;

label объявление локальных меток;

const объявление локальных констант;

type объявление локальных типов ;

var объявление локальных переменных;

основной блок процедуры или функции;

основной блок программы- раздел операторов;

А теперь немного обо всем.

Заголовок программы начинается с зарезервированного слова Program, после которого идет идентификатор программы. В Турбо Паскале эта строка не обязательна, но правила хорошего тона в программировании требуют задания некоторого имени программы, чтобы уже при первом знакомстве можно было получить хоть какую-нибудь информацию о ее назначении. Имя программы не должно совпадать с другими идентификаторами в самой программе.

Оператор USES играет важную роль в подключении к тексту программы системных модулей из библиотек.

Объявление констант, типов, переменных.

Раздел описания типов TYPE позволяет программисту определять новый тип в программе. В данном разделе могут быть использованы ранее определенные константы.

В разделе описания глобальных переменных VAR содержится список переменных, используемых в программе, и определяется их тип в виде:

Разделы Label, Const, type и Var могут располагаться в любом порядке и, произвольно чередуясь.

Основной блок программы состоит из последовательности операторов, причем работа программы начинается именно с первого оператора основного блока. Тело основного блока программы ограниченно операторными скобками BEGIN и END. Обратите особое внимание на наличие точки после оператора END.

Ввод и вывод данных

Ввод и вывод данных можно организовывать двумя способами:

— с терминального устройства(клавиатура и экран)

Для ввода и вывода данных используются стандартные процедуры ввода и вывода Read и Write, оперирующие стандартными последовательными файлами INPUT и OUTPUT.

Эти файлы разбиваются на строки переменной длины, отделяемые друг от друга признаком конца строки. Конец строки задается нажатием клавиши ENTER.

Чтобы ввести данные в процессе выполнения программы используются встроенные процедуры

READ ([имя файл.переменной], список переменных)

Read(A1,A2. AK); ReadLn(A1,A2. AK); ReadLn;

При вводе исходных данных происходит преобразование из внешней формы представления во внутреннюю, определяемую типом переменных. Переменные, образующие список ввода, могут принадлежать либо к целому, либо к действительному, либо к символьному типам. Чтение исходных данных логического типа в языке ПАСКАЛЬ недопустимо.

Операторы ввода при чтении значений переменных целого и действительного типа пропускает пробелы, предшествующие числу. В то же время эти операторы не пропускают пробелов, предшествующих значениям символьных переменных, так как пробелы являются равноправными символами строк.

прерывают выполнение программы, наступает режим ожидания ввода значений;

присваивают полученные данные переменным из списка, соблюдая порядок следования.

При использовании этих процедур необходимо помнить о следующих особенностей их работы.

При введении нескольких данных разделять их некоторыми разделителями, например пробелами или клавишей Enter (но не запятой!).

Для вывода результатов работы программы на экран используются операторы:

В случае стандартного ввода-вывода имя файловой переменной указывать необязательно.

Переменные, составляющие список вывода, могут относиться к целому, действительному, символьному или булевскому типам. В качестве элемента списка вывода кроме имен переменных могут использоваться выражения и строки.

Вывод каждого значения в строку экрана происходит в соответствии с шириной поля вывода, определяемой конкретной реализацией языка.

WRITE(имя1[действие]:кол-во позиций для числа: кол-во после запятой);

Например, Writeln(1/3:0:4) на экран выведет результат 0.3333

Пример записи операторов вывода:

var rA, rB: Real; iP,iQ:Integer;

bR, bS: Boolean; chT, chV, chU, chW: Char;

Читайте также:  Ожирение внутренних органов признаки лечение

WriteLn(chT, chV, chU, chW);

если write(‘текст’), то выводится текст, заключенный в апострофы;

если writeln(‘текст’), то выводится текст, заключенный в апострофы и переводится курсор на новую строку;

если write(числовое выражение), то выводится результат этого выражения; например write(2+3), то на экране появится 5;

если write(имя1), то выводится значение переменной с этим именем;

если write(имя1,имя2), то выводятся значения переменных с этими именами, но они идут подряд. Поэтому необходимо между идентификаторами вставить символ пробел- Write(a1,’ ‘,a2);

если write(‘текст’,имя1,’текст’, выражение), то на экран выводится текст, значение переменной с именем имя1, опять текст и результат выражения.

При работе с процедурами вывода также нужно быть внимательными, так если Вы неправильно расставите апострофы, то Ваши переменные могут выводиться как элементы текста.

Ввод и вывод данных с помощью файлов.

Разберем один из самых популярных способов работы с файлами.

Алгоритм работы ввода данных:

Установим взаимосвязь с существующим файлом с именем, например, Input.txt. Для этого мы воспользуемся стандартной переменной INPUT и процедурой ASSIGN, записав в теле программы после слова BEGIN такую команду:

где input – стандартная переменная Pascal, ‘input.txt’- имя файла, из которого будут считываться данные.

Откроем этот файл для чтения процедурой RESET, для этого после предыдущей процедуры запишем:

3. Теперь можно считывать данные, с помощью процедуры Read(a), если данные записаны в строчку или Readln(a), если данные записаны в файле в столбик.

Алгоритм работы вывода данных:

Установим взаимосвязь с будущим файлом с именем, например, Output.txt. Для этого мы воспользуемся стандартной переменной OUTPUT и процедурой ASSIGN, записав в теле программы такую команду:

где output – стандартная переменная Pascal, ‘output.txt’- имя файла, который будет создан и в него будут записаны данные.

Откроем этот файл для записи процедурой REWRITE, для этого после предыдущей процедуры запишем:

3. Теперь можно записывать данные, с помощью процедуры Write(a), если данные будем писать в строчку или Writeln(a), если данные вводим в столбик.

Источник

Занятие 4. Pascal abc.net: Последовательности (начало)

Пример работы с последовательностью

Последовательности — это абстрактный набор данных, которые можно перебирать.

В отличие от других структур последовательности не хранятся в памяти (поэтому «абстрактный»), т.е. память используется только в конкретный момент времени, когда происходит перебор значений последовательности, и, как правило, нам необходим только 1 элемент (в единицу времени).

Последовательностью может быть, например, последовательность чисел:

арифметическая прогрессия: 1 3 5 7 9

геометрическая прогрессия: 1 2 4 8 16

Наиболее близким типом данных к последовательности является массив.

Рассмотрим стандартный пример работы с числовым рядом, БЕЗ использования последовательности:

begin var s:=0.0; for var i:=1 to 10 do begin var x:=ReadReal; s+=x; end; print(s) end.

Данный стиль написания программы считается плохим, т.к. основной алгоритм смешивается с вводом ( ReadReal ).

Ввод данных необходимо отсоединить от основного алгоритма. Для этого используем последовательность:

// накапливаем последовательность, переменная q хранит ее var q:=ReadSeqReal(10); var s:=0.0; foreach var x in q do s+=x; print(s) end.

Теперь алгоритм находится отдельно от ввода, программа стала более модифицируема.
Остается оформить основной алгоритм в виде функции:

function Sum(q: sequence of real):real; begin var s:=0.0; foreach var x in q do s+=x; result:=s end; begin print(Sum(ReadSeqReal(10))) end.

Генерация и формирование последовательностей

Итак, мы рассмотрели, как сформировать последовательность через ввод с клавиатуры:

Теперь рассмотрим, как генерируются последовательности.

Генераторы последовательностей:
Range(a,b: integer) : sequence of integer

Range(a,b,step: integer) : sequence of integer

Range(c1,c2: char) : sequence of char

Partition(a,b: real; n: integer) : sequence of real

print(Partition(0.0, 6.0, 4)); // делим поровну на 4 части [0, 1.5, 3, 4.5, 6]

SeqRandomInteger(n: integer[; a,b: integer]) : sequence of integer;

var q:=SeqRandomInteger(5,10,20); print(q); // [12,18,16,14,16]

SeqRandomReal(n: integer[; a,b: real]) : sequence of real;

var q:=SeqRandomReal(3, 1.0, 5.0); print(q); // [4.98996168374548,2.22339218166815,2.81110574389394]

Seq(params a: array of T) : sequence of T;

foreach var x in Seq (1,3,8) do print(x*x); // 1 9 64

SeqFill(count: integer; x: T) : sequence of T;

begin var q:=SeqFill(7,5); print(q); // [5,5,5,5,5,5,5] end.

Следует учесть, что последовательности формируются каждый раз, как только с ними организовывается цикл или работает метод:

Вывод последовательностей

Print(delim: string := ‘ ‘) : sequence of T;

var q:=SeqRandomInteger(5,10,20); q.Print(‘/’); // 16/11/13/10/13

Println(delim: string := ‘ ‘) : sequence of T;

Источник