Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
билеты по информатике.docx
Скачиваний:
46
Добавлен:
18.04.2015
Размер:
341.85 Кб
Скачать

Билет 6 Типы данных в Delphi

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

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

1. На Вашем компьютере может действовать иная система кодирования символьных данных (КОИ-8, ГОСТ-альтернативная или другая). Для того чтобы получить таблицу кодов Вашего компьютера, запустите в среде программирования на выполнение эту программу.

Program CODY;

Var k : Byte;

Begin

For k:=32 to 255 do

Writeln (k:3,' ',Chr (k));

End.

2. Для получения на экране компьютера изображения знака таблицы ASCII в отсутствие соответствующей ему клавиши на клавиатуре, используют набор через клавиши «ALT+код знака» на дополнительной панели клавиатуры. Таким образом, например, получено следующее изображение: ╙╨╨╨╜ (использовался набор: Alt+211, Alt+208, Alt+208, Alt+208, Alt+189).

В таблице каждому знаку ставится в соответствие уникальное число – числовой код от 0 до 255. Значение символьного типа занимает в памяти объем, равный 1 байту. Идентификатор типа – ключевое слово CHAR. Константу символьного типа представляют обычно в виде знака таблицы ASCII, ограниченного с обеих сторон апострофами, например, 'F', '+', '=', 'a', ' '. Возможно задание константы с помощью соответствующего ей кода из таблицы ASCII; для этого к ее коду приписывают слева символ “# “, например, #70, #43, #61, #97, #32. Например, действия операторов Writeln (#70); и Writeln ('F') равнозначны.

Именованные константы символьного типа описываются в разделе констант, а переменные символьного типа – в разделе переменных программы. Например: Const S='x' ; z='+' ; X='7' ; Var B, T : Char ;

После такого описания можно выполнять присваивания или вывод значений символов. Например, после выполнения операторов:

B := 'K' ; T:=S ; Writeln (S, z, X) ;

переменные B и Т получат значения, равные соответственно 'K' и 'x', и на экран компьютера будет выведен текст: x+7.

В Паскале существует возможность получения знака по его ASCII-коду X с помощью символьной функции CHR(X), например, Chr(43)='+'; Chr(120)='x', Chr(55)= '7'.

При построении условий для операторов If и While можно использовать известные Вам символы сравнения. Из двух знаков считается меньшим тот, который записан в таблице кодов ASCII раньше. Так, например, 'a'<'d', 'Z'>'X', '4' > '1'.

Символьный тип относится к стандартным порядковым типам. Поэтому символьная переменная может выступать в роли селектора в операторе выбора CASE, или параметра цикла в операторе FOR.

Примеры программ:

Пример 1. «Электронный калькулятор».

Программа должна предложить ввести два действительных числа и знак арифметической операции (“+”, “-”, “*”, “/”), произвести требуемое вычисление и вывести результат операции.

Будем выполнять в программе анализ введенного символа арифметической операции Z с помощью оператора выбора Case. Переменную Z опишем как символ Char в соответствии с требованиями оператора Case. A, B – операнды, С – результат выполнения операции.

Program ARIFM;

Var A, B, C : Real; Z: char;

Begin

Writeln ('Введите два числа');

Readln (A, B);

Writeln ('Введите знак операции ');

Readln (Z);

Case Z of

'+': C:=A+B;

'-': C:=A-B;

'*': C:=A*B;

'/': if B<>0 Then C:=A/B

Else Writeln ('Невозможно')

End;

If not ((B=0) and (Z='/')) Then

Writeln (A:0:2, Z, B:0:2, '=', C:0:2)

End.

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

Пусть Kod (код символа-пароля) формируется случайным образом и имеет значение от 32 до 127. Соответствующий символ Р (пароль) может быть получен путем использования символьной функции Chr. Введем логическую переменную Y для фиксирования момента угадывания пароля. Будем предлагать пользователю вводить пароль до тех пор, пока значение Y не окажется равным True. Момент завершения ввода наступит при совпадении введенного пользователем символа S и пароля P. K – количество предпринятых попыток.

Program PAROL;

Var Kod, K : Byte ;

P, S : Char;

Y : Boolean ;

Begin

Randomize;

Kod:=Random (96)+32;

P:=Chr (Kod);

K:=0;

Y:=False;

While Y=False Do

Begin

Writeln ('Введите символ-пароль');

Readln (S);

K := K+1;

If S=P Then

Begin

Y:=True;

Writeln ('Пароль угадан!')

End

Else Writeln ('Неправильно!')

End ;

Writeln ('Сделано ', K, ' попыток');

….

End.

Пример 3. Программа вывода на экран компьютера малых букв латинского алфавита в виде:

abcdefghijklmnopqrstuvwxyz

Program LAT_1;

Var b: Char;

Begin

For b := 'a' To 'z' Do

Write (b) ;

Writeln

End.

Program LAT_2;

Var k: Byte;

Begin

For k := 97 To 122 Do

Write (Chr(k)) ;

Writeln

End.

Пример 4. Программа вычисления значений функции y=sin x: программа должна предложить ввести значение x, вывести соответствующее значение функции y и текст, содержащий вопрос: требуется ли продолжить вычисления.

Положим, что вычисления должны быть продолжены, если пользователь введет символ “Y” (или “y”); в противном случае выполнение программы следует завершить. Перед завершением работы программы выведем на экран текст “'До новых встреч!”

Program FUN_SIN;

Var X, Y : Real ;

S : Char;

Begin

Writeln ('Начнем работу? (Y/N)');

Readln (S);

While (S='Y') or (S='y') Do

Begin

Write ('X='); Readln (X);

Y:=sin (X);

Writeln ('SIN(',X, ')=',Y:0:5);

Write ('Продолжим? (Y/N) ');

Readln (S)

End ;

Writeln ('До новых встреч!')

End.

* Пример 5. Моделирование работы графического редактора.

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

Направление перемещения выбирается с помощью курсорных клавиш: вверх – вниз – влево – вправо. Эти клавиши имеют коды #72, #80, #75, #77 соответственно. Для завершения работы требуется нажатие на клавишу “ESC” (код #27).

Program RISUI;

Uses Graph, Crt;

Var a, b : Integer; c : Char;

begin

a:=Detect; Initgraph (a, b, '');

Moveto (100,100);

Outtext ('UP, DOWN, LEFT, RIGTH, ESC');

While True do

Begin

c:=Readkey;

Case c Of

#72: LineRel (0, -10);

#80: LineRel (0, 10);

#75: LineRel (-10, 0);

#77: LineRel (10,0);

#27: Exit; {выход из программы}

End;

End;

Readln; CloseGraph

End.

1.Какой тип данных называется символьным?

2.Какие операции можно выполнять над символьными данными?

1.Внесите изменения в программу примера 2, предполагая, что пароль – это цифра или малая буква латинского алфавита.

2.Внесите изменения в программу примера 4 для вычисления значений функцииy=1/x.

3.Напишите программы решения задач:

1) Вывести на экран компьютера малые буквы латинского алфавита в обратном порядке.

* 2) Вывести на экран компьютера последовательности символов:

a

ab

abc

abc…xyz

3) С клавиатуры вводится знак препинания, которым заканчивается некоторое предложение (“.”, “?”, “!”). Определить тип этого предложения (повествовательное, вопросительное, восклицательное).

* 4) Вывести на экран компьютера последовательности символов: abbcccdddd…z…z(символ “z” повторяется 26 раз): а) через пробел; б) каждая последовательность – с новой строки.

5) С клавиатуры вводится символ, соответствующий полу школьника (“m” – юноша, “w” – девушка). В зависимости от введенного символа вывести на экран текст: “сейчас урок военной подготовки” или “сейчас урок домоводства”.

* 6) Смоделируйте игру «Клад»: компьютер прячет (не отображая на экране) клад, координаты которого получены случайным образом. Пользователю предлагается перемещать «карандаш» в предполагаемом направлении; компьютер анализирует нахождение «карандаша» и выдает сообщение «тепло», если игрок приближается к кладу, «холодно», если удаляется, «горячо», если игрок находится в радиусе 50 точек от клада. Когда координаты угаданы, клад отображается на экране.

* 7). Смоделируйте работу исполнителя Робот: изобразите клеточное поле; реализуйте команды перемещения Робота и закраски соответствующей клетки (Вверх, Вниз, Влево, Вправо, Закрасить).