Строки (string)

Надпись string

Для обработки текстовой информации в программировании существует строковый тип (STRING) переменной. Операции данного типа очень похожи на обычные - математические. Например, для сравнения текста можно использовать знаки >, >=, =, <=, <, <>, а для склеивания двух частей - знак +.

Функции:

  • pos(st, s) - поиск определяет, с какой позиции строки S входит ST и тем самым выведет номер первой позиции подстроки в исходной строке.

s := 'Turbo Pascal';
st := 'Pascal';
k := pos(st, s);

Переменная K будет иметь значение 7, так как слово "Pascal" начинается с 7-ого символа в строке "Turbo Pascal".

  • delete(s, p, n) - удаляет из строки S определенное (N) количество символов, начиная с P.

s:='Таракан';
delete(s,5,2);

Теперь вместо слова "Таракан" мы получим "Таран".

  • insert(sub, s, n) - вставляет подстроку SUB в строку S, начиная с позиции N.

s := 'Таракан';
insert (' бегает', s, 8);

На экране отобразится "Таракан бегает".

  • copy(s, n, e) - копирует подстроку длиной E, начиная с позиции N строки S. Таким образом переменная E отвечает за количество букв в слове (или количество символов в тексте).

s := 'Таракан бегает';
s1 := copy(s, 1, 7);
s2 := copy(s, 9, 14);

Таким образом переменная S1 будет иметь значение "Таракан", а переменная S2 - "бегает".

  • str(x, s) - преобразует число X в строку S.

x := 2;
s1 := 'таракана';
str(x, s);
s := s + s1;

В переменной S находится следующее выражение: "2 таракана". Напомним, что X - переменная любого (вещественного (REAL) или целого (INTEGER)) типа, а переменная S - строкового (STRING).

  • val(s, x, err) - преобразует текст S в число X. Причем, если операция происходит успешно, то в переменную ERR (имеет только целый тип (INTEGER)) присваивается значение 0. В других же случаях записывается значение первого недопустимого символа.

s := '123';
i := 1;
val(s, x, err);
i := i + s;

Переменная I будет содержать числовое значение 124.

  • length(s) - возвращает количество символов в строке (находит длину строки).

s := 'Таракан';
n := length(s);
writeln(n);

Переменная N содержит число 7. Это далеко не все функции, позволяющие работать с текстом. Но уже, хорошо зная их, можно с уверенностью решить практически любую задачу, а в дальнейшем - разработать любое программное приложение!

Задания:

  • Разработать программу преобразования 16-ой системы счисления в 10-ую и наоборот.
  • Проверить, является ли слово перевертышем.
  • Найти самое длинное слово в предложении и вывести его на экран.


Ответы к заданиям предыдущей статьи:

  • Составить программу, которая определяет верно ли найдена пользователем сумма двух чисел (a и b), заданных компьютером.

Pascal Сумма двух чисел

Сначала объявляем RANDOMIZE, затем в переменную A и B возвращаем сгенерированное положительное число от 1 до 10000, и просим у пользователя ввести сумму этих чисел, ответ которого присваиваем в переменную V. Потом проверяем на истинность этого выражения. Если совпадает, выводим 'Verno', если же нет - выводим 'Neverno'.

  • Вывести на экран таблицу Пифагора.

Вначале предлагаем разработать программу, полностью зависящую от пользователя (т.е. будем вводить число колонок и столбцов):

Таблица умножение на Паскаль

Работа программы несложная. Первый цикл (переменная I) отвечает за количество строк (Y), а второй (E) - за количество столбцов (X). Начнем со второго цикла. Напомним, что WRITE выводит результат в строчку. Но, чтобы все числа не слились в одно, мы добавим вначале пробел (можно в конце), а затем число, которое перемножает текущий номер столбца на текущий номер строчки. Обратим внимание, что после второго цикла не стоит BEGIN, так как выполняется лишь одно действие, а вот после первого - стоит, так как "Writeln; " относится именно к первому циклу. Операция I*E понятна, так как она высчитывает все числа в таблице Пифагора. А вот оператор "Writeln;" предназначен, чтобы при выводе на экран, перейти на следующую строчку.

Если бы программа была написана наоборот - сначала выводим первый столбец, затем второй, третий и т.д. - то вместо таблицы все числа были бы выведены в один столбец, так как вернуться обратно на первую строчку для компьютера невозможно (в данной программе или версии Pascal).

Но, так как мы проходили тему "Генератор случайных чисел (random)", изменим программу так, чтобы количество столбцов и строк в таблице были заданы компьютером. Для этого подберем их самое максимальное и минимальное значение (приблизительно от 5 до 20). Заменим оператор ввода READLN на функцию RANDOM и получим следующий код:

Таблица Пифагора на Паскаль

Чтобы отображалось одинаковое количество столбцов и строк в таблице, достаточно использовать одну переменную (например X) и в первом цикле конечное значение (Y) заменить на X.

  • Разработать программу, которая проверяет таблицу умножения (10 примеров), высвечивает количество ошибок, правильных ответов и ставит оценку.

Программа для проведения тестов Pascal

Программа немного сложноватая, но если составить ее по частям и соединить в одну - окажется очень легкой. Сначала разработаем программу для одного примера. Сгенерируем два числа для переменных A и B от 1 до 10. Сравним ответ пользователя с ответом компьютера (компьютер проверяет таблицу умножения, поэтому перемножаем A и B) и если ответ верный, добавляем к количеству правильных ответов (V) единицу. Повторим те же действия для 10 примеров (добавим цикл FOR). Переменная P используется только вначале, поэтому возьмем ее еще и для хранения оценки. Давайте определимся по каким критериям будем оценивать пользователя. Если отсутствуют ошибки, или совершена только одна - ставим 5. Если же допущено 2 ошибки - ставим 4, 3 ошибки - 3, 4 ошибки и более - ставим 2. Чтобы найти количество ошибок, необходимо вычесть из общего количества примеров (10) количество верных примеров (V).


<<Предыдущая статья                                     Следующая статья >>

Опубликовано:

Читайте также:
Заказывайте товары и услуги:

Комментарии (1)
Оставить комментарий
Владимир
Очень интересное направление сайт - блога, думаю более полезное для начинающих программистов. Такое ощущение, что побывал 15 лет назад на парах в универе. Желаю удачи и успехов на просторах всемирной паутины нета.