- •Учебно-методический комплекс дисциплины «Информатика» Календарно-тематический план.
- •2. Тезисы лекций Тема 1. Понятие алгоритма, свойства, типы, исполнители
- •Тема 2. Система программирования TurboPascal. Исполняемые операторы. Словарь языка. Структура программы.
- •Имена, ключевые слова и знаки операций
- •Тема 3. Предопределенные типы переменных (простые), стандартные функции
- •Операции и выражения
- •Тема 4. Операторы Ввода-вывода Оператор вывода writeln
- •Тема 5. Операторы условий, выбора и безусловного перехода
- •Тема 6. Операторы циклов
- •Тема 7. Символьные типы данных. Обработка символьных данных.
- •Тема 8. Массивы
- •8.1. Одномерные массивы
- •8.2. Двумерные массивы (матрицы)
- •Обращение к компонентам массива
- •Тема 9. Строки. Строковые процедуры.
- •Неименованные константы
- •Действия с символами
- •Тема 10. Процедуры и функции Подпрограммы
- •Объявление и описание
- •Возвращаемые значения
- •Вызов подпрограмм
- •Параметр-константа
- •Функции
- •Параметр-значение
- •Тема 11. Множества (Set)
- •Тема 12. Файлы. Файловые переменные.
- •Разновидности файлов
- •Работа с текстовыми файлами
- •Тема 13. Записи
- •Описание записей
- •Задание записей константой
- •Доступ к полям
- •Оперирование несколькими полями
- •Вложенные операторы with
- •Запись с вариантной частью
- •Описание записи с вариантной частью
- •Тема 14. Построение изображений на экране Система координат
- •Управление текущим указателем
- •Отображение точки на экране
- •Отображение линий на экране
- •Построение прямоугольников на экране
- •Построение многоугольников
- •Построение дуг, эллипсов и окружностей
- •Тематика и краткое описание лабораторных и студийных работ
- •2. Связь функция-клавиатура в интегрированной среде Turbo Pascal
- •3. Команды экранного редактора:
- •3.1 Команды перемещения курсора
- •3.2 Команды вставки/удаления
- •3.3 Команды работы с блоками
- •4. Технология компиляции
- •5. Технология отладки программы
- •6. Программирование линейных алгоритмов
- •Лабораторная работа 2 программирование разветвляющихся вычислительных процессов
- •Краткие сведения из теории
- •Составить блок-схему и программу алгоритмов нахождения функции с выбором по расчетной формуле.
- •Лабораторная работа 3 программирование циклов с параметром
- •Краткие сведения из теории
- •П р о г р а м м а
- •П р о г р а м м а
- •Лабораторная работа 4
- •Лабораторная работа 5 программирование циклов с условием
- •Краткие сведения из теории
- •П р о г р а м м а
- •П р о г р а м м а
- •Лабораторная работа 6
- •Краткие сведения из теории
- •П р о г р а м м а
- •П р о г р а м м а
- •Лабораторная работа 7 работа с матрицами
- •Краткие сведения из теории
- •П р о г р а м м а
- •П р о г р а м м а
- •Лабораторная работа 8 обработка символьных строк
- •Краткие сведения из теории
- •П р о г р а м м а
- •П р о г р а м м а
- •Лабораторная работа 9 записи. Файлы
- •Краткие сведения из теории
- •Лабораторная работа 10 процедуры
- •Краткие сведения из теории
- •П р о г р а м м а
- •Лабораторная работа 11 функции
- •Краткие сведения из теории
- •П р о г р а м м а
- •П р о г р а м м а
- •Порядок работы
- •Содержание отчета
- •Лабораторная работа 12 графические средства паскаля
- •Краткие сведения из теории
- •Порядок работы
- •Лабораторная работа №14 Динамические структуры данных. Организация данных в списковые структуры
- •Кратное содержание теории
- •Краткое описание семинарских и практических занятий (планы, задания для проведения семинарских и практических занятий, срсп, срс)
- •Тема 1. Структура программы на паскале. Заголовок программы. Блок. Типы данных, их классификация. Переменные и константы. Синтаксис выражений. Порядок работы
- •Содержание отчета
- •Тема 2 конструкция операторов разветвления Порядок работы
- •Содержание отчета
- •Тема 3. Конструкция операторов цикла Порядок работы
- •Содержание отчета
- •Тема 4. Конструкция циклов с предусловием и постусловием Порядок работы
- •Содержание отчета
- •Тема 6. Составные типы данных. Создание одномерных массивов и стандартных процедур. Порядок работы
- •Содержание отчета
- •Тема 7. Создание двумерных массивов и стандартных процедур Порядок работы
- •Содержание отчета
- •Тема 8. Методы работы со строками и отдельными символами Порядок работы
- •Содержание отчета
- •Тема 9. Задачи классической комбинаторики. Записи и файлы. Порядок работы
- •Содержание отчета
- •Тема 10. Процедуры и функции Порядок работы
- •Содержание отчета
- •Тема 13. Динамические переменные. Структуры данных
- •5. Задания для самопроверки и подготовки к экзамену, в том числе тесты
- •5.1 Вопросы для самоконтроля по данному модулю/разделу (коллоквиума);
- •5.2. Контрольные работы по данному модулю/разделу;
- •Тема «Строки»
- •Тема «Множества»
- •6. Учебно-методические материалы по дисциплине
- •6.1.Список рекомендуемой литературы Основная литература
- •Дополнительная литература
Действия с символами
Строку почти всегда можно рассматривать как массив символов, то есть обращаться из программы к отдельным символам строки: s1[1], s2[1], txt[1][10] (в последнем случае имеется в виду десятый символ первой строки). Нумерация символов в строке всегда начинается с 1. Однако присваивание отдельным элементам строки конкретных символьных значений может не привести к желаемому результату. Чтобы понять, почему это иногда происходит, необходимо рассмотреть принципы организации строковых переменных в памяти компьютера. Дело в том, что для хранения любой строки отводится ровно на 1 байт больше, чем указано при ее описании (256 байт для строк, размерность которых не указана явно). Причем этот вспомогательный байт располагается в самом начале строки, фактически это ее нулевой байт. В нем хранится текущая реальная длина строки. Собственно говоря, такой механизм и накладывает максимальные ограничения на возможную длину строк в языке Паскаль, так как максимальное число, представимое в одном байте, равно 255. Значение этого байта автоматически изменяется программой при выполнении стандартных операций над строками: считывании, присваивании строковой переменной строкового выражения, обращении к стандартным процедурам и функциям, работающим со строковыми выражениями. Рассмотрим на примере, как меняется содержимое памяти и реальное значение строки при выполнении тех или иных операций:
Операция |
Содержимое памяти, выделенной строковой переменной s |
Значение s | |||||||
var s: string[6]; |
s[0] |
s[1] |
s[2] |
s[3] |
s[4] |
s[5] |
s[6] |
| |
s:=‘ ‘; |
0 |
|
|
|
|
|
|
‘ ‘ | |
s:=‘Yes’; |
3 |
Y |
e |
s |
|
|
|
‘Yes’ | |
s[4]:=‘!’; |
3 |
Y |
e |
s |
! |
|
|
‘Yes’ | |
s:=s+’No’; |
5 |
Y |
e |
s |
N |
o |
|
‘YesNo’ | |
s[4]:=‘!’; |
5 |
Y |
e |
s |
! |
o |
|
‘Yes!o’ |
На этом примере можно понять, что операция присваивания значения элементу строки, индекс которого превосходит текущую длину строки, не является корректной и фактически не оказывает влияния на результат. Поэтому применения подобных конструкций при программировании следует избегать, стараясь обходить стандартными операциями над строками. Рассмотрим их подробнее.
В отличие от массивов, над строковыми переменными определены операции считывания и печати. К строкам применима операция сложения. При сложении двух строк концу первой из них приписывается вторая (по-другому эту операцию называют конкатенацией строк).
Над строками между собой производится согласно так называемому лексикографическому порядку. Строка s1 считается меньше строки s2, если существует такая позиция k, что s1[1..k-1] = s2[1..k-1] и s1[k]<s2[k] или такой позиции не существует, но строка s1 короче строки s2. При операциях сравнения идет сравнение строк, начиная с левого края до первого несовпадающего символа. Например:
Пример. Покажем переменные, выражающие результат от строки ‘институт’.
В программе можно обратиться также и к определенному символу строки:
Строковые процедуры
Delete(st,poz,n) – удаление из строки st n символов, начиная с позиции poz.
Insert(st1,st2,poz) – вставка строки st1 в строку st2, начиная с позиции poz.
str(a,st) – преобразовывает число или переменную типа integer, byte, real в строку и помещает результат в переменную st.
val(‘17425’,x,cod) – преобразовывает переменную st строкового типа в переменную типа integer, byte, real.
Если преобразование не может быть выполнено, то в переменную cod записывается номер символа строки, который является причиной неудачи преобразования. Если преобразование выполнено успешно, то значение cod=0.
Строковые функции
1. Copy(st,poz,n) – из строки st выделяется n символов, начиная с позиции poz.
2. Concat(st1,st2,…,stN) – дает новую строку, состоящую с st1 до stN строк, соединенных («сцепленных») в одну, для выполнения той же функции можно использовать знак «+».
3. Length(st) – длина строки st.
4. Pos(st1,st2) – обнаруживает первое появление в st2 подстроки st1.
5. UpCase(Ch) – преобразовывает строчную латинскую букву в прописную.