- •Общие сведения об эвм
- •1. Общая функциональная схема эвм
- •2. Языки программирования
- •3. Этапы решения задач на эвм
- •4. Понятие алгоритма и его свойства
- •5. Графическое описание алгоритмов. Схемы алгоритмов
- •Блоки для изображения схем алгоритмов и программ
- •6. Типы алгоритмов
- •7. Ос эвм. Понятие о файловой системе
- •Имя.Расширение
- •8. Команды ms dos
- •Программирование на языке Паскаль
- •1. Структура программы на языке паскаль
- •2. Описание данных
- •2.1. Константы
- •2.2. Переменные
- •3. Комментарии
- •4. Операторы языка паскаль
- •5. Операторы обработки данных
- •5.1. Операторы ввода
- •5.2. Операторы вывода
- •5.3. Вычисление по формулам. Оператор присваивания
- •6. Линейные программы
- •7. Управляющие операторы
- •7.1. Разветвляющиеся алгоритмы. Оператор if (если)
- •7.2. Пример разветвляющейся программы
- •7.3. Оператор case
- •8. Циклические алгоритмы и программы
- •8.1. Общая схема цикла
- •8.2. Циклы со счетчиком
- •8.3. Итерационные циклы
- •8.3.1. Оператор цикла с пост-условием
- •8.3.2. Оператор цикла с пред-условием
- •Описание данных
- •9. Типы данных, используемых в паскале
- •9.1. Представление данных в эвм
- •9.2. Стандартные функции Паскаля и Турбо Паскаля
- •9.3. Булевские переменные и выражения
- •9.4. Функции для работы с символами
- •Функции языка Паскаль
- •9.5. Массивы
- •10. Примеры программ обработки массивов
- •11. Особенности алгоритмов и программ с накапливанием
- •12. Алгоритм нахождения минимума и максимума
- •13. Задача сортировки
- •14. Обработка многомерных массивов
- •15. Программы обработки строк символов (текстов)
- •15.1. Простейшие алгоритмы и программы обработки строк
- •15.2. Анализ символов в строке
- •16. Типовые программы обработки строк
- •16.1. Выделение слов из текста (слова разделены одним пробелом)
- •16.2. Выделение слов из текста (слова разделены несколькими пробелами)
- •16.3. Некоторые типовые алгоритмы и программы обработки массивов строк (слов из текстов)
- •17. Алгоритмы поиска
- •17.1. Алгоритм линейного поиска
- •17.2. Алгоритм дихотомического поиска
- •Процедуры, функции и модули в паскале
- •18.1. Процедуры
- •18.1.1. Пример программы с процедурой
- •18.1.2. Расположение процедур в программе
- •18.2. Функции
- •18.2.1. Пример программы с функцией
- •18.3. Внешние процедуры и функции
- •18.3.1. Модули пользователей
- •19. Итерационные циклы
- •19.1. Приближенное вычисление функций
- •19.2. Решение уравнений приближенными методами
- •19.2.1. Метод деления отрезка пополам
- •19.2.2. Метод Ньютона
- •19.2.3. Метод прохождения отрезка с переменным шагом
- •19.3. Вычисление определенных интегралов
- •19.3.1. Метод прямоугольников
- •19.3.2. Метод трапеций
- •20. Дополнительные сведения о ТипАх данных, применяемЫх в Паскале
- •20.1. Перечисляемый тип
- •20.2. Интервальный тип
- •20.3. Множества
- •20.3.1. Примеры программ с использованием множеств
- •Алгоритм
- •20.4. Записи
- •20.4.1. Примеры программ обработки записей
- •Алгоритм
- •Оператор_1;
- •21. Файлы и наборы данных
- •Assign(имя_файла, имя_нд);
- •21.1. Текстовые файлы
- •21.1.1. Создание текстового файла
- •21.1.2. Работа с существующим текстовым файлом
- •21.2. Типизированные файлы
- •21.2.1. Последовательная обработка типизированных файлов
- •21.2.2. Использование прямого доступа к записям типизированного файла
- •21.2.3. Упорядочение записей в файле
- •Алгоритм
- •21.2.4. Удаление записей из файла
- •21.2.5. Вставка записей в файл
- •22. Динамическое распределение памяти. Указатели и списки
- •22.1. Использование указателей. Списки
- •22.2. Очереди
- •22.2.1. Очередь типа lifo
- •22.2.2. Очередь fifo
- •23. Стандартные модули Турбо Паскаля
- •23.1. Модуль Crt
- •23.1.1. Работа с клавиатурой и звуком
- •23.1.2. Управление цветом
- •23.1.3. Создание окон и позиционирование курсора
- •23.1.4. Построение графика в текстовом режиме
- •23.1.5. Алгоритм и программа представления меню средствами Турбо Паскаля
- •23.2. Модуль dos
- •23.3. Модуль Graph
- •23.3.1. Инициирование графического режима
- •1) Процедура InitGraph(Var grDr,grMd:integer;path:string);
- •23.3.2. Вывод точек на экран
- •23.3.3. Вывод текста (надписей) в графическом режиме
- •1) SetTextStyle(Шрифт, Направление:Word; Размер:1..10);
- •23.3.4. Построение графических изображений
- •1) SetLineStyle(Тип_линии, Образец, Толщина : Word);
- •23.3.5. Запоминание и вывод изображений
- •24. Рекомендации по оформлению текста программ
- •Библиографический список
- •Оглавление
23.3.2. Вывод точек на экран
В графическом режиме имеется возможность задавать цвет изображения и фона (из палитры). Для этой цели используются следующие процедуры.
1) Установка цвета фона
SetBkColor(Цвет:Word); { Цвет из палитры }
2) Цвет рисунка устанавливается процедурой
SetColor (Цвет:Word);
Цвет – номер цвета из палитры (от 0 до 15). Палитра устанавливается при инициировании графического режима. Ее можно изменять с помощью процедуры SetAllPalette. Можно заменить один цвет в палитре на другой с помощью процедуры SetPalette.
3) Очистка экрана перед выводом изображения осуществляется с помощью процедуры ClearDevice.
Вызов пары процедур: SetBkColor(Цвет);
ClearDevice;
окрасит весь экран заданным цветом.
4) Количество цветов в палитре позволяет определить функция GetMaxColor.
5) Вывод на экран отдельных точек обеспечивает процедура
PutPixel(x,y,цвет:Word).
Здесь (x,y) – координаты точки, а цвет – ее цвет (из палитры).
В графическом режиме используется своя система координат. Координаты задаются не в символах, а в точках экрана (пикселях, Pixel).
6) Для перемещения курсора (чаще называемого текущим указателем – CP, Current Pointer) по экрану используется процедура:
MoveTo(X,Y : integer);
Курсор помещается в точку с координатами (X,Y). Эта процедура аналогична процедуре GotoXY для текстового режима, но в графическом режиме курсор на экране невидим. Максимальные значения координат экрана X и Y (см. рис. 2.21) можно определить с помощью не имеющих аргументов функций:
GetMaxX и GetMaxY,
Пример.Xmax := GetMaxX;
Рассмотрим пример программы с использованием описанных выше процедур.
Задача. Составить программу "Звездное небо", которая выводит на экран разноцветные точки в случайных местах. В программе для задания координат и цвета будем использовать генератор случайных чисел Random. Диапазон случайных чисел определяется функциями GetMaxX, GetMaxY и GetMaxColor соответственно. Программа будет иметь вид, приводимый ниже.
Program Plot_Stars;
Uses
Crt, Graph;
Var
Er, GDr, Gmode : Integer;
X, Y : Integer;
Color :Integer;
Begin
{ Параметры графического режима }
Gdr := Vga;
Gmode := VgaLo;
InitGraph(Gdr,GMode,’’);
Er := GraphResult;
If Er = GrOk then
Begin
Randomize; {Инициализация генератора случайных чисел}
SetBkColor(Black);
ClearDevice;
Repeat
Color := Random(GetMaxColor)+1;
X := Random(GetMaxX);
Y := Random(GetMaxY);
PutPixel(x,y, Color);
Delay(10);
Until Keypressed;
CloseGraph;
End
Else
begin
Writeln(’Ошибка графики: ’,Er,’. ’,GraphErrorMsg(Er));
Writeln(’ Нажмите любую клавишу...’);
Repeat Until KeyPressed;
end
End.
23.3.3. Вывод текста (надписей) в графическом режиме
В графическом режиме предоставляется значительно больше (по сравнению с текстовым режимом) возможностей для вывода текста. Можно выбрать шрифт, его размер, ориентацию символов, способ выравнивания текста и т.п. К сожалению, кириллица допустима не во всех стандартно поставляемых шрифтах.
Для вывода текста в графическом режиме используются следующие процедуры.
1) SetTextStyle(Шрифт, Направление:Word; Размер:1..10);
- задает шрифт и размер букв.
Шрифт задается либо предопределенной константой, либо ее значением:
-
Имя константы
Значение
Характеристика
DefaultFont
0
растровый, матрица 8*8
TriplexFont
1
векторный, с засечками
SmallFont
2
векторный, мелкий
SansSerifFont
3
векторный, без засечек
GothicFont
4
векторный, готический
Направление задается следующим образом:
HorizDir = 0 – вывод текста слева направо (горизонтальная надпись),
VertDir = 1 – вывод текста снизу вверх (вертикальная надпись).
Размер определяет коэффициент увеличения символа. Для шрифта DefaultFont размер, равный 1, определяет исходную матрицу для представления символов (8х8 точек). Размер 2 приведет к выводу на экран образа символа, созданного на матрице 8х8, в область размером 16х16 точек и т.д. При больших размерах символы шрифта DefaultFont сильно искажаются, а качество векторных шрифтов остается приемлемым.
Пример. SetTextStyle (1,0,1); Установлен шрифт TriplexFont с размером символов 8х8 точек и горизонтальным направлением вывода.
2) OutТext(строка); – процедура; осуществляет вывод строки от текущего положения курсора выбранным процедурой SetTextStyle шрифтом.
3) OutTextXY(X,Y,строка); – процедура; осуществляет вывод строки от точки с координатами (X,Y) шрифтом, заданным процедурой SetTextStyle.
Пример. SetTextStyle (1,0,1);
OutTextXY(GetmaxX Div 2, GetmaxY div 2, ’Graphic’);
В результате выполнения этих процедур будет выведено слово Graphic в середине экрана.
Для вывода чисел в графическом режиме (например, максимального значения координаты х – Xmax) необходимо преобразовать их в строку с помощью процедуры
Str(Число, Строка);
в которой входной параметр Число является выражением целого или вещественного типа, а выходной параметр Строка – его строковым представлением. Например, следующий фрагмент программы обеспечивает вывод на экран, начиная от точки с координатами (80,50), значения Xmax.
Xmax := GetmaxX;
Str(Xmax,StrX);
OutTextXY(80,50,’Xmax=’+StrX);
Текущие параметры, влияющие на вид выводимого текста: шрифт, его размер, направление и выравнивание, можно узнать с помощью процедуры GetTextSettings.