- •Предисловие
- •Основы программирования
- •Понятие алгоритма.
- •Алгоритм Евклида.
- •Задача о поездах и мухе
- •Вместо лирического отступления
- •Этапы подготовки задачи для решения на компьютере
- •Примеры разработки алгоритмов
- •Решение квадратного уравнения.
- •Вычисление интегралов
- •Обработка результатов эксперимента
- •Решение системы линейных алгебраических уравнений
- •Введение в язык программирования Pascal
- •Основные элементы языка
- •Переменные. Стандартные типы.
- •Операции отношения
- •Раздел описаний переменных
- •Выражения. Порядок выполнения операций.
- •Константы
- •Комментарии в программе
- •Операторы
- •2.1.7.1. Оператор присваивания
- •2.1.7.2. Операторы ввода/вывода
- •2.1.7.3. Операторы инкремента и декремента
- •Среда разработки Lazarus
- •Русский язык в консольных приложениях
- •Первая программа
- •Открытие существующего проекта
- •Другие способы создания консольных приложений
- •Типовой пустой проект
- •Операции с целыми числами
- •Вместо лирического отступления 2
- •Стандартные функции с целыми аргументами
- •Операции с вещественными числами (тип real).
- •Форматирование вывода
- •Одновременное использование вещественных и целых чисел.
- •Другие стандартные функции с вещественными аргументами
- •Булевы переменные
- •Условные операторы.
- •2.1.22.1 Оператор if …. then
- •2.1.22.2. Оператор if …then ... else
- •Операторы цикла
- •2.1.23.1. Оператор цикла с предусловием
- •2.1.23.2. Оператор цикла с постусловием
- •2.1.23.3. Оператор цикла с параметром.
- •2.1.23.4. Второй вариант оператора цикла с параметром
- •Оператор выбора case
- •Организация простейшего контроля ввода данных.
- •Вычисление сумм сходящихся рядов
- •Реализация некоторых алгоритмов главы 1.
- •Программа решения задачи о поездах и мухе
- •Программа вычисления определенного интеграла
- •Более сложные элементы языка
- •Общая структура Паскаль – программы
- •Процедуры и функции
- •3.1.1.1 Структура процедуры
- •3.1.1.2. Структура функции
- •3.1.1.3 Глобальные и локальные переменные
- •3.1.1.4 Способы передачи параметров
- •3.1.1.5 Процедуры завершения
- •Еще раз о типах данных
- •Классификация типов данных
- •3.2.1.1 Целый тип
- •3.2.1.2. Интервальный тип
- •3.2.1.3. Перечислимый тип
- •3.2.1.4. Множества
- •3.2.1.5. Логический тип
- •3.2.1.6. Вещественный тип
- •3.2.1.7. Указатели
- •Обработка символьной информации в Паскале
- •Символьные и строковые типы данных.
- •3.3.1.1. Тип Char
- •3.3.1.2. Функции для работы с символами
- •3.3.1.3. Тип String
- •3.3.1.4. Строковые процедуры и функции
- •Массивы
- •Динамические массивы
- •Программа решения системы линейных алгебраических уравнений методом Гаусса
- •3.4.1.1. Вариант 1 – с goto
- •3.4.1.2. Вариант 2 – без goto
- •3.4.1.3. Вариант 3 – наилучшая реализация
- •Модули в Паскале
- •Структура модуля
- •Системные модули
- •3.5.2.1. Модуль CRT
- •Файлы
- •Тип данных – запись
- •Файловые типы
- •Процедуры для работы с файлами
- •3.6.3.1. Общие процедуры для работы с файлами всех типов
- •3.6.3.2. Процедуры для работы с текстовыми файлами
- •3.6.3.3. Процедуры для работы с типизированными файлами
- •3.6.3.4. Процедуры для работы с нетипизированными файлами
- •3.6.3.5. Организация контроля ввода/вывода при работе файлами
- •3.6.3.6. Создание простой базы данных с типизированными файлами.
- •Алгоритмы сортировки
- •Обменная сортировка (метод "пузырька")
- •Сортировка выбором
- •Сортировка вставками
- •Метод быстрой сортировки
- •Алгоритмы поиска
- •Поиск в массивах
- •Вставка и удаление элементов в упорядоченном массиве
- •Динамические структуры данных
- •Представление в памяти компьютера динамических структур.
- •Реализация стека с помощью массивов
- •Указатели
- •Стандартные операции с линейными списками
- •Реализация динамических структур линейными списками
- •4.3.6.1. Реализация стека
- •4.3.6.2. Реализация очереди с помощью линейного списка
- •4.3.6.3. Реализация двоичного дерева с помощью линейного списка
- •Сортировка и поиск с помощью двоичного дерева
- •Три источника и три составные части ООП.
- •Классы и объекты.
- •Обращение к членам класса.
- •Инкапсуляция
- •Спецификаторы доступа.
- •Свойства.
- •Наследование
- •Полиморфизм
- •Раннее связывание.
- •Позднее связывание.
- •Конструкторы и деструкторы.
- •Элементы графического интерфейса
- •Различия между консольными и графическими приложениями
- •Визуальное программирование в среде Lazarus
- •Создание графического приложения
- •Форма и ее основные свойства
- •Компоненты
- •Обработчики событий
- •Простейшие компоненты
- •6.3.5.1. Компонент TLabel
- •6.3.5.2. Кнопки TButton, TBitBtn и TSpeedButton
- •6.3.6.1. Компонент TEdit
- •6.3.6.2. Компонент TLabeledEdit
- •6.3.7.1. Компонент TMaskEdit
- •Специальные компоненты для ввода чисел
- •Тестирование и отладка программы
- •Компоненты отображения и выбора данных
- •6.3.10.1. Компонент TMemo
- •6.3.10.2. Компонент TStringGrid
- •6.3.10.3. Компоненты выбора
- •Компонент TListBox
- •Компонент TComboBox
- •Компоненты выбора – переключатели
- •6.3.10.4. Компоненты отображения структурированных данных
- •Компонент TTreeView
- •Компонент TListView
- •Организация меню. Механизм действий - Actions
- •6.3.11.1. Компонент TMainMenu
- •6.3.11.2. Компонент TToolBar
- •6.3.11.3. Компонент TActionList
- •6.3.11.4. Создание приложений с изменяемыми размерами окон
- •Послесловие
- •Литература
- •Алфавитный указатель
Глава 2 Введение в язык программирования Pascal
____________________________________________________________________
i:= 0; (* Инициализация переменной *)
или
{переменная i используется как индекс
воператорах цикла }
i:= 0; { Инициализация переменной }
Программисты чаще всего используют однострочный комментарий и мно-
гострочный комментарий с фигурными скобками.
2.1.7 Операторы
Основная часть программы на Паскале – раздел операторов. Он начинается ключевым словом begin и заканчивается ключевым словом end, за которым следует точка. Операторы отделяются друг от друга точкой с запятой (;). Рас-
смотрим основные операторы:
2.1.7.1. Оператор присваивания
Элементарное действие над переменной – изменение еѐ значения. Для это-
го применяется оператор присваивания, имеющий вид:
имя переменной:= выражение;
В нем переменная и выражение должны быть одного типа.
Пример.
Пусть х – переменная целого типа. Запишем следующий оператор при-
сваивания:
х:= х + 1;
В левой части оператора х обозначает переменную, а в правой части – чис-
ло, являющееся еѐ текущим значением. Выполнение этого оператора приводит к увеличению значения переменной х на единицу.
55
2.1 Основные элементы языка
____________________________________________________________________
2.1.7.2. Операторы ввода/вывода
Во время исполнения программы она обменивается информацией с "внеш-
ним миром". Например, она может выдавать информацию на экран или полу-
чать информацию с клавиатуры. Для этого используются операторы ввода и вывода.
Оператор вывода имеет вид:
write(выражение);
или
writeln(выражение);
В результате выполнения этого оператора значение соответствующего вы-
ражения будет выведено на экран. Выражение может быть любым из указанных выше типов.
Пример.
write(2 + 2); будет выведено на экран 4
write(x = y); будет выведено true или false в зависимости от значений x, y
Оператор writeln отличается от оператора write тем, что выведет зна-
чение выражения с начала новой строки, а оператор write с той позиции стро-
ки, где находится курсор.
В операторе вывода можно указывать несколько выражений, разделяя их запятыми, а также любой текст, заключенный в одинарные кавычки.
Пусть значение А=5. Тогда при выполнении оператора
writeln('Значение А=', А);
будет выведено на экран с новой строки
Значение А=5
56
Глава 2 Введение в язык программирования Pascal
____________________________________________________________________
Оператор ввода имеет вид:
read(имя переменной 1, имя переменной 2,…, имя переменной n); readln(имя переменной 1, имя переменной 2,…, имя переменной n);
В результате его выполнения переменной (переменным) присваивается считанное с клавиатуры значение. Вводимое значение должно записываться при вводе так, как описана переменная, т.е. если, например, переменная целого типа, то вводимое число должно быть целым. При этом если используется read, то значение вводится в то место на экране, где в данный момент нахо-
дится курсор, если же используется readln, то с новой строки и с первой ко-
лонки экрана. Если в одном операторе readln или read вводятся значения нескольких переменных, то при выполнении программы значения, водимые с клавиатуры можно разделять пробелом или символом табуляции (клавиша
Tab). После ввода значения последней переменной необходимо нажать клави-
шу Enter.
На практике предпочтительнее использовать оператор readln т.к. во-
первых, курсор будет располагаться всегда в начале строки, что позволит поль-
зователю легче ориентироваться при вводе большого числа значений. Во-
вторых, при этом после окончания ввода буфер ввода с клавиатуры полностью очищается. Дело в том, что все вводимые с клавиатуры символы сначала нака-
пливаются в специальной временной области памяти – буфере и лишь после нажатия клавиши Enter присваиваются соответствующим переменным. При ис-
пользовании оператора read в буфере остается код клавиши Enter. В некото-
рых случаях это может привести к неправильной работе следующего оператора ввода.
Вы, конечно, должны понимать, что при вводе чисел с клавиатуры они вводятся в виде строки символов. После нажатия клавиши Enter они переводят-
57