- •Общие сведения об эвм
- •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. Рекомендации по оформлению текста программ
- •Библиографический список
- •Оглавление
22.2.2. Очередь fifo
Для очередей типа FIFO вводят понятия начального ("головы") и последнего ("хвоста") элемента. Добавляемые элементы помещаются в "хвост" очереди, а выборка осуществляется с «головы». Таким образом, для создания этой очереди и выборки из нее нужно иметь указатели на начало, конец и текущий элемент.
Общий алгоритм формирования работы с такой очередью может быть таким же, как для LIFO.
1. Задать начальный элемент очереди.
2. Пока Информационный_элемент не равен ’*’ выполнить
Ввести очередной Информационный_элемент и
Поместить его в очередь.
3. Вывести Элементы очереди.
4. Закончить.
Уточненный алгоритм можно получить, приняв во внимание способ формирования и выборки из очереди типа FIFO, описанный выше.
1.1. Указатель_из_первого_элемента (головы) = Nil.
1.2. Ввести Информационный_элемент.
2. Пока Информационный_элемент не равен ’*’ выполнить
2.1. Выделить память для Текущего_элемента (Tp).
2.2. Задать Информационный_элемент.
2.3. Записать в «хвост» очереди Nil.
2.4. Если Элемент_очереди – первый (головной), то
Запомнить его адрес (Fp)
Иначе
Связать Текущий_элемент с «хвостом» очереди.
2.5. Передвинуть «хвост» очереди (Lp) на один элемент.
2.6. Ввести Информационный_элемент_очереди.
3.1. Указатель_Текущего_элемента = Указатель_Первого_элемента очереди.
3.2. Пока Указатель_Текущего_элемента не Nil выполнить
3.2.1. Вывести Текущий_информационный_элемент;
3.2.2. Перейти к следующему Элементу_очереди.
4. Закончить.
Соответствующая программа будет иметь вид
Program Fifo;
Type
Ptr = ^El;
El = Record
Buk : Char;
Sl : Ptr;
End;
Var
Fp,Lp,Tp : Ptr; {Указатели на первый, последний и текущий элемент}
C : Char;
Begin
{Формирование очереди}
Fp := Nil; { Очередь пустая}
Writeln (’Введите элемент очереди’);
Readln(C);
While C <> ’*’ do
Begin
New(Tp); {Выделение памяти для очередного элемента}
Tp^.Buk := C; {Заполнение информационного поля}
Tp^.Sl := Nil; {Очередной элемент – последний в очереди}
If Fp = Nil then {Если в очереди только один элемент}
Fp := Tp {Указатель на "голову" очереди}
Else
Lp^.Sl := Tp; {Ссылка из предпоследнего элемента на последний}
Lp := Tp; {Указатель на "хвост" очереди}
Writeln (’Введите элемент очереди’);
Readln(C);
End;
{ Просмотр очереди с "головы" }
Tp := Fp; {Tекущий указатель теперь указывает на первый элемент}
WriteLn(’Вот такая очередь:’);
While Tp <> Nil do
Begin
Write(Tp^.Buk:2); { Вывод информационного поля элемента }
Tp := Tp^.Sl; { Переход к следующему элементу }
End;
WriteLn;
Writeln(’Конец работы. Нажмите ENTER’);
Readln;
End.
На рис. 2.19 показана соответствующая тексту этой программы последовательность создания очередиFIFO на примере двух элементов.
23. Стандартные модули Турбо Паскаля
Библиотека Турбо Паскаля содержит большое количество стандартных процедур, функций, констант, типов и переменных, которые разделены на связанные группы, называемые стандартными модулями. Они хранятся в файле Turbo.tpl. Каждый из модулей содержит описания констант, типов, переменных, процедур и функций, необходимых для реализации функционального назначения модуля. Наиболее распространенными являются следующие модули.
1. System – содержит все стандартные функции и процедуры Турбо Паскаля (математические, тригонометрические, обработки строк, процедуры Read и Write и т.д.). Присоединяется ко всем программам автоматически при их загрузке и выполнении.
2. Printer – связывает программу с устройством печати, используется совместно с модулем Crt.
3. Crt – позволяет максимально использовать возможности клавиатуры, экрана и звукового генератора.
4. Dos – обеспечивает связь программы с MS DOS.
5. Graph – позволяет использовать графические возможности компьютера.
Для обеспечения возможности работы программы с любым модулем необходимо после заголовка указать его имя в предложении Uses. В общем виде это предложение записывается так:
Uses
Список_имен_модулей;
Пример. Uses
Crt, Dos, Graph;