План лекций по курсу ОП 2008/09 — весенний семестр — различия между версиями
Admin (обсуждение | вклад) (→Лекция 1 ( 17.02.09 )) |
Juliet (обсуждение | вклад) |
||
(не показано 11 промежуточных версий 3 участников) | |||
Строка 1: | Строка 1: | ||
− | ==Лекция 1 ( 17.02.09 ) == | + | [[Категория:Конспекты]] |
− | + | == Лекция 1 ( 17.02.09 ) == | |
− | + | :[[Основы программирования — второй семестр 08-09; Михалкович С.С.; I часть | Конспект]] | |
+ | |||
+ | <xh4> Файлы </xh4> | ||
Определение. Преимущества файлов. | Определение. Преимущества файлов. | ||
− | Классификация файлов | + | '''Классификация файлов''' |
− | :по типу компонент (текстовые, двоичные (типизированные,бестиповые)) | + | : по типу компонент (текстовые, двоичные (типизированные,бестиповые)) |
− | :по способу доступа (последовательный, произвольный) | + | : по способу доступа (последовательный, произвольный) |
− | Понятие файловой переменной, файлового указателя | + | |
− | Буферизация в файлах | + | Понятие файловой переменной, файлового указателя. |
− | + | ||
+ | Буферизация в файлах. | ||
+ | |||
+ | '''Подпрограммы для работы с закрытыми файлами''' | ||
procedure '''Rename'''(f, name); | procedure '''Rename'''(f, name); | ||
procedure '''Erase'''(f); | procedure '''Erase'''(f); | ||
Строка 21: | Строка 26: | ||
function '''ExtractFileExt'''(name): string; | function '''ExtractFileExt'''(name): string; | ||
function '''ExtractFilePath'''(name): string; | function '''ExtractFilePath'''(name): string; | ||
− | |||
− | |||
− | |||
− | |||
− | '' | + | '''Ошибки ввода-вывода при работе с файлами''' |
− | + | # файл открыли, но забыли выполнить Assign | |
+ | # открыли, но файла нет на диске (или нет прав доступа на чтение) | ||
+ | # попытка считывания за концом файла | ||
+ | |||
+ | Пример. Ошибка считывания за концом файла. | ||
+ | |||
+ | Оператор '''try..finally'''. | ||
+ | |||
+ | ==Лекция 2 ( 18.02.09 ) == | ||
+ | :[[Основы программирования — второй семестр 08-09; Михалкович С.С.; I часть#Подпрограммы для работы с типизированными файлами | Конспект]] | ||
+ | |||
+ | '''Подпрограммы для работы с типизированными файлами''' | ||
+ | Truncate | ||
+ | FileSize | ||
+ | FilePos | ||
+ | Seek | ||
+ | |||
+ | Варианты использования: | ||
+ | Seek(FileSize(f)) - переместить файловый указатель за конец файла (Eof(f)=True) | ||
+ | Seek(FilePos(f)-1) - вернуться на 1 позицию назад | ||
+ | |||
+ | Пример 1. Добавление 0 в конец файла | ||
+ | |||
+ | Пример 2. Возведение всех элементов файла в квадрат. | ||
+ | |||
+ | Пример 3. Использование в базах данных - перевод Иванова в 10 группу в виде наказания | ||
+ | |||
+ | Пример 4. Сортировка файла | ||
− | + | <source lang="Pascal"> | |
− | + | for var i:=FileSize(f)-1 downto 1 do | |
− | + | for var j:=0 to i-1 do | |
− | + | begin | |
− | + | Seek(f,j); | |
− | + | read(f,x,y); | |
+ | if x>y then | ||
+ | begin | ||
+ | Seek(f,j); | ||
+ | write(f,y,x); | ||
end; | end; | ||
− | + | end; | |
− | + | </source> | |
− | + | ||
+ | '''Подпрограммы для работы с текстовыми файлами''' | ||
+ | Append | ||
+ | Eoln | ||
+ | SeekEof | ||
+ | SeekEoln | ||
+ | Read, Write - особенности | ||
+ | Readln, Writeln | ||
+ | |||
+ | Пример. Обработка строк в текстовых файлах. | ||
+ | |||
+ | == Лекция 3 ( 24.02.09 ) == | ||
+ | :[[Основы программирования — второй семестр 08-09; Михалкович С.С.; II часть | Конспект]] | ||
− | + | <xh4> Указатели </xh4> | |
+ | |||
+ | Адрес. Переменная-указатель. | ||
+ | |||
+ | Для чего нужны указатели? | ||
+ | |||
+ | Типизированные и бестиповые указатели. | ||
+ | |||
+ | Нулевой указатель. | ||
+ | |||
+ | Операция разыменования. | ||
+ | |||
+ | Указатели и явное приведение типа. Пример: типы pointer, pinteger и preal. <br /> | ||
+ | Доступ к памяти, имеющей другое внутреннее представление. | ||
+ | |||
+ | Динамическая память. Явное выделение динамической памяти. <br /> | ||
+ | Процедуры New и Dispose. | ||
+ | |||
+ | Ошибки при работе с динамической памятью | ||
+ | * Использование неинициализированного указателя | ||
+ | * Висячие указатели | ||
+ | * Утечка памяти | ||
+ | |||
+ | Неявные указатели в Pascal | ||
+ | |||
+ | <xh4> Классы-начало </xh4> | ||
+ | Переменная типа класс как ссылка. Сравнение с записями. | ||
− | + | Вызов конструктора и выделение динамической памяти. | |
==Лекция 4 ( .09 ) == | ==Лекция 4 ( .09 ) == | ||
+ | :[[ | Конспект]] | ||
+ | |||
+ | Шаблоны классов. | ||
+ | |||
+ | Решение проблемы освобождения памяти, занимаемой объектами классов: сборка мусора (.NET, Java). | ||
+ | |||
+ | Управляемая динамическая память и ее возврат. Отсутствие утечки памяти. | ||
+ | |||
+ | ===Динамические структуры данных. Списки=== | ||
+ | Виды списков. Рисунки. | ||
+ | |||
+ | ====Односвязные линейные списки==== | ||
+ | Класс узла списка (шаблонный) | ||
+ | |||
+ | Стандартные операции с односвязными линейными списками | ||
+ | * Вставка элемента в начало | ||
+ | * Удаление элемента из начала | ||
+ | * Вставка после текущего | ||
+ | * Удаление после текущего | ||
+ | * Проход по списку | ||
+ | |||
+ | ====Двусвязные линейные списки==== | ||
+ | |||
+ | Стандартные операции с двусвязными линейными списками | ||
+ | * Инициализация | ||
+ | * Добавление в начало, конец | ||
+ | * Удаление из начала, конца | ||
+ | * Вставка элемента перед текущим, после текущего | ||
+ | * Удаление текущего | ||
+ | * Объединение двух списков | ||
+ | |||
+ | Помещение операций по работе со списком внутрь класса | ||
==Лекция 5 ( .09 ) == | ==Лекция 5 ( .09 ) == | ||
+ | :[[ | Конспект]] | ||
+ | ==Лекция 6 ( .09 ) == | ||
+ | :[[ | Конспект]] | ||
+ | ===Рекурсия=== | ||
− | + | Определение рекурсии. | |
+ | |||
+ | Рекурсивные определения. Праворекурсивное и леворекурсивное определения. | ||
+ | |||
+ | Простые примеры использования рекурсии. | ||
+ | |||
+ | Понятие рекурсивного спуска и рекурсивного возврата. Графическое изображение рекурсивного спуска и рекурсивного возврата | ||
+ | |||
+ | Примеры вычисления n!, a^n. | ||
+ | |||
+ | Рекурсия и списки. Операции car и cdr | ||
==Лекция 7 ( .09 ) == | ==Лекция 7 ( .09 ) == | ||
− | + | :[[ | Конспект]] | |
==Лекция 8 ( .09 ) == | ==Лекция 8 ( .09 ) == | ||
− | + | :[[ | Конспект]] | |
==Лекция 9 ( .09 ) == | ==Лекция 9 ( .09 ) == | ||
− | + | :[[ | Конспект]] | |
==Лекция 10 ( .09 ) == | ==Лекция 10 ( .09 ) == | ||
− | + | :[[ | Конспект]] | |
==Лекция 11 ( .09 ) == | ==Лекция 11 ( .09 ) == | ||
− | + | :[[ | Конспект]] | |
==Лекция 12 ( .09 ) == | ==Лекция 12 ( .09 ) == | ||
− | + | :[[ | Конспект]] | |
==Лекция 13 ( .09 ) == | ==Лекция 13 ( .09 ) == | ||
− | + | :[[ | Конспект]] | |
==Лекция 14 ( .09 ) == | ==Лекция 14 ( .09 ) == | ||
− | + | :[[ | Конспект]] | |
==Лекция 15 ( .09 ) == | ==Лекция 15 ( .09 ) == | ||
+ | :[[ | Конспект]] | ||
+ | ==Лекция 16 ( .09 ) == | ||
+ | :[[ | Конспект]] | ||
+ | ==Лекция 17 ( .09 ) == | ||
+ | :[[ | Конспект]] |
Текущая версия на 21:19, 4 мая 2009
Содержание
- 1 Лекция 1 ( 17.02.09 )
- 2 Лекция 2 ( 18.02.09 )
- 3 Лекция 3 ( 24.02.09 )
- 4 Лекция 4 ( .09 )
- 5 Лекция 5 ( .09 )
- 6 Лекция 6 ( .09 )
- 7 Лекция 7 ( .09 )
- 8 Лекция 8 ( .09 )
- 9 Лекция 9 ( .09 )
- 10 Лекция 10 ( .09 )
- 11 Лекция 11 ( .09 )
- 12 Лекция 12 ( .09 )
- 13 Лекция 13 ( .09 )
- 14 Лекция 14 ( .09 )
- 15 Лекция 15 ( .09 )
- 16 Лекция 16 ( .09 )
- 17 Лекция 17 ( .09 )
Лекция 1 ( 17.02.09 )
<xh4> Файлы </xh4> Определение. Преимущества файлов.
Классификация файлов
- по типу компонент (текстовые, двоичные (типизированные,бестиповые))
- по способу доступа (последовательный, произвольный)
Понятие файловой переменной, файлового указателя.
Буферизация в файлах.
Подпрограммы для работы с закрытыми файлами
procedure Rename(f, name); procedure Erase(f); function FileExists(name): boolean; function DeleteFile(name): boolean; function RemoveDir(name): boolean; function GetCurrentDir: string; function SetCurrentDir(name): boolean; function CreateDir(name): boolean; function ExtractFileName(name): string; function ExtractFileExt(name): string; function ExtractFilePath(name): string;
Ошибки ввода-вывода при работе с файлами
- файл открыли, но забыли выполнить Assign
- открыли, но файла нет на диске (или нет прав доступа на чтение)
- попытка считывания за концом файла
Пример. Ошибка считывания за концом файла.
Оператор try..finally.
Лекция 2 ( 18.02.09 )
Подпрограммы для работы с типизированными файлами
Truncate FileSize FilePos Seek
Варианты использования:
Seek(FileSize(f)) - переместить файловый указатель за конец файла (Eof(f)=True) Seek(FilePos(f)-1) - вернуться на 1 позицию назад
Пример 1. Добавление 0 в конец файла
Пример 2. Возведение всех элементов файла в квадрат.
Пример 3. Использование в базах данных - перевод Иванова в 10 группу в виде наказания
Пример 4. Сортировка файла
for var i:=FileSize(f)-1 downto 1 do
for var j:=0 to i-1 do
begin
Seek(f,j);
read(f,x,y);
if x>y then
begin
Seek(f,j);
write(f,y,x);
end;
end;
Подпрограммы для работы с текстовыми файлами
Append Eoln SeekEof SeekEoln Read, Write - особенности Readln, Writeln
Пример. Обработка строк в текстовых файлах.
Лекция 3 ( 24.02.09 )
<xh4> Указатели </xh4>
Адрес. Переменная-указатель.
Для чего нужны указатели?
Типизированные и бестиповые указатели.
Нулевой указатель.
Операция разыменования.
Указатели и явное приведение типа. Пример: типы pointer, pinteger и preal.
Доступ к памяти, имеющей другое внутреннее представление.
Динамическая память. Явное выделение динамической памяти.
Процедуры New и Dispose.
Ошибки при работе с динамической памятью
- Использование неинициализированного указателя
- Висячие указатели
- Утечка памяти
Неявные указатели в Pascal
<xh4> Классы-начало </xh4> Переменная типа класс как ссылка. Сравнение с записями.
Вызов конструктора и выделение динамической памяти.
Лекция 4 ( .09 )
- [[ | Конспект]]
Шаблоны классов.
Решение проблемы освобождения памяти, занимаемой объектами классов: сборка мусора (.NET, Java).
Управляемая динамическая память и ее возврат. Отсутствие утечки памяти.
Динамические структуры данных. Списки
Виды списков. Рисунки.
Односвязные линейные списки
Класс узла списка (шаблонный)
Стандартные операции с односвязными линейными списками
- Вставка элемента в начало
- Удаление элемента из начала
- Вставка после текущего
- Удаление после текущего
- Проход по списку
Двусвязные линейные списки
Стандартные операции с двусвязными линейными списками
- Инициализация
- Добавление в начало, конец
- Удаление из начала, конца
- Вставка элемента перед текущим, после текущего
- Удаление текущего
- Объединение двух списков
Помещение операций по работе со списком внутрь класса
Лекция 5 ( .09 )
- [[ | Конспект]]
Лекция 6 ( .09 )
- [[ | Конспект]]
Рекурсия
Определение рекурсии.
Рекурсивные определения. Праворекурсивное и леворекурсивное определения.
Простые примеры использования рекурсии.
Понятие рекурсивного спуска и рекурсивного возврата. Графическое изображение рекурсивного спуска и рекурсивного возврата
Примеры вычисления n!, a^n.
Рекурсия и списки. Операции car и cdr
Лекция 7 ( .09 )
- [[ | Конспект]]
Лекция 8 ( .09 )
- [[ | Конспект]]
Лекция 9 ( .09 )
- [[ | Конспект]]
Лекция 10 ( .09 )
- [[ | Конспект]]
Лекция 11 ( .09 )
- [[ | Конспект]]
Лекция 12 ( .09 )
- [[ | Конспект]]
Лекция 13 ( .09 )
- [[ | Конспект]]
Лекция 14 ( .09 )
- [[ | Конспект]]
Лекция 15 ( .09 )
- [[ | Конспект]]
Лекция 16 ( .09 )
- [[ | Конспект]]
Лекция 17 ( .09 )
- [[ | Конспект]]