Урок #8 «Строковые переменные»
Глава #1
«Правописание...»
*проще простого*
Никто из вас не задумывался, работая с текстовым редактором WORD, как происходит поиск и выделение грамматических ошибок в тексте?
На панели инструментов есть такая кнопка ABC - правописание . Пользователь, нажимая ее , исправляет ошибки. Как это происходит? Давно уже WINDOWS поддерживает русский язык, соответственно составлен и входит в его пакет словарь русских слов. По умолчанию установлена автоматическая проверка правописания, то есть после ввода текста автоматически запускаются программы сравнения введенных ваших слов со встроенным словарем, ну еще пунктуация и в итоге сам WORD предлагает пользователю варианты замены. Принцип понятен, слово программистам.
В Паскале строковый тип определяется через тип STRING, его размер 1 байт - 255 символов, это максимум, хотя можно точно задать длину строки менее 255 , например STRING[100] - строка длины 100 символов.
В программе строка выделяется в апострофы, например
a:string[4];
а:='тема';
В Паскале определены 4 функции и 4 процедуры обработки строк.
Функции: соединения CONCAT, копирования COPY, позицирования POS и определения длины строки LENGTH.
Процедуры :удаления DELETE,вставки INSERT, преобразования числа в строку STR и
обратного преобразования строки в число VAL.
Здесь приведены названия операторов без параметров. Подробнее можно найти в описании языка Паскаль в приложении.
Рассмотрим одну из них, например на определение длины строки LENGTH. Обратимся к строке как к массиву, то есть если к строке а:='ТЕМА'; обратившись в цикле:
FOR
1: = 1 ТО 4 DO WRITELN(A[I]); на выходе получим
Т
Е
М
А
Иногда длина строки неизвестна, тогда используют функцию определения длины строки, заменяем 4 на LENGTH(a), получаем FOR I: = l ТО LENGTH(a)
DO WRITELN(A[I]); результат на выходе такой же.
Глава #2 «Поиск ошибки»
*набор знаний*
Попробуем сами написать программу определения ,ошибся ли пользователь или нет ,при наборе текста в WORDe.
Задание: «Определить количество ошибок в слове ,содержащем не более 20 букв».
Условия задачи: В первой строке входного файла INPUT.TXT правильный вариант слова, во второй слово, такой же длины , определенное пользователем. Вывести в выходной файл количество ошибок, допущенных пользователем.
Пример :
INPUT.TXT
привет
привет
OUTPUT.TXT
О
Чтобы написать программу определимся с алгоритмом:
1. Чтение данных
2. сравнение строк в цикле с параметром с записью результатов в счетчик
3. вывод результата
В разделе описания переменных определим S1,S2:STRING[20] - две строки, диной не более 20 символов, I -переменная цикла, R - счетчик. Условие сравнения будет использовать знак <> - НЕРАВНО, значит здесь допущена ошибка и включается счетчик R, как INC(R). Напоминаем что регистр включения русского алфавита в Паскале как CTRL+SHIFT правый
Получаем
полный текст программы:
var
S1,S2:STRING[20] ;
I,R:integer;
begin
assign(input,’input.txt’);
assign(output,’output.txt’);
reset(input);
rewrite(output);
readin(Sl);
readln(S2);
for I: = l to LENGTH(Sl) do IF Sl[I]<>S2[I] THEN
INC(R);
write(R);
end.
Практическое задание:
l.Ha диске А создать файл LEN.PAS и ввести программу
2.Во входной файл INPUT.TXT записать в первой строке «привет» и во второй
строке «привет» , проверить работу программы
3.Протестировать программу на слово пользователя «прювет»
Глава #3 «Вопросы для повторения и ДЗ»
Вопросы для повторения:
1. Как описываются строковые переменные в Паскале?
2. Какая функции и процедуры определены в Паскале?
3. Пусть 3:='ПРОГРАММА', что выйдет после выполнения WRITE(S[4]) и WRITE(LENGTH(S)-1)
4. Как записывается условие «неравно»?
Домашнее задание:
Написать программу « Даны две строки, первая строка из словаря, вторая определена пользователем. Вывести номер позиции буквы в которой допущены ошибки, если они есть, если нет ошибок вывести «no error»
Пример:
INPUT.TXT
текст
текст
OUTPUT.TXT
по error