Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
информатика ЗКМЗКЕ_1курс / Основы алг-ции и прог-ие.doc
Скачиваний:
81
Добавлен:
05.06.2015
Размер:
1.88 Mб
Скачать
    1. Прочие процедуры и функции.

Имя функции

Модуль

Назначение процедуры или функции

Keypressed

Crt

Функция. Возвращает значениеTrue, если на клавиатуре была нажата клавиша иFalseв противном случае

ReadKey

Crt

Функция. Приостанавливает выполнение программы до нажатия на любую клавишу

SizeOf(X)

System

Функция. Возвращает число байт, занимаемых аргументом

WhereX

Crt

Функция. Возвращает горизонтальную координату текущей позиции курсора относительно текущего окна

WhereY

Crt

Функция. Возвращает вертикальную координату текущей позиции курсора относительно текущего окна

ClrScr

Crt

Процедура. Очищает экран

Delay (Х)

Crt

Процедура. Приостанавливает работу программы на Х миллисекунд

Exit

System

Процедура. Преждевременное завершение процедуры, функции или основной программы

FillChar(X,COUNT,Value)

System

Процедура. Заполняет заданное количество COUNTпоследовательных байт переменной Х значениемValue

GetDate(<год>,<месяц>,

<число>,<день недели>)

Dos

Процедура. Возвращает текущую дату

GotoXY(X,Y)

Crt

Процедура. Перемещает курсор в нужное место экрана

Window(X1,Y1,X2,Y2)

Crt

Процедура. Определяет текстовое окно на экране(X1,Y1- координаты верхнего левого угла;X2,Y2- координаты правого нижнего угла)

    1. Процедуры ввода данных.

Ввод данных в языке Турбо Паскаль выполняется стандартными процедурами (операторами) READилиREADLN, вывод - процедурамиWRITEилиWRITELN. ПроцедурыREADиREADLNиспользуют для ввода символов (тип данныхCHAR), строк (тип данныхSTRING) или числовых данных (тип данныхINTEGER,BYTE,REALи др.).

Вызов процедуры READимеет следующий вид:

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

Для процедуры READLNсоответственно:

READLN ([<имя файла>,]<список переменных>);

При отсутствии <имени файла> считывание данных производится из стандартного файлаINPUT; при этом стандартными устройствами считаются клавиатура или дисплей, связанные с файломINPUT.

Каждому оператору ввода соответствует свой поток данных, в котором перечисляются значения констант, присваиваемые переменным, указанным в списке переменных. Присваивание значений из входного потока происходит слева направо в соответствии с порядком следования переменных в списке переменных.

Необходимо помнить:

  • Типы переменных и констант должны совпадать (исключение составляет только тип данных REAL, для которых можно при вводе указывать переменные и константы типаINTEGER).

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

  • Если вводится строка (тип данных STRING), тоREADсчитывает столько символов, сколько допустимо по максимальной длине, заданной в описанииVAR.

  • При вводе последовательности символов (тип данных CHAR илиSTRING) пробел воспринимается как символ.

Например.

А) Ввод числовых данных:

Var B,A,D: Real;

K:Integer; Входной поток данных:

. . . 2.5 –4.95 20 1.25Е2

Read(A,D); После ввода:

Read(K,B); A=2.5; D=-4.95; K=20; B=125

Б) Ввод числовых и строковых данных.

Var A: Real;

B:Integer;

C1,C2,C3: Char; Входной поток данных:

D: String[5]; 2.5 10 KLMКОШКА

. . . После ввода:

Read(A,B,C1,C2,C3,D); A=2.5; B=10; C1=’ ’;

C2=’K’;C3=’L’;

D=’MКОШК’

Из примера видно, что ввод смешанных данных (и числовых и строковых) из одного входного потока осуществляется не совсем верно. Если же во входном потоке данных после 0 не поставить пробел, то это приводит к ошибке ввода данных (ERROR106). Поэтому рекомендуется вводить числовые значения отдельно от символов или строк.

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

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

Read(A,B,C); Входной поток:2 9 5 3 7 или

Read(D,Е); Входной поток 1 строка:2 9 5

2 строка 3 7

Отличие оператора READотREADLNсостоит в том, что после считывания последней переменной приREADLNостаток строки ввода игнорируется. Следующий за ним операторREADилиREADLNсчитывает данные с начала новой строки, т.е. операторREADLNреагирует на конец строки (нажатие клавиши <Еnter>) и в случае его обнаружения происходит переход к следующей строке данных во входном потоке данных. Возможно использование оператораREADLN без параметров; в этом случае обеспечивается безусловный переход к следующей строке данных во входном потоке.

Например, рассмотрим ввод элементов двумерного массива разными способами:

1) For I:=1 to 2 DO

Begin

For J:=1 to 3 do

Read (A[I,J]);

Readln

End;

Входной поток: 3 5 1

-4 7 9

2) For I:=1 to 2 do

For J:=1 to3 do

Read (A[I,J]);

Входной поток: 3 5 1

-4 7 9

  1. For I:=1 to 2 do

For J:=1 to 3 do

Readln(A[I,J]);

Входной поток: 3

5

1

-4

7

9

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

Var A,B,C,D:integer; Входной поток:

1 строка: 10 20 30 40 50

… 2 строка: 60

Readln(A,B,C);

Readln(D); Результат:

A=10;B=20;C=30;D=60