- •2 Билет) Этапы развития эвм
- •3)Архитектура основные принципы работы эвм.
- •4) Операционные системы, их функции.
- •Вопрос 5
- •'Это текстовая строка'
- •'Это '' - символ одиночной кавычки'
- •4. Обработка строковых данных
- •§ 23.Символьный тип данных
- •8 Вопрос § 24. Строковый тип данных
- •24.1. Строковые величины
- •24.2. Операции со строковыми величинами
- •24.3. Стандартные подпрограммы
- •* 24.4. Преобразование строковых данных
- •* 24.5. Отображение числовой информации в графическом режиме
- •9 Вопрос
- •10 Билет
- •Основные элементы схем алгоритма
- •11 Билет Объектно-ориентированное программирование Основные понятия
- •Оператор цикла repeat
- •Оператор цикла while
- •Оператор цикла for
- •14 Вопрос
- •15 Вопрос
- •1. Основные понятия объектно-ориентированного программирования
- •2. Объект - как базовое понятие в объектно-ориентированном программировании
- •2.1 Инкапсуляция
- •2.2 Наследование как важнейшее свойство объекта
- •2.3 Экземпляры объектных типов
- •2.4 Поля объектов
- •2.5 Методы
- •2.6. Полиморфизм
- •3. Понятие класса
- •4. Процесс объектно-ориентированного проектирования
- •5. Объектно-ориентированные языки
- •6. Простая объектная модель и ссылочно-объектная модель
- •7. Языки и программное окружение
- •17 Вопрос
- •18 Вопрос
- •19 Вопрос
4. Обработка строковых данных
§ 23.Символьный тип данных
До сих пор Вы рассматривали программы, предназначенные для обработки только числовых данных. Многие задачи требуют умений работы с текстовыми данными, которые в Паскале представлены в виде знаков (символов) и строк.
Величина символьного типа представляет собой некоторый знак таблицы кодов 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). Смоделируйте работу исполнителя Робот: изобразите клеточное поле; реализуйте команды перемещения Робота и закраски соответствующей клетки (Вверх, Вниз, Влево, Вправо, Закрасить).