- •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 с параметром
- •Вложенные циклы
- •Взаимозаменяемость циклов различных видов
- •Дополнительные конструкции переходов для циклов
- •«Вечные» циклы
- •Простейшие алгоритмы
- •Вычисление суммы и произведения
- •Организация счетчика
- •Нахождение наибольшего и наименьшего значений
- •Рекуррентные последовательности
- •Итерационные алгоритмы
- •Подпрограммы (процедуры и функции)
- •Понятие подпрограммы, ее описания и вызова
- •Цели введения подпрограмм
- •Способы передачи параметров. Виды параметров
- •Параметры-значения
- •Параметры-переменные
- •Параметры-константы
- •Корректность передачи параметров
- •Досрочное завершение работы программы и подпрограммы
- •Реализация вызова подпрограммы
- •Область действия и время жизни идентификаторов
- •Правила видимости
- •Время жизни идентификаторов
- •Побочный эффект функции
- •Массивы
- •Описание переменных-массивов
- •Обозначение элементов массива
- •Двумерные массивы – матрицы
- •Трехмерные массивы
- •Типизированные константы-массивы
- •Операции над массивами
- •Именная эквивалентность типов
- •Передача массива в качестве параметра
- •Открытые массивы
- •Типичные задачи для одномерных массивов
- •Поиск заданного элемента в массиве
- •Анализ методов поиска по количеству операций сравнения
- •Двумерные массивы – матрицы
- •Трехмерные массивы
- •Сортировки массивов
- •Понятие сортировки
- •Параметры оценки алгоритмов
- •Сортировка простым включением (простыми вставками) Принцип сортировки включением
- •Сортировка простым выбором Принцип сортировки выбором
- •Сортировка простым обменом (метод пузырька) Принцип сортировки обменом
- •Сравнение эффективности базовых методов сортировки
- •Использование индексных массивов при сортировке
- •Рекурсия
- •Что такое рекурсия
- •Рекурсивные подпрограммы
- •Прямая и косвенная рекурсия
- •Предварительное (опережающее) описание подпрограммы
- •Опасности рекурсии
- •Бесконечная рекурсия
- •Итерация и рекурсия. Необоснованное применение рекурсии
- •Глубокая рекурсия
- •Когда использовать рекурсию
- •Формы рекурсивных подпрограмм
- •Примеры рекурсивных программ
- •Ввод последовательности целых чисел, заканчивающейся нулем, вывод в обратном порядке
- •Поиск максимального элемента массива
- •Задача о Ханойских башнях
- •Символьные и строковые типы данных
- •Символьные типы данных
- •Представление символов в памяти компьютера
- •Символьные константы и переменные Неименованные символьные константы
- •Стандартные функции над символами
- •Строковые типы данных
- •Строковые типы. Представление строк в памяти компьютера
- •Стандартные функции и процедуры для строк
- •Выделение слов из строки
-
Задача о Ханойских башнях
Имеется башня из n дисков различного диаметра, нанизанных на один из трех стержней. Требуется построить аналогичную башню на другом стержне с использованием третьего, причем так, чтобы не нарушить два условия:
-
перемещать можно только один диск;
-
ни один из дисков большего диаметра не может быть размещен на диске меньшего диаметра.
Трудолюбивые буддийские монахи день и ночь переносят диски со стержня на стержень. Легенда утверждает, что когда монахи закончат свою работу, наступит конец света. Для решения задачи с 64 дисками потребуется (264 – 1) перемещений. Поэтому конец света по легенде произойдет по истечении более 5 миллиардов веков, если считать, что один диск перемещается за одну секунду. Задачу и легенду для неё придумал в 1883 г. французский математик Э. Люка.
program HanoiTowers;
{Перемещение дисков со стержня А на стержень С, стержень В - вспомогательный}
var N : integer; {число дисков}
procedure Move(n:byte; Source, Dest, Tmp : char);
{n - число дисков на исходном стержне Source;
Dest - стержень, на который надо переставить диски;
Tmp - вспомогательный стержень}
begin
if n=1 then writeln(n:11, Source:6, Dest:9)
else begin
Move(n-1, Source, Tmp, Dest);
writeln(n:11, Source:6, Dest:9);
Move(n-1, Tmp, Dest, Source)
end
end;
begin
write('Число дисков=');
readln(N);
writeln('Номер диска Откуда --> Куда');
Move(N, 'A', 'C', 'B')
end.
-
Символьные и строковые типы данных
Текстовые данные представляют собой отдельные символы (буквы, цифры, знаки арифметических операций, знаки препинания и т.д.) и строки символов. Для описания текстовых данных предназначены соответственно символьные и строковые типы данных.
-
Символьные типы данных
-
Представление символов в памяти компьютера
-
В классическом языке Pascal – единственный символьный тип, обозначаемый char. В Delphi существуют два символьных типа: AnsiChar и WideChar. Кроме того, для совместимости с языком Pascal поддерживается тип char, который в настоящее время соответствует типу AnsiChar.
В памяти компьютера символы хранятся в виде кодов – целых чисел. Соответствие символов и кодов задается различными кодовыми таблицами, в которых для каждого символа указывается соответствующий код.
В системах программирования на языке Delphi используются две кодовые таблицы:
-
Расширенная кодовая таблица ANSI (American National Standards Institute – Американский национальный институт стандартов), в которой каждый символ кодируется восьмиразрядным двоичным числом (байтом); эта таблица используется для кодирования значений типа AnsiChar и char.
-
Кодовая таблица Unicode, где каждый символ кодируется двумя байтами (причем первые 256 символов совпадают с символами ANSI); эта таблица кодирует значения типа WideChar.
Чтобы узнать, сколько байт в конкретной системе программирования занимает в памяти один символ, достаточно вызвать функцию sizeof(имя типа).
Определение размера памяти, отведенной для переменной
var c : char; a : AnsiChar; w : WideChar;
begin
writeln('sizeof(c)=', sizeof(c)); //имя переменной
writeln('sizeof(char)=', sizeof(char)); //имя типа
writeln('sizeof(a)=', sizeof(a));
writeln('sizeof(AnsiChar)=', sizeof(AnsiChar));
writeln('sizeof(w)=', sizeof(w));
writeln('sizeof(WideChar)=‘, sizeof(WideChar))
end.
Расширенная кодовая таблица ANSI состоит из двух половин.
Первая половина (коды от 0 до 127):
-
коды цифр,
-
буквы латинского алфавита (строчные и прописные),
-
знаки препинания,
-
управляющие символы.
Цифры
0= 48 1= 49 2= 50 3= 51 4= 52 5= 53 6= 54 7= 55 8= 56 9= 57
Латинские прописные буквы
A=65 B=66 C=67 D=68 E=69 F=70 G=71 H=72 I=73 J=74
K=75 L=76 M=77 N=78 O=79 P=80 Q=81 R=82 S=83 T=84
U=85 V=86 W=87 X=88 Y=89 Z=90
Латинские строчные буквы
a= 97 b= 98 c= 99 d=100 e=101 f=102 g=103 h=104 i=105 j=106
k=107 l=108 m=109 n=110 o=111 p=112 q=113 r=114 s=115 t=116
u=117 v=118 w=119 x=120 y=121 z=122
Вторая половина (коды от 128 до 255) используется для символов национального алфавита. В России она содержит русские буквы (кириллицу).
Русские прописные буквы
А=192 Б=193 В=194 Г=195 Д=196 Е=197 Ж=198 З=199 И=200 Й=201
К=202 Л=203 М=204 Н=205 О=206 П=207 Р=208 С=209 Т=210 У=211
Ф=212 Х=213 Ц=214 Ч=215 Ш=216 Щ=217 Ъ=218 Ы=219 Ь=220 Э=221 Ю=222 Я=223
Русские строчные буквы
а=224 б=225 в=226 г=227 д=228 е=229 ж=230 з=231 и=232 й=233
к=234 л=235 м=236 н=237 о=238 п=239 р=240 с=241 т=242 у=243
ф=244 х=245 ц=246 ч=247 ш=248 щ=249 ъ=250 ы=251 ь=252
э=253 ю=254 я=255