
- •Введение в конструирование программ
- •Пенза 2006 г.
- •Предисловие
- •1 Обработка информации на компьютере
- •1.1 Модель обработки информации на компьютере
- •1.2 Основные объекты языка программирования
- •1.2.1 Синтаксические элементы языка программирования
- •1.2.2. Значения и типы
- •1.2.3. Константы и переменные
- •1.2.4. Выражения
- •1.2.5. Операторы
- •1.3 Лабораторные задания
- •1.3.1 Логическая разминка
- •1.3.2 Реализовать схемы программ на языке Object Pascal
- •2 Структурное конструирование программ
- •2.1 Простая программа
- •2.2 Консольное приложение
- •2.2.1 Создание, сохранение и загрузка программы
- •2.2.2 Компиляция и выполнение программы
- •2.3 Лабораторные задания
- •2.3.1 Составление простых программ
- •2.3.2 Выполните трассировку и определите результаты работы программы
- •2.3.3 Программирование с использованием управляющих структур
- •2.4 Подпрограммы
- •2.4.1 Глобальные данные
- •2.4.2 Способы передачи параметров
- •2.4.3 Функции
- •2.4.4 Процедуры
- •2.4.5 Значения параметров по умолчанию
- •2.4.6 Перегрузка функций
- •2.4.7. Рекурсивные подпрограммы
- •2.4.8. Передача наименования подпрограммы как параметра
- •2.5 Отладка программ
- •2.6 Лабораторные задания. Подпрограммы
- •2.6.1 Конструирование подпрограмм
- •2.6.2 Разработка рекурсивных подпрограмм
- •2.7. Модули
- •Interface {интерфейс модуля}
- •Implementation {реализация}
- •Initialization {инициализация}
- •3. Структуры данных
- •3.1. Массивы
- •3.1.1. Действия над массивами
- •I, j : byte; { индексы элементов массивов }
- •3.1.2 Передача массивов в качестве параметров
- •3.1.2.1. Формальные параметры как массивы с фиксированными размерами
- •3.1.2.2. Формальные параметры как массивы со «свободными» размерами
- •3.1.2.3. Определение наименьшего/наибольшего значения массива
- •3.1.3 Лабораторные задания
- •3.1.3.1 Одномерные массивы
- •3.1.3.2. Двумерные массивы
- •3.2. Строки
- •3.2.1 Лабораторные задания
- •3.3. Записи
- •3.3.1 Лабораторные задания
- •3.4 Файлы.
- •3.4.1 Основные понятия и операции
- •3.4.2 Типизированные файлы
- •3.4.3 Текстовые файлы
- •3.4.4 Лабораторные задания
- •3.5 Динамические структуры данных. Указатели
- •3.5.1 Основные понятия и определения
- •3.5.2 Процедуры выделения и освобождения памяти
- •3.5.3 Односвязный список
- •3.5.4 Лабораторные задания. Указатели, список
- •3.5.5 Динамические массивы
- •4. Введение в объектно-ориентированное конструирование программ
- •4.1 Основные понятия и определения
- •4.2 Классы и объекты
- •4.2.1 Структура класса
- •4.2.2 Создание и уничтожение объектов
- •4.2.3 Пример. Класс – динамический массив
- •4.2.5 Операции с объектами
- •4.2.5.1 Оператор is
- •4.2.5.2 Оператор as
- •4.2.5.3 Копирование объектов одного класса
- •4.2.6 Свойства
- •4.2.7 Наследование и полиморфизм
- •4.2.8 События
- •4.2.9 Исключительные ситуации
- •4.2.9.1 Операторы try…except
- •4.2.9.2 Операторы try…finally
- •5. Визуальная разработка программ в delphi
- •5.1. Интегрированная среда разработки программ
- •5.1.1 Проект
- •5.2 Конструирование простого приложения
- •5.2.1 Интерфейс Пользователя
- •5.2.2 Визуальное конструирование
- •5.2.3 Реализация методов
- •5.2.4 Обработка исключительных ситуаций
- •5.2.5 Файлы приложения Калькулятор
- •5.3 Компоненты ввода/вывода данных StringGrid и Memo
- •5.3.1 Компонент StringGrid – таблица строк
- •5.3.1 Ввод массива. Компонент StringGrid
- •5.3.3 Компонент Memo – многострочное окно редактирования
- •5.3.4 Ввод массива. Компонент Memo
- •5.4 Немного о графике
- •5.4.1 Свойство Canvas. Построение графика функции
- •5.4.2 Событие OnPaint
- •Список литературы
- •Приложение а. Кратко о Delphi а.1 Свойства проекта
- •А.2 Программный код пустой формы
- •А.3 Главная форма
- •А.3.1 Свойства главной формы
- •А.3.2 События главной формы
- •А.4 Компоненты Delphi
- •Приложение b. Приложение «Калькулятор»
3.2.1 Лабораторные задания
Сконструировать консольное приложение в соответствии с одним из приведенных ниже заданий.
Напишите программу, которая осуществляет обработку информации по одному из условий, заданных ниже. Разделителем слов предложения считать пробел ( '' ).
Строка содержит произвольные символы X1, X2, X3, X4,. X5, X6. Измените исходный состав символов и их порядок с помощью минимального числа вызовов строковых процедур и функций:
X6, X5, X1, X2
X3, X4, X2, X5, X6
X2,X4, X6
X2, X3, X5, X6, X4
X5, X6, X3, X4, X1, X2
Введите с клавиатуры фамилию, имя и отчество. Программа должна преобразовать введенные данные и вывести их в виде инициалов и фамилии. Например, при вводе Тургенев Иван Сергеевич программа должна вывести И.С. Тургенев.
В предложении заменить одинаковые, стоящие подряд символы одним символом, после которого в скобках указать количество символов, которые были заменены.
Найти в предложении слова длиной не более 6 символов, в которых количество гласных букв составляет не менее 30%
Найти в предложении все слова, которые являются палиндромами.
Заменить в предложении окончания слов «ing» на окончания «ed».
Найти в предложении все слова, в которых встречаются первые три буквы первого слова предложения.
В предложении S найти все слова, которые содержат строку S1 (длина 2 символа) или строку S2 (длина 3 символа).
В предложении S1 найти самое длинное слово, которое отсутствует в предложении S2.
В предложении S1 найти все слова, которые есть в предложении S2
Сформировать строки (строку), которые содержат операторы вывода языка Object Pascal, эквивалентные заданному оператору вывода языка С/С++. Пример оператора вывода в языке С/С++:
cout<<"Сумма="<<summa<<"\n",
где cout – опрератор вывода
<< – разделитель
"Сумма=" – строка
summa – переменная
"\n" – символ перехода на новую строку.
Для данного примера программа должна сформировать строки:
write('Сумма=', summa);
writeln;
3.3. Записи
Запись – это структурированный тип данных, состоящий из фиксированного числа компонентов разного типа.
Выбор компонентов является основной операцией над записями. Эта операция подобна выбору элементов из массива, но с одним существенным отличием: индекс здесь всегда является именем компонента и никогда не может быть вычисляемым значением. Синтаксически операция выбора компонента записи представляет собой имя записи, за которым следует имя компонента.
Компоненты записи называют полями, и соответственно имена компонентов являются именами полей.
Синтаксис:
record
<имя поля>: <тип поля>;
. . .
<имя поля>: <тип поля>
end;
Пример:
type
Student = record
name : string[20];
gruppa : string[5];
number: integer;
end;
var
s: Student;
begin
s.name := 'Иванов И.И.';
s.number:= 5;
writeln (s.name, s.number);
end.
Никаких ограничений на тип компонентов не накладывается, поэтому компонентом записи может быть в свою очередь тоже запись.
Операция присваивания одной записи некоторой другой допустима, если записи имеют одну и ту же структуру.
Обращение к полям записи может иметь громоздкий вид. Для того чтобы при выборе поля записи указывать только имя поля (не указывая имя записи) необходимо поместить обращение к полю записи в области действия оператора with (оператора присоединения), связанного с этой записью.
Синтаксис оператора with:
with <имя записи> do
<оператор>;
Пример (переменная s: Student):
with s do
begin
name := 'Иванов И.И.';
number:= 5;
writeln (name, number);
end.