- •Введение в конструирование программ
- •Пенза 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.1.3 Лабораторные задания
Сконструировать консольное приложение в соответствии с одним из приведенных ниже заданий.
3.1.3.1 Одномерные массивы
Напишите программу, которая осуществляет обработку информации по одному из условий, заданных ниже.
Для массива А, состоящего из N элементов:
Построить гистограмму значений массива: каждый элемент массива отображается на одной строке и содержит количество '', равное значению элемента.
Найти индекс первого положительного числа, оканчивающегося на 0. Если такого элемента нет, то выдать соответствующее сообщение.
Найти среднее арифметическое значений элементов массива, расположенных между наибольшим и наименьшим значения массива, включая эти значения.
Найти количество элементов массива, начиная со второго, значение которых больше суммы индексов элементов, стоящих перед ними.
Назовем элемент Аi (i = 2, … , N-1) особым, если слева от него расположены элементы меньшие его, а справа большие. Найти количество таких элементов.
Присвоить переменной F значение true, если элементы массива составляют строго возрастающую арифметическую прогрессию, и false в противном случае
Сколько значений элементов встречаются в массиве более одного раза? Какие это значения?
Сформировать массив В из таких элементов массива А, которые превышают среднее значение массива А.
Записать в массив В положительные элементы массива А, отрицательные элементы – в массив С
. Вычислить значения функции для всех таких значений и (i=1,2,…,N), что подкоренное выражение больше нуля
Решить уравнение для заданных пар значений и (i = 1, 2, … , N)
Даны два массива X(N) и Y(M). Сформировать массив Z(N+M) из положительных элементов массивов X и Y. Если положительных элементов меньше N+M, то оставшимся элементам массива Z присвоить значение +1
Даны массивы А, В, состоящие из N элементов каждый. Присвоить переменной F значение true, если все элементы массива А встречаются в массиве В, и false в противном случае
3.1.3.2. Двумерные массивы
Напишите программу, которая осуществляет обработку информации по одному из условий, заданных ниже.
Задана целочисленная квадратная матрица A размерностью N:
Поменять местами элементы матрицы, расположенные на одной строке и принадлежащие главной и побочной диагоналям
Найти минимальный элемент, расположенный на главной диагонали матрицы A, а из элементов строки и столбца, на пересечении которых он находится, сформировать одномерный массив B
Среди элементов, расположенных ниже главной диагонали матрицы A, найти те элементы, которые удовлетворяют условию K1 Ai,j K2 (K1, K2 – произвольные числа), и сформировать из них одномерный массив B
Найти номер строки матрицы A, наиболее удаленной от первой строки, если расстояние S между строками L и K матрицы определяется по формуле:
Найти «седловую» точку матрицы – такой элемент Ai,j, который является наибольшим в строке i и наименьшим в столбце j. Если такого элемента нет, то выдать соответствующее сообщение.
Сформировать одномерный массив B, элементы которого Bi равны true, если элементы i-й строки матрицы A упорядочены по возрастанию, и false – в противном случае
Сформировать одномерный массив B, элементы которого Bj равны 1, если хотя бы один элемент j-го столбца матрицы A больше суммы элементов этого столбца, и 0 – в противном случае.
Из массивов X(N) и Y(M) построить квадратную матрицу A размерностью K (K= ) таким образом, чтобы элементы массива X были расположены на главной диагонали и выше ее.
Задана целочисленная матрица A размерностью N×M и массив X(N). Обнулить строки матрицы с номером K, для которого X[K] 0.
Задана целочисленная матрица A размерностью N×M. Соседями элемента Ai,j, матрицы A будем считать элементы AK,L, для которых i-1 K i+1 и j-1 L j+1; (K, L) (i, j). Сформировать матрицу B путем «сглаживания» матрицы A – заменой каждого элемента A средним арифметическим его соседей.
Заданы целочисленные матрицы A, B размерностью N×M. Поменять местами столбец матрицы A, где расположен минимальный элемент, со столбцом матрицы B, где расположен максимальный элемент.
Заданы целочисленные квадратные матрицы A, B размерностью N. Вывести на экран значения той матрицы, которая содержит больше строк, с положительной суммой элементов.
Заданы целочисленные квадратные матрицы A, B размерностью N. Поменять местами строку матрицы A, которая содержит только положительные элементы и имеет минимальный номер в матрице A, со столбцом матрицы B, номер которого совпадает с номером найденной строки матрицы A. Если строка в матрице A не найдена, то выдать соответствующее сообщение.