- •Оглавление
- •Глава 1. Алгоритмический язык Турбо-Паскаль 3
- •Глава 2. Программирование в среде Турбо - Паскаль 112
- •Глава 1. Алгоритмический язык Турбо-Паскаль
- •1. 1. Общие сведения
- •1. 2. Среда Турбо-Паскаль
- •1. 3. Структура языка Турбо-Паскаль
- •1. 4. Типы переменных
- •Практическое задание n 1. 1
- •1. 5. Структура программы
- •1. 6. Операции и стандартные функции
- •1. 7. Операторы Турбо-Паскаля
- •Составной оператор Begin "операторы" end;
- •1. 7. 1. Операторы ввода/вывода данных
- •Операторы вывода данных на экран Write("сп"); или Writeln("сп");
- •Практическое задание n 1. 2
- •Практическое задание n 1. 3
- •1. 7. 2. Оператор выбора
- •0..9: Writeln('однозначное');
- •1. 7. 3. Условный оператор
- •If "условие" Then "оператор1" Else "оператор2";
- •Практическое задание n 1. 5
- •Практическое задание n 1. 6
- •Практическое задание n 1. 7
- •Практическое задание n 1. 8
- •1. 7. 4. Оператор цикла с параметром
- •Практическое задание n 1. 9
- •Практическое задание n 1. 10
- •Практическое задание n 1. 11
- •Практическое задание n 1. 12
- •Практическое задание n 1. 13
- •Практическое задание n 1. 14
- •1. 7. 5. Операторы цикла с условием
- •Практическое задание n 1. 15
- •Практическое задание n 1. 16
- •1. 7. 6. Операторы ограничения и прерывания цикла
- •1. 7. 7. Оператор перехода к метке
- •1. 8. Блок - схемы алгоритмов
- •1. 9. Составление диалоговых программ
- •Практическое задание n 1. 17
- •1. 10. 1. Линейные массивы
- •Практическое задание n 1. 18
- •Практическое задание n 1. 19
- •Практическое задание n 1. 20
- •Практическое задание n 1. 21
- •1. 10. 2. Работа с элементами переменной строкового типа
- •Практическое задание n 1. 22
- •1. 10. 3. Двумерные массивы
- •2 S[2] Массив a: a[2, 1] a[2, 2] a[2, 3] a[2, 4] . . . A[2, j] . . . A[2, m]
- •Практическое задание n 1. 23
- •1. 10. 4. Создание баз данных с использованием массивов записей
- •Практическое задание n 1. 23
- •1. 10. 5. Работа с большими массивами
- •Практическое задание n 1. 25
- •1. 11. Текстовые файлы
- •Практическое задание n 1. 26
- •Практическое задание n 1. 27
- •1. 12. Разработка функций и процедур
- •1. 12. 1. Описание функций и процедур
- •Viz(Dat); { вызов процедуры } Readln end.
- •Практическое задание n 1. 28
- •Практическое задание n 1. 29
- •Практическое задание n 1. 30
- •1. 12. 2. Рекурсивные функции и процедуры
- •Практическое задание n 1. 31
- •Практическое задание n 1. 32
- •1. 13. Разработка модулей
- •Практическое задание n 1. 33
- •1. 14. Модуль сrt
- •1. 14. 1. Управление экраном в текстовом режиме
- •InsLine; Вставка пустой строки.
- •1. 14. 2. Управление клавиатурой
- •Практическое задание n 1. 34
- •Практическое задание n 1. 35
- •Практическое задание n 1. 36
- •Практическое задание n 1. 37
- •1. 14. 3. Работа с символьными переменными
- •Практическое задание n 1. 38
- •Практическое задание n 1. 39
- •Практическое задание n 1. 40
- •Практическое задание n 1. 41
- •Практическое задание n 1. 42
- •1. 14. 4. Работа со строковыми переменными
- •Практическое задание n 1. 43
- •1. 14. 5. Управление звуковыми сигналами
- •Практическое задание n 1. 44
- •Практическое задание n 1. 45
- •1. 15. Модуль Graph
- •1. 15. 1. Инициализация графического режима
- •1. 15. 2. Простейшие графические процедуры и функции
- •Практическое задание n 1. 46
- •Практическое задание n 1. 47
- •Практическое задание n 1. 48
- •Практическое задание n 1. 49
- •Практическое задание n 1. 50
- •Практическое задание n 1. 51
- •Практическое задание n 1. 52
- •Практическое задание n 1. 53
- •1. 15. 3. Рисование геометрических фигур
- •1. 15. 3. 1. Построение заполненных фигур
- •Практическое задание n 1. 54
- •1. 15. 3. 2. Работа с линиями
- •Практическое задание n 1. 55
- •Практическое задание n 1. 55
- •Практическое задание n 1. 56
- •1. 15. 3. 3 Создание графических узоров
- •1. Перемещение фигуры.
- •Практическое задание n 1. 56
- •2. Масштабирование фигуры.
- •Практическое задание n 1. 57
- •3. Симметричное отображение фигуры.
- •Практическое задание n 1. 58
- •4. Штриховка углов.
- •Практическое задание n 1. 59
- •5. Использование рекурсии.
- •Практическое задание n. 1. 60
- •Практическое задание n . 1. 61
- •6. Создание узоров построением зеркальных отображений фигуры.
- •Практическое задание n 1. 61
- •1. 15. 3. 4. Работа с текстом в графическом режиме
- •Практическое задание n 1. 62
- •1. 15. 5. Мультипликация
- •1. 15. 5. 1. Мультипликация с запоминанием части экрана
- •Практическое задание n 1. 63
- •1. 15. 5. 2. Мультипликация с чередованием видеостраниц
- •Практическое задание n 1. 64
- •1. 15. 5. 3. Мультипликация с управлением движения образа
- •Практическое задание n 1. 65
- •1. 15. 5. 4. Модификация контурного изображения
- •Практическое задание n 1. 66
- •Глава 2. Программирование в среде Турбо-Паскаль
- •2. 1. Геометрические построения на плоскости
- •2. 1. 1. Построение графиков функций
- •Практическое задание n 2. 1
- •Var right, left, down, up: integer; k_xy, kx, ky, x_max, x_min, y_max, y_min: double; { описание глобальных переменных }
- •Практическое задание n 2. 2
- •Практическое задание n 2. 3
- •Практическое задание n 2. 4
- •Практическое задание n 2. 5
- •12 Строфоида a*Cos(2*fi)/Cos(fi) 0,1 ... 1,5 -3 -2 1 -
- •13 Циссоида a*Sin2(fi)/Cos(fi) 0,1 ... 1,5 -1 1 2 -
- •2. 1. 2. Графическое решение уравнений
- •Практическое задание n 2. 6
- •2. 1. 3. Уравнение прямой на плоскости
- •Практическое задание n 2. 7
- •2. 1. 4. Построение касательных и нормалей к плоским кривым
- •Практическое задание n 2. 8
- •2. 1. 5. Двумерные преобразования координат
- •Практическое задание n 2. 9
- •2. 1. 6. Проецирование пространственного изображения тела на плоскость
- •Практическое задание n 2. 10
- •2. 2. Некоторые задачи физики
- •2. 2. 1. Механика
- •Практическое задание n 2. 11
- •Y V xПрактическое задание n 2. 12
- •Практическое задание n 2. 13
- •Практическое задание n 2. 14
- •Практическое задание n 2. 15
- •Практическое задание n 2. 16
- •Практическое задание n 2. 17 X
- •Практическое задание n 2. 18 y
- •2. 2. 2. Оптика и свет
- •Практическое задание n 2. 19
- •Практическое задание n 2. 20
- •2. 2. 3. Электростатика и электромагнетизм
- •Практическое задание n 2. 21
- •2. 3. Математическое моделирование физических процессов
- •Практическое задание n 2. 22
- •Практическое задание n 2. 23
- •Практическое задание n 2. 24
- •Практическое задание n 2. 25
- •Практическое задание n 2. 26
- •2. 4. Моделирование многовариантных задач с использованием графов
- •Практическое задание n 2. 27
- •2. 5. Программы математических расчетов
- •2. 5. 1. Численное решение уравнений
- •Практическое задание n 2. 28
- •Практическое задание n 2. 29
- •2. 5. 2. Аппроксимация по методу наименьших квадратов
- •Практическое задание n 2. 30
- •2. 5. 3. Численный расчет интегралов
- •Практическое задание n 2. 31
- •Практическое задание n 2. 32
- •2. 5. 4. Сортировка одномерных массивов
- •Практическое задание n 2. 33
- •Практическое задание n 2. 34
- •Список литературы
Практическое задание n 1. 35
1. Создать на экране несколько рядов разворачивающихся по горизонтали. либо по вертикали окон разного цвета с надписями.
2. Вывести на экране несколько рядов карточек со случайными номерами цветов, в различных диапазонах для каждого ряда. В центре экрана вывести окно с сообщением о количестве рядов с одинаковым цветом карточек.
70
Приведем пример операторов для построения орнаментов.
Для построения орнаментов в текстовом режиме удобно использовать массив N1xN2 значений из нулей и единиц, записанных в файле.
Например, при N1=3, N2=5, можно записать в текстовом редакторе файл 0 0 1 0 0
со значениями: 0 1 0 1 0
1 1 1 1 1
В программе следует открыть файл с орнаментом и считать значения в массив, например:
for i:= 1 to N1 do begin for j:= 1 to N2 do read( f, a[ i, j ] ); readln( f ) end;
где f - файловая переменная, a[i, j] - элемент массива N1xN2.
Орнамент можно разместить в окне, например, операторами:
Window(x1, y1, x1+N2, y1+N1); TextBackGround(Green); ClrScr;
for i:= 1 to N1 do
for j:= 1 to N2 do if a[i,j] <> 0 then begin GotoXY(j,i); write(#219) end;
Приведем примеры операторов, позволяющих строить в текстовом режиме горизонтальные и вертикальные гистограммы. Пусть требуется построить N значений функции Y=Sin(x); на интервале от 0 до Pi.
1) Определим дискретные значения "х" и "Y".
for i:= 0 to N do begin x[i]:= Pi*i/N; Y[i]:=Sin(x[i]) end;
2) Определим наибольшее значение функции "Y": Y_max:=1; и размеры окна:
xm:= lo(WindMax)+1; ym:= hi(WindMax)+1;
3) Определим коэффициенты масштабирования по осям X и Y:
km_x:= (xm-5)/Y_max; km_y:= (ym-5)/Y_max;
4) Для построения вертикальной гистограммы
можно использовать операторы:
for i:=0 to N do begin Yg:=round(km_y*Y[i]); { графические значения Y[i]}
for j:=1 to Yg do begin GotoXY(i, ym-j); { переход на новую строку }
write (#219) { рисуем вертикальный столбик }
end end;
5) Для построения горизонтальной гистограммы
можно использовать операторы:
for i:=0 to N do begin Yg:=round(km_x*Y[i]); { графические значения Y[i]}
GotoXY(1, i+1); { переход на новую строку }
for j:=1 to Yg do write (#220) { рисуем горизонтальный столбик}
end;
Практическое задание n 1. 36
1. Создать на экране несколько рядов окон с чередованием двух орнаментов.
2. Построить горизонтальную, либо вертикальную гистограммы столбиками разного цвета для 20-ти значений функций: Y= |Sin(x)|*x; либо Y= Sin(x)+x; в диапазоне "x" от 0 до 2*Pi, с выводом значений "x" и "Y".
71
Приведем пример программы поиска цели в лабиринте - перемещение символа по экрану с анализом содержания ячеек вокруг текущей позиции. Строится прямоугольник с преградами в котором случайным образом задаются координаты цели и "десантника", ищущего цель. Алгоритм поиска построен на анализе значений ячеек вокруг "десантника", при этом значение "десантника" k=1, и проверяется значение восьми окружающих ячеек. Как только обнаруживается ячейка со значением меньшим k, то "десантник" перемещается в эту ячейку, иначе k увеличивается и цикл проверок повторяется. Ячейка, из которой вышел “десантник”, помечается цифрой со значением параметра k. Наибольшее число проверок k=8.
Начальные значения пустых ячеек равны нулю, прямоугольника и преград - десяти.
Uses crt;
Label Metka;
Const NM=25; { число преград в лабиринте }
Var a: array[1..100, 1..50] of word; { массив ячеек }
NN, MM, N, M, N1, M1, i, j, k, l, i1, j1: word;
BEGIN textmode(258); TextColor(1); Randomize;
N:= lo(WindMax)+1; M:= hi(WindMax); {размеры лабиринта}
NN:=Random(N)+1; MM:=Random(M)+1; { длина преграды по X и по Y}
for i:=2 to N-1 do for j:=2 to M-1 do a[i,j]:=0; {обнуление массива}
for i:=1 to N do begin a[i,1]:=10; a[i,M]:=10; {границы лабиринта}
GotoXY(i, 1); write(#219);
GotoXY(i, M); write(#219); end;
for j:=1 to M do begin a[1, j]:=10; a[N, j]:=10; Д
GotoXY(1, j); write(#219);
GotoXY(N, j); write(#219); end;
for l:=1 to NM do begin {преграды в лабиринте} Ц
i:=random(N-2)+2; j:=random(M-2)+2;
i1:=i+random(NN)+1; j1:=j+random(MM)+1;
repeat a[ i, j ]:=10; GotoXY(i,j); write(#219); i:= i+1 until ( i>=N) or ( i>i1);
repeat a[ i, j ]:=10; GotoXY(i,j); write(#219); j:= j+1 until ( j>=M) or ( j>j1);
end;
i:=random(N)+1; j:=random(M)+1; a[i,j]:=11; {координаты цели}
TextColor(14); GotoXY(i, j); write('Ц');
i:=random(N-2)+2; j:=random(M-2)+2; a[i,j]:=1; {координаты десантника}
TextColor(5); GotoXY(i, j); write('Д'); delay(1000);
repeat
for i1:= i-1 to i+1 do for j1:= j-1 to j+1 do {поиск цели}
if a[i1,j1]= 11 then begin TextColor(14); GotoXY(1,M+1);
Write('Цель обнаружена'); readln; Halt end;
for k:=1 to 8 do begin {цикл до 8-ми проверок вокруг текущей позиции}
a[i,j]:=k; GotoXY(i,j); write(k); {отмечаем текущую позицию}
for i1:= i-1 to i+1 do for j1:= j-1 to j+1 do {поиск выхода}
if a[i1,j1]< k then begin i:=i1; j:=j1; GOTO Metka end;
end;
TextColor(14); GotoXY(1, M+1); Write('ТУПИК'); readln; Halt;
Metka: GotoXY(i, j); Write('Д'); delay(10)
until keypressed;
END.