- •Первый семестр
- •Дальнейшее обучение программированию (по семестрам)
- •Рекомендуемая литература
- •I семестр Лекция 1
- •1.1 Алгоритм. Понятие алгоритма
- •1.2 Алгоритмические языки
- •1.3 Запись алгоритма
- •1.4 Элементарные структуры
- •Лекция 2
- •2.1. Договоренности о синтаксисе
- •2.2. Текст программы на Turbo Pascal
- •2.3 Элементарные операции
- •2.4. Таблица перевода для структур
- •Алгоритм:
- •Текст программы
- •2.5 Практические рекомендации по решению задач
- •3.2. Частные случаи для структуры цикла
- •3.3 Массивы
- •Лекция 4
- •4.0 Требования к защите бальных задач
- •4.1 Начало систематического изложения Turbo Pascal (tp)
- •Лекция 5
- •5.1 Простые типы данных
- •5.1.1 Перечислимый тип
- •5.1.2 Интервальный тип
- •5.1.3 Целочисленные типы
- •5.1.4 Данные типа char
- •5.1.6 Вещественные типы данных
- •Лекция 6
- •6.1 Структура программы на Паскале
- •6.2 Процедуры для стандартного ввода/вывода
- •6.3 Массивы. Регулярный тип
- •6.4 Для работы с массивами – шаблоны
- •Лекция 7
- •7.1 Строки
- •7.2 Записи
- •Лекция 8
- •8.1 Множества
- •8.2 Файлы
- •8.3 Процедуры открытия и закрытия файлов:
- •8.4 Процедуры ввода/вывода:
- •Лекция 9
- •9.1 Текстовые файлы.
- •9.2 Проект программы:
- •9.3 Простейший сканер.
- •9.4 Копия любого файла
- •Лекция 10
- •10.1 Процедуры и функции
- •10.2 Передача параметров в процедуры и функции
- •10.3 Глобальные переменные. Перекрытие (экранирование)
- •10.4 Процедурные типы
- •10.6 Рекурсия. Косвенная рекурсия
- •Лекция 11
- •11.1 Статическая и динамическая память программы
- •11.2 Динамическая память (куча, heap) с точки зрения тр
- •11.3 Операции над указателями
- •11.4 Пояснения с помощью картинки
- •11.5 Динамическая цепочка
- •Лекция 12
- •12.1 Цикл жизни программы. Проект программы
- •12.2 Характеристики качества программ
- •12.3 Программное окружение
- •12.4 Модули
- •Пример Печать данного перечислимого типа. Вот простой пример модуля (пусть имя файла с представленным ниже текстом My_Unit.Pas):
- •12.5 Обзор модуля System
- •12.5.1 Процедуры и функции, обслуживающие файловую систему
- •Лекция 13
- •13.1 Модуль crt - средства работы с экраном, клавиатурой и др.
- •13.2 Обзор примеров программ
- •13.3 Процедуры и функции модуля Crt
- •Лекция 14
- •14.1 Модуль dos - работа с файловой системой.
- •14.1.1 Прерывания.
- •14.1.2 Процедуры и функции модуля Dos
- •Лекция 15
- •15.1 Модуль Graph.
- •15.1.1 Общие сведения:
13.3 Процедуры и функции модуля Crt
Функции
KeyPressed - Возвращает True, если на клавиатуре была нажата клавиша, и False в противном случае.
ReadKey - Читает символ с клавиатуры.
WhereX - Возвращает Х координату текущей позиции курсора относительно текущего окна. Х - горизонтальная позиция.
WhereY - Возвращает Y координату текущей позиции курсора относительно текущего окна. Y - вертикальная позиция.
Процедуры
AssignCrt - Назначает текстовый файл на экран.
ClrEol - Удаляет все символы от текущей позиции курсора до конца строки без передвижения курсора.
ClrScr - Очищает экран и помещает курсор в верхний левый угол.
Delay - Задержка на указанное число миллисекунд.
DelLine - Удаляет строку на которой находится курсор и перемещает все строки ниже этой строки на строку вверх. Нижняя строка очищается.
GotoXY - Позиционирует курсор. Х - горизонтальная позиция и Y - вертикальная позиция.
HighVideo - Устанавливает высокую интенсивность символов.
InsLine - Вставляет пустую строку в позиции курсора.
LowVideo - Устанавливает низкую интенсивность символов.
NormVideo - Устанавливает нормальную интенсивность символов.
NoSound - Выключает внутренний громкоговоритель.
Sound - Включает внутренний громкоговоритель.
TextBackground - Устанавливает цвет фона.
TextColor - Устанавливает цвет символов.
TextMode - Устанавливает текстовый режим.
Window - Определяет текстовое окно на экране.
Лекция 14
14.1 Модуль dos - работа с файловой системой.
Модуль Dos реализует ряд очень полезных программ операционной системы и обработки файлов. Ни одна из программ модуля Dos не определена стандартом Паскаля и поэтому они размещены в собственном модуле
DiskFree(d:word):longint; - свободных байт на диске d (0-тек, 1-a:, ...)
DiskSize(d:word):longint; - полный объем.
Переменная DosError:integer;
0 |
нет ошибки |
2 |
файл не найден |
3 |
путь не найден |
5 |
доступ запрещен |
6 |
неверный обработчик |
8 |
нет памяти |
10 |
неправильная среда |
11 |
неправильный формат |
18 |
больше нет файлов |
FindFirst(path:string; attrib:byte; var s:SearchRec);
FindNext(var s:SearchRec);
type SearchRec=record
Fill:array[1..21]of byte;
Attr:byte;
Time:longint;
Size:longint;
Name:string[12]
end;
const
ReadOnly=$01;
Hidden=$02;
SysFile=$04;
VolumeId=$08;
Directory=$10;
Arhive=$20;
AnyFile=$3F;
GetAttr(var F; var Attr:byte) - Возвращает атрибут файла
SetAttr (var F; var Attr:byte) - Устанавливает атрибут файла
14.1.1 Прерывания.
Примитивы ввода-вывода и других системных операций BIOS и DOS.
Схема: регистры - прерывание - регистры.
Registers=record
case integer of
0:(AX,BX,CX,DX,BP,SI,DI,DS,ES,Flag:word);
1:(AL,AH,BL,BH,CL,CH,DL,DH:byte);
end;
Intr(nom:byte; var R:Registers);
MsDos(var R:Registers); - прерывание номер $21 DOS.
Пример: прерывание $10(BIOS) - обмен данными с дисплеем
Функц. |
Исходные данные |
Результат |
8 |
AH=8; BH=0 - страница дисплея; |
(AL) - символ в тек поз курс;(AH) - атрибут |
9 |
AH=9; BH=0 - страница дисплея; (BL) - атрибут символа; (CX) - счетчик; (AL) - символ; |
Помещает в текущую позицию курсора (СХ) штук символов (AL) с атрибутом (BL) |
10 |
AH=10; BH=0 - страница дисплея; (CX) - счетчик; (AL) - символ; |
Помещает в текущую позицию курсора (СХ) штук символов (AL) с текущим атрибутом |
$11 |
чтение конфигурации системы |
$13 |
обмен данными с диском |
$20 - $3F |
прерывания DOS. |
$21 |
функции DOS. |
$25 |
абсолютное чтение с диска. |
$26 |
абсолютная запись на диск. |
$27 |
завершение программы с сохранением ее в памяти (резидентная программа). |
{Ex_07_10}
program Txt;
uses Crt,Dos;
var R:registers; i,j,k :integer;
begin
ClrScr;
GotoXY(20,10);
R.AH:=10; R.BH:=0;
R.CL:=255; R.CH:=0;
R.AL:=ord('A');
Intr(16,R);
readln
end.
procedure PutTxtImege(x1,y1,x2,y2:integer; var p:pointer);
var R:registers; i,j,k :integer; pr:^byte;
begin
GetMem(p,(x2-x1+1)*(y2-y1+1)*2);
k := 0;
for i:=x1 to x2 do
for j:=y1 to y2 do
begin
GotoXY(i,j);
R.AH:=8; R.BH:=0;
Intr(16,R);
pr:=ptr(seg(p^),ofs(p^) + k);
pr^:=R.AL;
pr:=ptr(seg(p^),ofs(pr^)+1);
pr^:=R.AH;
k := k + 2;
end;
end;
procedure GetTxtImege(x1,y1,x2,y2:integer;
var p:pointer);
var R:registers; i,j,k :integer; pr:^byte;
begin
k := 0;
for i:=x1 to x2 do
for j:=y1 to y2 do
begin
GotoXY(i,j);
R.AH:=9; R.BH:=0;
R.CL:=1; R.CH:=0;
pr:=ptr(seg(p^),ofs(p^) + k);
R.AL:=pr^;
pr:=ptr(seg(p^),ofs(pr^)+1);
R.BL:=pr^;
Intr(16,R);
k := k + 2;
end;
FreeMem(p,(x2-x1+1)*(y2-y1+1)*2);
end;