- •Общие сведения об эвм
- •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.1. Модуль Crt
Этот модуль облегчает работу с клавиатурой и экраном, позволяет создавать окна, задавать цвет текста и фона для цветного дисплея. Содержит около 20 процедур и функций. В зависимости от типа дисплея и драйвера (программы, обеспечивающей связь компьютера с дисплеем) поддерживает до 16 цветовых текстовых режимов.
Замечание. При исполнении на компьютерах с процессорами последних разработок модуль Crt работает некорректно, выдавая ошибку: 200 Division by zero. В Интернете можно найти комплект программ, исправляющих этот недостаток. Такой комплект CrtDevice можно переписать в лаборатории кафедры вычислительной техники.
Рассмотрим наиболее часто употребляемые процедуры и функции модуля.
23.1.1. Работа с клавиатурой и звуком
1) ReadKey - функция, возвращающая символ нажатой клавиши без вывода его на экран. Тип результата – Char. Аргумента у функции нет. Специальные клавиши на клавиатуре (функциональные F1 – F12, управления курсором, Alt, Ctrl и т.д.) генерируют расширенные коды. При нажатии такой клавиши функция ReadKey возвращает сначала нулевой, а затем - расширенный код клавиши.
Пример. S := ReadKey;
Приводимый ниже фрагмент программы показывает, как можно применить функцию для организации итерационных циклов.
Repeat
. . .
Writeln(’Продолжаем?- Да/Нет (Д/Н)’);
S := ReadKey;
Until (S=’H’) OR (S=’н’) ;
2) KeyPressed -функция без аргумента, возвращает значение True (истина), если клавиша нажата, и False (ложь) в противном случае. Символ, соответствующий нажатой клавише, остается в буфере клавиатуры. Функция не распознает клавиш перевода регистра (Shift, Alt, NumLock и т.д.). Может использоваться для организации итерационных циклов следующего вида
Repeat
- - - - -
Until KeyPressed;
Цикл заканчивается, если нажата любая клавиша. Например, текст программы может завершаться следующим фрагментом:
WriteLn(’Работа окончена. Нажмите любую клавишу ...’);
Repeat Until KeyPressed;
End.
3) Delay(задержка : word); – процедура, которая выполняет задержку на число миллисекунд, задаваемых параметром задержка.
4) Sound(частота : word); – процедура, которая включает внутренний излучатель звука, который будет издавать звуковой сигнал с частотой, заданной параметром частота.
5) NoSound выключает внутренний излучатель звука.
Внимание! Звуковой сигнал, включенный процедурой Sound, будет звучать до тех пор, пока его не выключить обращением к процедуре NoSound.
Если в программе часто используются звуковые эффекты, то целесообразно написать процедуру, которая обеспечит излучение звука заданной частоты в течение заданного промежутка времени. Эта процедура может быть такой.
Procedure Zvuk(freq, long : word);
Begin
Sound(freq);
Delay(long);
NoSound;
End; { Zvuk }
23.1.2. Управление цветом
Если используется цветной графический дисплей с адаптером EGA (Enhansed Graphic Adapter), VGA (Video Graphic Array) и др., то можно задавать и изменять цвет текста и фона с помощью следующих процедур:
1) TextBackGround (Color:Byte); – задает цвет фона.
2) TextColor(Color:Byte); – задает цвет текста.
Параметр Color (цвет) может задаваться выражением целого типа, которое должно принимать значения в диапазоне 0..15, или одной из определенных в модуле Crt констант цветов (название цвета на английском языке). Константы для фонового и основного цвета и их значения приведены ниже:
-
Black = 0 (черный)
DarkGray = 8 (темно-серый)
Blue = 1 (синий)
LightBlue = 9 (светло-синий)
Green = 2 (зеленый)
LightGreen = 10 (светло-зеленый)
Cyan = 3 (бирюзовый)
LightCyan = 11 (светло-голубой)
Red = 4 (красный)
LightRed = 12 (розовый)
Magenta = 5 (малиновый)
LightMagenta = 13 (светло-малиновый)
Brown = 6 (коричневый)
Yellow = 14 (желтый)
LightGray = 7 (светло-серый)
White = 15 (белый)
Цвет текста может быть любой, а цвет фона – один из восьми первых.
Вместо того чтобы устанавливать раздельно цвет текста и цвет фона указанными выше процедурами, можно воспользоваться определенной в модуле Crt переменной TextAttr, длиной в байт. Ей можно присвоить значение, которое сразу определит текстовые атрибуты. Младшие 4 бита у этой переменной кодируют цвет текста (0..15), следующие 3 бита – цвет фона (0..7), а самый старший (левый) бит позволяет сделать текст мерцающим. Константа мерцания имеет имя Blink, а значение – 128.Для размещения цвета фона в правильных позициях битов, его значение нужно умножить на 16. Например, следующее присваивание:
TextAttr := Yellow + Blue*16 + Blink
Обеспечит вывод желтых мерцающих символов на голубом фоне.
3) TextMode (Mode:Integer); – процедура; задает указанный текстовый режим (mode). Приведем некоторые определенные в модуле Crt константы (слева) для выбора текстовых режимов и их значения (справа):
BW80 = 2;– черно-белый режим с разрешением экрана 80х25 символов;
C80 = 3; – цветной режим с разрешением экрана 80х25 символов;
Font8*8 = 256; – цветной режим с разрешением экрана 80х50 символов;
Более подробное описание этих и других режимов для соответствующих адаптеров можно найти в справочниках.
Предыдущий цветовой режим сохраняется в памяти в переменной LastМode.