- •Ю.П. Чернов, о.П. Шафеева программирование для начинающих
- •1. Среда программирования turbo pascal 7.0
- •1.1. Структура меню среды
- •1.2. Правила оформления программ
- •1.3. Команды редактора тп
- •Команды удаления и вставки
- •1.4. Компиляция и исправление синтаксических ошибок
- •2. Элементы языка pascal
- •2.1. Алфавит языка
- •2.2. Константы. Идентификаторы
- •2.3. Операторы
- •2.3.1. Оператор присваивания
- •2.3.2. Оператор безусловного перехода
- •Стандартные функции
- •2.3.3. Условный оператор if
- •2.3.4. Опеpатоp варианта case
- •2.3.5. Составной и пустой операторы
- •2.3.6. Операторы цикла
- •2.4. Процедуры прерываний
- •2.5. Типизированные константы
- •2.6. Структура программы
- •2.7. Подпрограммы
- •2.7.1. Определение процедур и функций
- •2.7.2. Вложенные подпрограммы
- •2.7.3. Вызов подпрограмм
- •2.7.4. Процедуры
- •2.7.5. Функции
- •2.7.6. Передача в подпрограмму параметров-массивов и параметров-строк
- •2.7.7. Рекурсия
- •2.8. Типы в Турбо Паскале
- •2.8.1. Целые типы
- •Классификация целых типов
- •Встроенные процедуры и функции для целых типов
- •2.8.2. Логический тип
- •2.8.3. Символьный тип
- •Служебные символы
- •2.8.4. Строковый тип
- •Встроенные функции и процедуры для обработки строк
- •Процедуры преобразования
- •2.8.5. Перечислимый тип
- •2.8.6. Ограниченный тип (диапазон)
- •2.8.7. Вещественные типы
- •Вещественные типы
- •Встроенные функции
- •2.8.8. Структурированные типы данных. Массивы
- •2.8.9. Множества
- •2.8.10. Записи
- •2.9. Изменение типа выражения
- •2.10. Процедурные типы
- •2.11. Файлы
- •Общие процедуры и функции для работы с файлами
- •2.11.1. Текстовые файлы
- •2.11.2. Типизированные файлы
- •2.11.3. Нетипизированные файлы
- •2.12. Указатели и динамическая память
- •2.13. Модули
- •2.14. Библиотека Турбо Паскаля
- •2.14.1. Модуль crt
- •2.14.2. Модуль graph
- •Var driver, Mode: integer переменные драйвера и режима.
- •Управление графическим режимом
- •Управление экраном, окном, страницей
- •Управление цветом и палитрой
- •Работа с точками
- •Работа с линиями
- •Построение фигур из линий
- •Построение криволинейных фигур
- •Работа с текстом
- •Обмен с памятью
- •2.15. Динамические структуры данных
- •2.15.1. Связанные динамические данные. Списки
- •Чтобы сослаться на двунаправленный кольцевой список как на единый программный объект, используется указатель, значением которого является ссылка на заглавное звено списка.
- •2.15.2 Очередь
- •2.15.3. Стек
- •3. Практическое программирование Этапы подготовки и решения задач на компьютере
- •Порядок выполнения лабораторных работ
- •Лабораторная работа 1 Основы программирования в среде Турбо Паскаля.
- •Приоритет операций в выражении
- •Задание 1 (программа 1_1)
- •Лабораторная работа 2 Программирование разветвленных алгоритмов. Операторы передачи управления
- •Лабораторная работа 3 Программирование циклических алгоритмов с заданным числом повторений
- •Лабораторная работа 4 Программирование циклических алгоритмов с предусловием
- •Лабораторная работа 5 Программирование циклических алгоритмов с постусловием
- •Модифицировать программу 3_2 для вычисления функций f1(X) и f2 (X) с применением оператора цикла с постусловием. Выполнить ее и сравнить результаты с полученными ранее.
- •Лабораторная работа 6 Программирование алгоритмов обработки одномерных массивов
- •Задание 1
- •Лабораторная работа 7
- •Лабораторная работа 8 Программирование с использованием функций
- •Лабораторная работа 9 Программирование с использованием процедур
- •Лабораторная работа 10 Обработка символьных и строковых данных
- •Лабораторная работа 11 Файлы
- •Лабораторная работа 12 Записи
- •Лабораторная работа 13 Решение нелинейных уравнений
- •Задание (программа_13)
- •Лабораторная работа 14 Вычисление приближенного значения определенного интеграла
- •Лабораторная работа 15 Модульное программирование
- •Лабораторная работа 16 Графика
- •Библиографический список
- •Обозначения графические в схемах алгоритмов (гост 19.701-90)
- •Зарезервированные слова Turbo Pascal 7.0
- •Приложение в
- •Кодировка символов в соответствии с кодами ascii
- •Приложение г
- •Альтернативная кодировка госТа для кодов 128...255
- •Клавиши с кодами из двух частей
- •Содержание
Лабораторная работа 10 Обработка символьных и строковых данных
Символьный тип (Char) - это тип данных, используемый для описания отдельных символов (знаков, букв, кодов). Он позволяет обрабатывать любые символы ПК.
Для кодировки символов используется восьмибитовый код. Символы с кодами от 0 до 31 относятся к служебным.
К символьным значениям и переменным применимы операции присваивания, сравнения и следующие встроенные функции:
Функция: тип |
Назначение |
ORD(c: char): Byte CHR(b:byte) : Char UPCASE(c:char):Char Pred(c:char):Char Succ(c:char):Char |
Возвращает код символа Выдаёт по коду аргумента символ Переводит латинские строчные буквы в прописные Выдаёт предшествующий С символ Выдаёт следующий за С символ |
Строковый тип (String) используется для обработки текстовой информации. Строка-константа - это произвольная последовательность символов, заключённая в апострофы. Отдельный символ совместим по типу с элементом типа CHAR.
Строки можно присваивать, сцеплять и сравнивать.
Функции (процедуры) для работы со строками
LENGTH(S:string):byte - выдаёт текущую длину строки S;
вместо неё можно пользоваться функцией (Ord s[0]).
2. CONCAT(S1,S2,…,Sn:string):string – осуществляет сцепление строк;
вместо неё можно пользоваться операцией “+”.
3. COPY(S:string; index, len:integer):string – выдаёт подстроку длиной len, начиная с символа с номером index.
4. DELETE(var S:string; index, len:integer) – удаляет из строки S подстроку длиной len, начиная с символа с номером index.
5. INSERT(subs:string; var S:string; index:integer) – вставляет в строку S подстроку subs, начиная с позиции index.
6. POS (subs, S:string):byte – отыскивает вхождение подстроки subs, в строке S и выдаёт номер позиции первого символа subs в S или 0, если в S нет подстроки subs.
7. STR(X[:w[:n]], var S:string) – преобразует числовое значение X в строковое S в соответствии с заданным форматом.
VAL(S:string, var X, var errcod) – преобразует числовую строку S в числовую переменную X, формируя errcod - код ошибки.
FILLCHAR(Var X; k:word; value) – процедура заполнения k последовательных байт переменниой X значением value (выражением любого порядкового типа).
Пример: Ввести строку st1.Сформировать строку st2 перестановкой символов исходной строки в обратном порядке и заменой всех строчных латинских букв прописными.
Program lr_10;
Var
i, j: byte;
st1, st2: string; {эквивалентно string[255]}
Begin
writeln(‘введи строку’);
readln (st1);
writeln(‘исходная строка:’,st1);
j:= LENGTH(st1); {максимальный индекс элемента в строке}
for i:=1 to ord (st1[0]) do
begin
st2[i]:=UPCASE(st1[j]);
j:=j-1
end;
st2[0]=st1[0];
write(‘искомая строка: ’ st2 );
writeln {перевод строки}
END.
Задание 1 (программа 10_1)
1. Дана строка из 20 символов. Вывести из нее на печать только строчные буквы латинского алфавита.
2. Вывести на печать все строчные, а затем все прописные буквы русского и латинского алфавитов.
3. В заданной строке подсчитать частоту появления букв «a», «b».
4. Дан текст из 60 литер. Напечатать только строчные русские буквы, входящие в этот текст.
5. Дана последовательность символов, содержащая символ «я». Определить порядковый номер символа «я» в последовательности.
6. Дана последовательность символов. Определить в ней символ, который по алфавиту предшествует другим.
7. Напечатать в алфавитном порядке все различные строчные буквы, входящие в заданный текст из 100 литер.
8. Определить, является ли заданная последовательность символов в строке симметричной: читается одинаково слева направо и справа налево.
9. Напечатать текст, образованный символами с порядковыми номерами 56, 89, 84 и 69 и текст с изменением регистра.
10. Даны две строки с1 и с2, содержащие до 5 цифр каждая. Преобразовать их к данным целого типа, используя процедуру VAL, вычислить арифметическое выражение с3 = (с1-с2)/(с1+с2).
11. Вычислить суммы кодов всех букв, входящих в слова SUM и ALFA. Сравнить слова и определить, какое из них больше.
12. Напечатать заданный текст с удалением из него всех букв b, непосредственно перед которыми находится буква с.
13. Имеется символьная переменная d, присвоить логической переменной T значение true, если значение d-цифра, и значение false в противном случае.
14. Если в заданый тексте входит каждая из букв слова key, тогда напечатать «yes» , иначе – «no».
15. Написать программу, которая предварительно запрашивает ваше имя, а затем приветствует вас по имени.
16. Ввести вещественное число, преобразовать его в строку. Подсчитать количество разрядов в целой и дробной частях. Найти представление числа в виде мантиссы (по модулю меньшее единицы) и порядка.
17. Ввести строку, состоящую из нулей, единиц и десятичной точки. Преобразовать ее в десятичное число.
Задание 2 (программа 10_2)
1. Дана строка, содержащая не более двадцати латинских букв. Все вхождение «max» в ней заменить на «min» и «макс» на «мин». Подсчитать число таких замен.
2. Дана строка, содержащая сорок латинских букв. Подсчитать все вхождение «abc» в строку и их удалить. Вывести на экран два варианта полученных строк, заполняя образовавшую «дыру» последующими буквами с добавлением в конце пробелов, и, оставляя на месте удаленных символов пробелы.
3. Определить сколько различных символов входит в заданный текст, содержащий не более 100 литер и оканчивающийся точкой.
4. Определить номера позиций гласных букв в заданном тексте.
5. Напечатать заданный текст из 60 символов, удалив из него повторные вхождения каждой литеры.
6. Дана строка, состоящая из слов, разделенных пробелами, в конце строки – точка. Определить, сколько в строке слов, содержащих четное число символов.
7. Дан набор слов на английском языке, разделенных пробелами, в конце точка. Выделить в последовательности нечетные слова прописными буквами.
8. Дан непустой текст из строчных букв, за которыми следует точка. Определить упорядочены ли эти буквы по алфавиты. Напечатать результат проверки и исходный текст прописными буквами.
9. Дана последовательность от двух до восьми слов, в каждом из которых от одной до десяти строчных букв; между соседними словами – не менее одного пробела, за последним словом – точка. Напечатать слово с максимальной длиной.
10. Дано несколько слов, в каждом из которых от одной до семи строчных букв, между соседними словами – не менее одного пробела, за последним словом – точка. Напечатать эти слова в алфавитном порядке.
11. Дана последовательность, содержащая от одного до восьми слов, в каждом из которых от одной до пяти строчных букв; между соседними словами – запятая, за последним словом – точка. Напечатать эту же последовательность, удалив из нее повторные вхождения слов.
12. В заданном тексте (слова разделены пробелами) поменять местами первое и последнее слово.
13. Даны числа K и текст из слов, разделенных пробелами, в конце – точка. Определить количество слов в тексте, состоящих из K букв.
14. Дана последовательность, содержащая от двух до десяти слов, в каждом из которых от одной до восьми строчных букв; между соседними словами – не менее одного пробела, за последним словом – точка. Напечатать те слова, в которых буквы слова упорядочены по алфавиту.
15. Дана последовательность, содержащая от двух до десяти слов, в каждом из которых от одной до пяти строчных букв; между соседними словами – запятая, за последним словом – точка. Напечатать эту же последовательность слов, но в обратном порядке.
16. В заданный текст входят только цифры и буквы. Определить, является ли текст десятичной, шестнадцатеричной или двоичной записью целого либо вещественного числа (указать при выводе какого).
17. В заданном тексте найти и, если есть, напечатать все слова-палиндромы (слова, которые одинаково читаются слева направо и справа налево).
18. Дан текст из слов, разделенных пробелами, в конце - точка. Найти слово наименьшей длины (содержащее наименьшей количество букв).
19. Разработать программу шифровки – дешифровки текста путем замены каждой буквы текста другой буквой, с кодом на N больше (меньше) исходной.
20. Дана непустая последовательность слов, в каждом на которых от одной до шести букв; между соседними словами – запятая, за последним – точка. Напечатать те слова, у которых одинаковые «соседи». (Определить процедуру, которая вводит очередное слово и присваивает его шестилитерной строке, а запятую или точку присваивает некоторой глобальной переменной).