План лекций по курсу ОП 2008/09 — весенний семестр — различия между версиями

Материал из Вики ИТ мехмата ЮФУ
Перейти к: навигация, поиск
 
(не показаны 2 промежуточные версии этого же участника)
Строка 1: Строка 1:
 
[[Категория:Конспекты]]
 
[[Категория:Конспекты]]
 
== Лекция 1 ( 17.02.09 ) ==
 
== Лекция 1 ( 17.02.09 ) ==
:[[ | Конспект]]
+
:[[Основы программирования — второй семестр 08-09; Михалкович С.С.; I часть | Конспект]]
  
 
<xh4> Файлы </xh4>  
 
<xh4> Файлы </xh4>  
Строка 37: Строка 37:
  
 
==Лекция 2 ( 18.02.09 ) ==
 
==Лекция 2 ( 18.02.09 ) ==
:[[Основы программирования — второй семестр 08-09; Михалкович С.С.; I часть | Конспект]]
+
:[[Основы программирования — второй семестр 08-09; Михалкович С.С.; I часть#Подпрограммы для работы с типизированными файлами | Конспект]]
===Подпрограммы для работы с типизированными файлами===
+
 
 +
'''Подпрограммы для работы с типизированными файлами'''
 
  Truncate
 
  Truncate
 
  FileSize
 
  FileSize
Строка 70: Строка 71:
 
</source>
 
</source>
  
Подпрограммы для работы с текстовыми файлами
+
'''Подпрограммы для работы с текстовыми файлами'''
 
 
 
  Append
 
  Append
 
  Eoln
 
  Eoln
Строка 79: Строка 79:
 
  Readln, Writeln
 
  Readln, Writeln
 
   
 
   
Пример 1. Дан текстовый файл, содержащий целые числа. Найти их сумму.
+
Пример. Обработка строк в текстовых файлах.
  
<source lang="Pascal">
+
== Лекция 3 ( 24.02.09 ) ==
var f: text;
+
:[[Основы программирования — второй семестр 08-09; Михалкович С.С.; II часть | Конспект]]
    s,x: integer;
 
begin
 
  Assign(f,'a.txt');
 
  Reset(f);
 
  s := 0;
 
  while not SeekEof(f) do
 
  begin
 
    read(f,x);
 
    s += x;
 
  end
 
  Close(f);
 
end.  
 
</source>
 
  
Пример 2. Обработка строк в текстовых файлах.
+
<xh4> Указатели </xh4>
  
==Лекция 3 ( 24.02.09 ) ==
 
:[[ | Конспект]]
 
===Указатели===
 
 
Адрес. Переменная-указатель.
 
Адрес. Переменная-указатель.
  
Строка 112: Строка 96:
 
Операция разыменования.
 
Операция разыменования.
  
Указатели и явное приведение типа. Пример: типы pointer, pinteger и preal.
+
Указатели и явное приведение типа. Пример: типы pointer, pinteger и preal. <br />
 
Доступ к памяти, имеющей другое внутреннее представление.
 
Доступ к памяти, имеющей другое внутреннее представление.
  
Динамическая память. Явное выделение динамической памяти.
+
Динамическая память. Явное выделение динамической памяти. <br />
 
Процедуры New и Dispose.
 
Процедуры New и Dispose.
  
Строка 123: Строка 107:
 
* Утечка памяти
 
* Утечка памяти
  
===Классы-начало===
+
Неявные указатели в Pascal
 +
 
 +
<xh4> Классы-начало </xh4>
 
Переменная типа класс как ссылка. Сравнение с записями.
 
Переменная типа класс как ссылка. Сравнение с записями.
  
 
Вызов конструктора и выделение динамической памяти.
 
Вызов конструктора и выделение динамической памяти.
 +
 +
==Лекция 4 ( .09 ) ==
 +
:[[ | Конспект]]
  
 
Шаблоны классов.
 
Шаблоны классов.
Строка 159: Строка 148:
 
Помещение операций по работе со списком внутрь класса
 
Помещение операций по работе со списком внутрь класса
  
==Лекция 4 ( .09 ) ==
 
:[[ | Конспект]]
 
 
==Лекция 5 ( .09 ) ==
 
==Лекция 5 ( .09 ) ==
 
:[[ | Конспект]]
 
:[[ | Конспект]]

Текущая версия на 21:19, 4 мая 2009

Лекция 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;

Ошибки ввода-вывода при работе с файлами

  1. файл открыли, но забыли выполнить Assign
  2. открыли, но файла нет на диске (или нет прав доступа на чтение)
  3. попытка считывания за концом файла

Пример. Ошибка считывания за концом файла.

Оператор 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 )

[[ | Конспект]]