- •Полный обучающий курс
- •Содержание
- •Ввод-вывод Занятие 1. Язык программирования Паскаль. Знакомство со средой программирования Турбо Паскаль. Основные понятия. Первая программа. Оператор присваивания.
- •Запуск интегрированной среды программирования.
- •Оператор присваивания. Арифметические выражения
- •Порядок выполнения операций
- •Основные определения. Типы данных.
- •Типы данных.
- •Сложные типы
- •Занятие 2. Ввод - вывод. Операторы Read (Readln), Write (Writeln). Простейшие линейные программы
- •Операторы Write и WriteLn
- •Операторы Read и ReadLn
- •I Арифметические функции
- •II Функции преобразования типов
- •III Функции для порядковых типов
- •IV Процедуры для порядковых типов
- •Графика Занятие 1: Графический режим. Инициализация графического режима. Построение точки, линии.
- •1) Инициализация графики, подготовительные работы, управление цветом, закрытие режима:
- •Система координат в графическом режиме.
- •Занятие 2: Построение дуги, окружности, прямоугольника, эллипса.
- •Установка стиля и цвета закраски. Закрашивание фигур.
- •Занятие 3: Вывод текста.
- •Занятие 4. Процедуры рисования закрашенных фигур.
- •Для любопытных. Окно в графическом режиме. Решение задач.
- •Операторы условия и выбора Занятие 1. Разветвляющиеся алгоритмы. Оператор условия If. Разветвляющиеся алгоритмы
- •Занятие 2. Логический тип данных. Логические операции not, and, or. Нахождение значений логических выражений. Самостоятельная работа. Логический тип данных
- •Самостоятельная работа
- •Занятие 3. Вложенные условные операторы. Решение задач.
- •I Выберите с учителем задачи для самостоятельного решения из предложенного списка:
- •II Выберите с учителем задачи для самостоятельного решения из предложенного списка:
- •Занятие 4. Оператор выбора case. Решение задач.
- •Занятие 5. Оператор безусловного перехода Goto. Решение задач.
- •Занятие 6. Контрольная работа
- •Для любознательных
- •Контрольные вопросы
- •Циклы Занятие 1. Циклические алгоритмы. Цикл с предусловием.
- •Цикл с предусловием.
- •Задачи для самостоятельного решения
- •Занятие 2. Цикл с предусловием в графике.
- •Задачи для самостоятельного решения
- •Занятие 3. Контрольная работа
- •Занятие 4. Цикл с постусловием repeat.
- •Задачи для самостоятельного решения
- •Занятие 5. Работа с клавиатурой. Стандартные процедуры read и readLn. Стандартные функции readKey и KeyPressed; их применение в циклах.
- •Стандартная функция readKey
- •Стандартная функция KeyPressed
- •Занятие 6. Цикл со счетчиком.
- •Занятие 7-8. Самостоятельное решение задач.
- •Процедуры и функции Занятие 1. Понятие подпрограммы. Процедуры и функции. Стандартные подпрограммы. Примеры употребления подпрограмм в решении задач.
- •Занятие 2. Формальные и фактические параметры. Вызов по ссылке и по значению. Локальные и глобальные переменные и подпрограммы Формальные и фактические параметры
- •Вызов по ссылке и по значению
- •Параметры-значения
- •Локальные и глобальные переменные и подпрограммы.
- •Занятие 3. Процедуры.
- •Занятие 4. Процедуры в графическом режиме.
- •Занятие 5. Функции.
- •Различие между процедурами и функциями.
- •Задачи для самостоятельного решения
- •Занятие 6. Решение задач
- •Для любознательных. Особенности использования процедур и функций.
- •Заголовок модуля
- •Интерфейсная часть
- •Реализационная часть
- •Инициализационная часть
- •Рекурсия Занятие 1. Понятие рекурсии.
- •Занятие 2. Примеры задач рекурсивного решения в текстовом и графическом режимах.
- •Занятие 3. Косвенная рекурсия.
- •Занятие 4. Решение задач
- •Для любознательных. Ханойские башни. Задача о разрезании прямоугольника
- •Анализ рекурсивных алгоритмов
- •Особенности отладки и компиляции программ, содержащих процедуры и функции
- •Одномерные массивы Занятие 1. Понятие массива. Одномерные массивы. Способы задания одномерных массивов
- •Способы задания одномерных массивов
- •Занятие 2. Доступ к элементам массива
- •Изменение значения некоторых элементов
- •Нахождение номеров элементов с заданным свойством
- •Нахождение количества элементов с заданным свойством
- •Есть ли в данном массиве элементы с данным свойством?
- •Занятие 3. Удаление элементов из одномерного массива.
- •Задачи для самостоятельного решения
- •Занятие 4. Вставка элементов в одномерный массив. Вставка одного элемента
- •Вставка нескольких элементов
- •Задачи для самостоятельного решения
- •Занятие 5. Перестановка элементов массива. Перестановка двух элементов
- •Перестановка части массива
- •Работа с несколькими массивами.
- •Занятие 6. Самостоятельное решение задач.
- •Двумерные массивы Занятие 1. Понятие двумерного массива. Описание типа массива. Формирование значений элементов массива случайным образом.
- •Формирование значений элементов массива случайным образом и с клавиатуры и вывод их на экран
- •Занятие 2. Работа с элементами массива.
- •Нахождение количества элементов с данным свойством
- •Определить, отвечает ли заданный массив некоторым требованиям
- •Изменение значений некоторых элементов, удовлетворяющих заданному свойству
- •Заполнение массива по правилу
- •Задачи для самостоятельного решения
- •1. Найти сумму и количество элементов с заданным условием (хранить эти значения в массивах):
- •2. Найти и вывести на экран индексы заданных элементов массива (если их нет выдать соответствующее сообщение):
- •3. Используя функцию булева типа, определить:
- •4. Измените исходный массив в соответствии с заданием:
- •5. Решите задачу на заполнение массива по определенному правилу.
- •Занятие 3. Вставка и удаление строк и столбцов.
- •Вставка строк и столбцов
- •Удаление строк и столбцов
- •Задачи для самостоятельного решения
- •Занятие 4. Перестановка элементов массива.
- •Задачи для самостоятельного решения
- •Занятие 5. Самостоятельное решение задач.
- •I. Заполнение и анализ элементов массива
- •II. Работа с одномерным и двумерным массивами
- •Занятие 6. Контрольная работа
- •Для любопытных. Графические программы с применением массивов.
- •Методы сортировки массива Занятие 1. Сортировка массива. Способы сортировки массива.
- •Занятие 2. Сортировка вставкой. Сортировка выбором.
- •Сортировка выбором
- •Занятие 3. Сортировка методом простого обмена. Рекурсивная сортировка
- •Cортировка массива с помощью рекурсии.
- •Занятие 4. Сортировка методом слияний.
- •Для любопытных. Рекурсивная сортировка слиянием
- •Занятие 5-6. Самостоятельное решение задач.
- •Строки Занятие 1. Тип данных char. Операции над символами
- •Задачи для самостоятельного решения
- •Занятие 2. Строка. Тип данных string. Строковые переменные, их описание. Длина строки. Операции над строками
- •Задачи для самостоятельного решения
- •Занятие 3. Стандартные функции для работы со строками (concat,copy,length, pos,upcase). Функция Length
- •Функция Upcase
- •Функция Copy
- •Функция Pos
- •Функция Concat
- •Задачи для самостоятельного решения
- •Задачи для самостоятельного решения
- •Занятие 5. Контрольная работа
- •Занятие 6. Решение задач.
- •Для увлеченных программированием. Бегущая строка. Пример программы осыпающихся букв. Строки в графическом режиме.
- •Множества Занятие 1. Множественный тип данных. Множество. Элемент множества. Способы задания множества. Объединение множеств. Разность множеств. Пересечение множеств.
- •Занятие 2. Логические операции над множествами: проверка принадлежности элемента множеству, проверка включения элемента в множество, сравнение множеств.
- •Занятие 3. Примеры решений задач на применение множества.
- •Занятие 4. Самостоятельное решение задач.
- •Запись Занятие 1. Комбинированный тип данных. Запись. Описание записи. Доступ к полям записи. Оператор With. Примеры решения задач
- •Занятие 2. Самостоятельное решение задач
- •Занятие 3. Сортировка записей.
- •Занятие 4. Записи с вариантами.
- •Дополнительно. Решение задач
- •Файлы Занятие 1. Файлы. Виды файлов. Типизированные файлы
- •Процедуры и функции для работы с файлами любого типа
- •Примеры решения задач
- •Занятие 2. Процедуры и функции для работы с типизированными файлами
- •Функция ioResult
- •Занятие 3. Самостоятельное решение задач
- •I Выберите с учителем одну из предложенных ниже задач (тип Integer, real)
- •II Выберите с учителем одну из предложенных ниже задач (тип char)
- •III Выберите с учителем одну из предложенных ниже задач (тип string)
- •IV Выберите с учителем одну из предложенных ниже задач (тип record)
- •Занятие 4. Процедуры и функции работы с файлами. Решение задач
- •Тeкстовые файлы Занятие 1. Тeкстовые файлы, их описание и основные отличия от типизированных файлов.
- •Занятие 2. Способы обмена с текстовыми файлами.
- •Операции чтения из файла
- •Операции записи в файл
- •Логическая функция Eoln
- •Процедура открытия файла для дополнения
- •Занятие 3. Стандартные текстовые файлы Input и Output. Примеры задач
- •Занятие 4. Самостоятельное решение задач
- •Для любознательных. Текстовый режим. Модуль crt. Работа с цветом. Работа с экраном и курсором
- •Нетипизированные файлы Занятие 1. Нетипизированные файлы. Их отличия. Процедуры blockread и blockwrite.
- •Занятие 2. Решение задач
- •Занятие 3. Использование типизированных файлов в качестве нетипизированных
- •Занятие 4. Использование текстовых файлов в качестве нетипизированных.
- •Занятие 5. Примеры решения творческих задач
- •Для любознательных. Дополнительные процедуры и функции работы с файлами
- •Внешние устройства в качестве файлов.
- •Граф Занятие 1. Основные понятия.
- •Занятие 2. Представление деревьев. Основные операции над деревом.
- •Занятие 3. Самостоятельное решение задач.
- •Занятие 4. Идеально сбалансированное дерево.
- •Стек Занятие 1. Стек. Отличия стека от списка. Основные операции со стеком.
- •Занесение элемента в стек
- •Извлечение элемента из стека
- •Примеры решения задач.
- •Занятие 2. Самостоятельное решение задач
- •Занятие 3. Очереди. Основные операции над очередью.
- •Занесение элемента в очередь
- •Извлечение элемента из очереди
- •Примеры решения задач
- •Занятие 4. Самостоятельное решение задач
- •Занятие 5. Кольцо. Формирование кольца. Основные операции над кольцом.
- •Формирование кольца
- •Обход кольца
- •Занятие 6. Примеры решения задач с применением динамической структуры кольцо. Творческая работа.
- •Список Занятие 1. Список. Создание списка путем добавления элементов в конец списка. Просмотр списка.
- •Просмотр списка
- •Занятие 2. Создание списка путем вставления элементов в начало.
- •Занятие 3. Упорядочивание списка. Вставление элемента в середину списка.
- •Занятие 4-5. Примеры задач, решаемых с помощью списка. Решение задач.
- •Занятие 6. Удаление элемента из списка.
- •Занятие 7. Зачет.
- •Динамические структуры данных Занятие I. Динамические структуры данных. Статические и динамические переменные. Адреса. Указатели и их объявление.
- •Указатели и их объявление
- •Занятие 2. Присвоение значений указателю. Оператор @ с переменной. Оператор @ с параметром процедуры, переданным по значению. Оператор @ с параметром процедуры, переданным по ссылке.
- •Занятие 3. Список. Создание списка путем добавления элементов в конец списка. Просмотр списка
- •Занятие 4. Создание списка путем вставления элементов в начало.
- •Занятие 5. Упорядочивание списка. Вставление элемента в середину списка.
- •Примеры задач, решаемых с помощью списка
- •Занятие 6. Удаление элемента из списка.
Занятие 3. Вставка и удаление строк и столбцов.
Мы уже рассматривали такие действия для одномерных массивов. Обобщим для двумерных.
Вставка строк и столбцов
Для решения задачи вставки строки необходимо:
1. Первые k строк оставить без изменения.
2. Все строки после k-ой сдвинуть на одну назад, это лучше сделать, начиная с последней строки и идти до (k+1)-ой.
3. Элементам строки k+1 присвоить заданное значение.
4. Увеличить количество строк.
Кроме того, необходимо изменить размерность массива. Так как мы вставляем строку, то число строк будет на одну больше.
Задача. Вставить строку из нулей после строки с номером k.
Procedure Insert1(Var X : MyArray2; n, m : integer; k1 : integer);
Var
i, j : integer;
Begin
for i := n downto k1 +1 do
for j := 1 to m do
X[i+1, j] := X[i, j];{элементу столбца j присваиваем элемент этого же столбца, но из предыдущей строки}
for j := 1 to m do
X[k1+1, j] := 0;
Inc(n);
End;
Для вставки столбца пользуйтесь практически тем же правилом, только размерность увеличивается для столбцов и сдвигаем назад столбцы.
Задание. Напишите программу, содержащую процедуры вставки строки и столбца из заданного одномерного массива.
И еще несколько советов.
1. Если необходимо вставить после строки, удовлетворяющей какому-либо условию, то надо найти лишь ее номер и задача сводится к рассмотренной выше.
2. Если надо вставлять после всех строк с заданным условием, то надо увеличить размерность по строкам, и если строка удовлетворяет условию, то к ней применять вставку. При этом надо заметить, что лучше просматривать строки с последней и ввести счетчик вставленных строк.
3. Вставка перед строкой с данным номером отличается лишь тем, что сдвигать назад надо не с (k+1)-ой строки, а с k-ой.
Удаление строк и столбцов
Для решения задачи удаления строки необходимо:
1. Сдвинуть все строки, начиная с данной на одну вверх.
2. Последнюю строку обнулить.
3. Уменьшить количество строк.
Процедура удаления строки приведена ниже.
Procedure Delete1(Var X : MyArray2; Var n, m : integer; k1 : integer);
Var
i, j : integer;
Begin
for i := k1 to n-1 do
for j := 1 to m do
X[i, j] := X[i+1, j];
for j := 1 to m do
X[n, j] := 0;
Dec(n);
End;
Удаление столбца аналогично удалению строки.
И еще несколько советов.
1. При выводе на экран полученного массива не выводите нулевые строки и столбцы.
2. Задачу об удалении строки с заданным условием можно решить тем же способом, достаточно только найти ее номер, а в случае отсутствия такой строки можно просто сообщить об этом и закончить программу.
Задание. Выберите с учителем задачи из предложенного списка. Решите их, применяя подпрограммы, приготовьте для проверки 3-4 теста.
Задачи для самостоятельного решения
Задачи на вставку элементов.
1. Вставить первую строку после строки, в которой находится первый встреченный максимальный элемент и первый столбец перед всеми столбцами, в которых встретится заданное число. Если такого столбца или строки нет, то вывести сообщение об этом.
2. Вставить второй столбец после первого столбца, в котором все элементы положительны и заданную строку перед всеми строками, в которых все элементы отрицательны. Если такого столбца или строки нет, то вывести сообщение об этом.
3. Вставить нулевую строку и нулевой столбец перед строками и столбцами, где находятся минимальные элементы.
4. Вставить после всех строк, в которых есть заданное число А, последнюю строку, а перед столбцами, которые задал пользователь, нулевой столбец. Если такого столбца или строки нет, то вывести сообщение об этом.
5. Вставить перед всеми столбцами, в которых нет отрицательных элементов, второй столбец, а после строк, в которых есть отрицательный элемент, вставить строку, полученную случайным образом. Если такого столбца или строки нет, то вывести сообщение об этом.
6. Вставить перед всеми строками, в которых есть 0, первую строку, а после всех столбцов, в которых есть отрицательные элементы – первый столбец.
7. Вставить нулевую строку и столбец перед строкой и после столбца, в которых встретился элемент, равный сумме своих индексов. Если такого столбца или строки нет, то вывести сообщение об этом.
8. Вставить нулевую строку и столбец перед строкой и столбцом, в которых встретился минимальный элемент.
9. В квадратном массиве вставить перед четными столбцами нулевой столбец, а после нечетных строк строку, состоящую из единиц.
10. Если в строке есть элемент, равный среднему арифметическому элементов этой строки, то вставьте после него строку, состоящую из этих элементов. Перед столбцом, в котором находится элемент, равный индексу строки, вставьте строку, состоящую из единиц. Если такого столбца или строки нет, то вывести сообщение об этом.
11. Если в строке имеется элемент, равный сумме своих соседей, то вставить перед этой строкой нулевую и после столбца, в котором находится этот элемент, нулевой столбец. Если такого столбца или строки нет, то вывести сообщение об этом.
Задачи на удаление элементов
1. Если в массиве есть равные строки, то удалите их. Если в получившемся после удаления строк массиве обнаружен столбец, каждый элемент которого больше на единицу соответствующего элемента в предыдущем столбце, то удалите его. Если такого столбца или строки нет, то вывести сообщение об этом.
2. Удалите строки, содержащие ноль, а затем столбцы, в которых только отрицательные элементы. Если такого столбца или строки нет, то вывести сообщение об этом.
3. Удалите строки, содержащие более одного максимального элемента, а затем столбцы, сумма элементов которых равна заданному числу. Если такого столбца или строки нет, то вывести сообщение об этом.
4. Удалите строку и столбец, на пересечении которых находится второй, пятый и седьмой встреченные отрицательные элементы. Если такого столбца или строки нет, то вывести сообщение об этом.
5. Удалить все строки и столбцы, на пересечении которых стоят отрицательные элементы. Если такого столбца или строки нет, то вывести сообщение об этом.
6. Если в столбцах, встретился элемент, равный сумме первых двух элементов текущего столбца, то удалите строки, в которых они находятся. Удалите столбцы, в которых первый элемент нулевой. Если такого столбца или строки нет, то вывести сообщение об этом.
7. Удалите все столбцы, в котором находится минимальный элемент, а затем строки, в которых больше одного максимального элемента. Если такого столбца или строки нет, то вывести сообщение об этом.
8. Удалить строки с номерами, кратными k, и столбцы, в которых нет отрицательного элемента. Если такого столбца или строки нет, то вывести сообщение об этом.
9. Удалить все столбцы, с номерами, оканчивающимися нулем, а затем строки, в которых на четных местах находятся нули, а на нечетных – единицы. Если такого столбца или строки нет, то вывести сообщение об этом.
10. Удалите строки, находящиеся между первым минимальным и последним максимальным элементами текущего столбца. В оставшихся строках удалить столбцы, в которых встретился максимальный отрицательный элемент текущей строки. Если такого столбца или строки нет, то вывести сообщение об этом.
11. Удалите столбцы, в которых есть заданный элемент, а затем строки, сумма элементов первой половины которых больше суммы элементов второй половины. Если такого столбца или строки нет, то вывести сообщение об этом.
Файл сохраните на дискете, листинг сдайте учителю для оценки.