- •35 Жегуло а.И. Компьютерные науки 2010-2011 гг. Компьютерные науки Лекции для студентов 1 курса, 2010-2011 уч. Г., семестр 1
- •1. Основные понятия 3
- •2. Введение в язык программирования Pascal 3
- •7. Массивы 16
- •8. Сортировки массивов 22
- •9. Рекурсия 25
- •1. Символьные и строковые типы данных 31
- •Основные понятия
- •Способы описания алгоритма:
- •Введение в язык программирования Pascal
- •Структура программы на языке Pascal
- •Правила записи программ
- •Стиль программирования
- •Переменные и константы. Понятие типа данных
- •Классификация типов данных
- •Стандартные простые типы данных
- •Целые типы
- •Вещественные типы
- •Логические (булевские) типы
- •Перечисляемые типы
- •Интервальные типы
- •Порядковые типы
- •Описание данных
- •Описание переменных
- •Описание констант
- •Описание типизированных констант
- •Выражения
- •Операции отношения
- •Приоритеты операций
- •Арифметические выражения
- •Логические выражения
- •Операторы
- •Оператор присваивания
- •Оператор ввода с клавиатуры
- •Оператор вывода на экран монитора
- •Форматный вывод
- •Условный оператор (оператор альтернативы)
- •Составной оператор
- •Оператор выбора
- •Оператор цикла с предусловием while
- •Оператор цикла с постусловием repeat
- •Оператор цикла for с параметром
- •Вложенные циклы
- •Взаимозаменяемость циклов различных видов
- •Дополнительные конструкции переходов для циклов
- •«Вечные» циклы
- •Простейшие алгоритмы
- •Вычисление суммы и произведения
- •Организация счетчика
- •Нахождение наибольшего и наименьшего значений
- •Рекуррентные последовательности
- •Итерационные алгоритмы
- •Подпрограммы (процедуры и функции)
- •Понятие подпрограммы, ее описания и вызова
- •Цели введения подпрограмм
- •Способы передачи параметров. Виды параметров
- •Параметры-значения
- •Параметры-переменные
- •Параметры-константы
- •Корректность передачи параметров
- •Досрочное завершение работы программы и подпрограммы
- •Реализация вызова подпрограммы
- •Область действия и время жизни идентификаторов
- •Правила видимости
- •Время жизни идентификаторов
- •Побочный эффект функции
- •Массивы
- •Описание переменных-массивов
- •Обозначение элементов массива
- •Двумерные массивы – матрицы
- •Трехмерные массивы
- •Типизированные константы-массивы
- •Операции над массивами
- •Именная эквивалентность типов
- •Передача массива в качестве параметра
- •Открытые массивы
- •Типичные задачи для одномерных массивов
- •Поиск заданного элемента в массиве
- •Анализ методов поиска по количеству операций сравнения
- •Двумерные массивы – матрицы
- •Трехмерные массивы
- •Сортировки массивов
- •Понятие сортировки
- •Параметры оценки алгоритмов
- •Сортировка простым включением (простыми вставками) Принцип сортировки включением
- •Сортировка простым выбором Принцип сортировки выбором
- •Сортировка простым обменом (метод пузырька) Принцип сортировки обменом
- •Сравнение эффективности базовых методов сортировки
- •Использование индексных массивов при сортировке
- •Рекурсия
- •Что такое рекурсия
- •Рекурсивные подпрограммы
- •Прямая и косвенная рекурсия
- •Предварительное (опережающее) описание подпрограммы
- •Опасности рекурсии
- •Бесконечная рекурсия
- •Итерация и рекурсия. Необоснованное применение рекурсии
- •Глубокая рекурсия
- •Когда использовать рекурсию
- •Формы рекурсивных подпрограмм
- •Примеры рекурсивных программ
- •Ввод последовательности целых чисел, заканчивающейся нулем, вывод в обратном порядке
- •Поиск максимального элемента массива
- •Задача о Ханойских башнях
- •Символьные и строковые типы данных
- •Символьные типы данных
- •Представление символов в памяти компьютера
- •Символьные константы и переменные Неименованные символьные константы
- •Стандартные функции над символами
- •Строковые типы данных
- •Строковые типы. Представление строк в памяти компьютера
- •Стандартные функции и процедуры для строк
- •Выделение слов из строки
-
Символьные константы и переменные Неименованные символьные константы
Изображение символа (литера) – это символ, заключенный в апострофы, например: 'A', 'q', '+', '7'.
Апостроф изображается двумя апострофами, заключенными в апострофы: ''''.
Если символ не имеет графического представления, он изображается решеткой # и кодом, например, «перевод строки» изображается #10. Любой символ тоже можно так изобразить, например, прописная латинская буква ’A’ имеет код 65, поэтому ’A’ и #65 – это одно и то же.
Именованные символьные константы
Символьную константу можно обозначить именем и задать в разделе констант, например:
Const ch='A'; blank=#32; {пробел}
Типизированные символьные константы
Фактически это переменные, получающие указанное при описании значение в начале работы программы, например: Const oper:char='+'; Далее в программе ей можно присвоить новое значение: oper:=’*’;
Символьные переменные
Объявление символьных переменных: var s, ch1, ch2 : char;
-
Операции над символами
-
конкатенация (сцепление), обозначаемая знаком +, т.е. добавление второго символа после первого; в результате получается строка из двух символов. Например, «сложив» символы ’5’+’5’, получим строку ’55’, при сложении чисел 5+5 получим число 10.
-
операции отношения = <> < <= > >= сравнивают символы по их кодам.
Тип char является порядковым типом, символы упорядочены в соответствии с их кодами в кодовой таблице, поэтому 'A'<'B'; 'A'<’a’; '0'<’1’; '+'<'' и.т.д.
-
Стандартные функции над символами
-
function Ord(ch)– для символа ch функция возвращает его код. Например, Ord(’A’) возвращает число 65.
-
function Chr(b) – для кода b функция возвращает соответствующий символ. Например, Chr(65) возвращает символ 'A’. Ord(Chr(65)) возвращает число 65. Chr(Ord(’A’)) возвращает символ ’A’.
-
function Pred(ch) – возвращает символ, предшествующий символу ch. Например, Pred(’B’) возвращает символ ’A’. То же самое можно получить путем вызова Chr(Ord(ch)-1).
-
function Succ(ch) – возвращает символ, следующий за символом ch. Например, Succ(’A’) возвращает символ ’B’. То же самое можно получить путем вызова Chr(Ord(ch)+1).
-
function UpCase(ch) – преобразует строчную латинскую букву в прописную, прочие символы, не принадлежащие диапазону ’a’..’z’, функция возвращает без изменения.
-
Строковые типы данных
-
Строковые типы. Представление строк в памяти компьютера
-
В Delphi имеются следующие строковые типы:
-
Короткая строка ShortString. Каждый символ имеет тип char. В памяти такой строке выделяется 255 байт для символов строки плюс нулевой по счету байт, который содержит текущую длину строки – символ, код которого равен количеству символов в строке. Текущая длина устанавливается автоматически при объявлении строковой переменной, при присваивании и при вводе в нее.
-
Длинная строка AnsiString. Каждый символ имеет тип AnsiChar. Максимальная длина строки около 231 символов. Память для строки выделяется в виде динамического массива.
-
Строки String, которые могут совпадать либо с ShortString (если задана директива компиляции {$Н-}), либо с AnsiString (если задана директива компиляции {$Н+}).
-
Широкая строка WideString. Каждый символ – типа WideChar, который кодируется двумя байтами. Максимальная длина строки около 230 символов. Память выделяется в виде динамического массива.
-
Заканчивающаяся нулем строка Pchar, т.е. строка, в конце которой стоит символ #0. Такие строки не имеют указателя длины строки.
-
Строковые константы и переменные
Неименованные строковые константы
Изображение строки – это последовательность заключенных в апострофы символов, например: 'Turbo Delphi' пустая строка изображается двумя апострофами: '', апостроф внутри строки изображается двумя апострофами: ’I don''t know Object Pascal'
Именованные строковые константы
const TD='Turbo Delphi'; Empty=’’;
Типизированные строковые константы
const S: ShortString ='Turbo Delphi';
Фактически S – это переменная типа ShortString, которой в начале работы программы будет присвоено значение.
Строковые переменные
Переменные строкового типа можно объявить:
-
без объявления типа, например: var FIO: string[50]; {тип переменной FIO – анонимный, т.е. безымянный тип string[50]}
-
с предварительным объявлением типа, например: type str50=string[50]; {тип по имени str50 строк с максимальной длиной 50 символов} var FIO:str50;
Переменная FIO может содержать от 0 до 50 символов.
Присваивание строке
Присваивание пустой строки: S:='';
Если строковой переменной присваивается строка, в которой символов больше, чем указано в объявлении этой переменной, то лишние символы отбрасываются.
Двойственность строк
Строковые типы обладают свойствами как простых, так и структурированных типов:
-
Как значения простых типов строки можно вводить и выводить целиком, присваивать одной строке другую строку, объединять строки операцией конкатенации.
-
Как и для структурированных типов, в строках возможен доступ к каждому элементу строки, например, S[i]
-
Операции над строками
-
конкатенация (сцепление), обозначаемая знаком + Результатом операции будет строка, состоящая из символов первого операнда, вслед за которыми записаны символы второго операнда. В операции могут участвовать и символы. Например: 'Turbo’ + ’ ’ + ’Delphi'
-
операции отношения = < <= > >= <> Операции отношения выполняются над строками посимвольно слева направо согласно кодам символов кодовой таблицы. Выполнение заканчивается на первой паре символов с различными кодами, либо на последней паре. Например, ’abcde’ < ’abfe’ (т.к. код ’c’ < кода ’f’); ’abc’ > ’ab’ (строка больше своего начала).