
- •Учебно-методический комплекс
- •Пояснительная записка.
- •Рабочая программа дисциплины Основы алгоритмизации и программирования
- •Тематический план учебной дисциплины
- •Раздел 1. Основные принципы алгоритмизации.
- •Тема 1.1. Алгоритм, свойства алгоритма. Способы описания алгоритмов. Базовые алгоритмические конструкции..
- •Тема 1.2. Языки программирования и их классификация. Этапы решения задач на компьютере .
- •Раздел 2. Основные понятия языка программирование Turbo Pascal .
- •Тема 2.1 Среда программирования Турбо Паскаль. Операторы ввода-вывода.
- •Тема 2.2. Типы данных. Стандартные функции и процедуры.
- •Раздел 3. Работа с графическим модулем.
- •Тема 3.1. Текстовый и графический режимы работы монитора. Выбор и переключение графического режима в языке Pascal .
- •Тема 3.2. Рисование простых графических элементов (линия, точка, прямоугольник). Цвет объектов. Графический шрифт. Вывод текста.
- •Раздел 4. Основные алгоритмические конструкции и их реализация на языке Pascal .
- •Тема 4.1. Разветвляющиеся алгоритмы. Оператор условия If. Логические операции not, and, or. Нахождение значений логических выражений.
- •Тема 4.2. Вложенные условные операторы. Решение задач.
- •Тема 4.3. Оператор выбора case. Решение задач.
- •Тема 4.4. Циклические алгоритмы. Операторы организации циклов. Простой и составной оператор.
- •Тема 4.5. Цикл с предусловием в графике.
- •Тема 4.6. Рекурсия. Примеры задач рекурсивного решения в текстовом и графическом режимах.
- •Раздел 5. Процедуры и функции.
- •Тема 5.1.Глобальные и локальные переменные. Парадигма модульного программирования.
- •Тема 5.2. Процедуры. Входные и выходные данные процедуры.
- •Тема 5.3. Функции. Отличие функции от процедуры. Тип функции.
- •Раздел 6. Массивы. Стандартные алгоритмы на массивах.
- •Тема 6.1. Одномерные массивы. Способы задания одномерных массивов. Обработка массива.
- •Тема 6.2. Двумерные массивы. Действия с двумерными массивами.
- •Тема 6.3. Методы сортировки массивов.
- •Раздел 7. Символы и строки. Процедуры и функции работы со строками
- •Тема 7.1. Символьный тип данных. Функции работы с символами.
- •Тема 7.2. Строки. Тип string. Сравнение строк. Понятие подстроки.
- •Тема 7.3. Процедуры и функции работы со строками.
- •Раздел 10. Файлы.
- •Тема 10.1. Файлы. Виды файлов. Типизированные файлы.
- •Тема 10.2. Процедуры и функции для работы с типизированными файлами.
- •Тема 10.3. Процедуры и функции работы с файлами. Решение задач.
- •Тема 10.4. Тeкстовые файлы, их описание и основные отличия от типизированных файлов.
- •Тема 10.5. Способы обмена с текстовыми файлами.
- •Раздел 11. Стандартные модули.
- •Тема 11.1. Стандартные процедуры и функции модулей crt и dos. Обработка прерываний.
- •Тема 11.2. Стандартные процедуры и функции Unit Graph. Методы создания анимации.
- •Тема 11.3. Создание библиотечных модулей.
- •Раздел 12. Динамические переменные и структуры данных.
- •Тема 12.1. Динамические структуры данных и их организация с помощью указателей.
- •Тема 12.2. Представление деревьев. Основные операции над деревом.
- •Тема 12.3. Стек. Отличия стека от списка. Основные операции со стеком.
- •Тема 12.4. Очереди. Основные операции над очередью.
- •Тема 12.5. Кольцо. Формирование кольца. Основные операции над кольцом.
- •Тема 12.6. Список. Создание списка путем добавления элементов в конец списка. Просмотр списка.
- •Тема 12.7. Динамические структуры данных. Статические и динамические переменные. Адреса. Указатели и их объявление.
- •Раздел 1. Основные принципы алгоритмизации. Тема 1.1. Алгоритм, свойства алгоритма. Способы описания алгоритмов. Базовые алгоритмические конструкции.
- •Формы записи алгоритма.
- •Тема 1.2. Языки программирования и их классификация. Этапы решения задач на компьютере .
- •Раздел 2. Основные понятия языка программирование Turbo Pascal . Тема 2.1 Среда программирования Турбо Паскаль. Операторы ввода-вывода.
- •Оператор присваивания. Арифметические выражения
- •Основные определения. Типы данных.
- •Операторы Write и WriteLn
- •Операторы Read и ReadLn
- •Тема 2.2. Типы данных. Стандартные функции и процедуры.
- •I Арифметические функции
- •II Функции преобразования типов
- •III Функции для порядковых типов
- •IV Процедуры для порядковых типов
- •Лабораторная работа №1. Линейные программы.
- •Лабораторная работа №2. Составление простейших программ. Вычисления по формулам.
- •Раздел 3. Работа с графическим модулем . Тема 3.1. Текстовый и графический режимы работы монитора. Выбор и переключение графического режима в языке Pascal .
- •1) Инициализация графики, подготовительные работы, управление цветом, закрытие режима:
- •Система координат в графическом режиме.
- •Тема 3.2. Рисование простых графических элементов (линия, точка, прямоугольник). Цвет объектов. Графический шрифт. Вывод текста
- •Лабораторная работа №3. Графические возможности Турбо Паскаль.
- •Тема 4.2. Вложенные условные операторы. Решение задач.
- •Лабораторная работа №4. Разветвляющиеся вычислительные процессы. Условный оператор if.
- •Лабораторная работа №5. Применение условных операторов в решении задач.
- •Тема 4.3. Оператор выбора case. Решение задач.
- •Оператор безусловного перехода Goto. Решение задач.
- •Лабораторная работа №6. Программирование разветвляющихся алгоритмов
- •Тема 4.4. Циклические алгоритмы. Операторы организации циклов. Простой и составной оператор (4 часа)
- •Общая форма записи цикла со счетчиком
- •Лабораторная работа №7.
- •Лабораторная работа №8.
- •Индивидуальные задания.
- •Лабораторная работа №9.
- •Цикл с предусловием while
- •Лабораторная работа №10.
- •Индивидуальное задание
- •Тема 4.5. Цикл с предусловием в графике.
- •Задачи для самостоятельного решения
- •Раздел 5. Процедуры и функции. Тема 5.1.Глобальные и локальные переменные. Парадигма модульного программирования.
- •Тема 5.2. Процедуры. Входные и выходные данные процедуры.
- •Задачи для самостоятельного решения
- •Лабораторная работа №11.
- •Решение задач
- •Тема 5.3. Функции. Отличие функции от процедуры. Тип функции.
- •Общий вид (формат) функции
- •Различие между процедурами и функциями.
- •Задачи для самостоятельного решения
- •Лабораторная работа №12.
- •Актуализация опорных знаний
- •Пример выполнения задания
- •Индивидуальные задания.
- •Тема5.4. Рекурсия. Примеры задач рекурсивного решения в текстовом и графическом режимах.
- •Лабораторная работа № 13.
- •Задания
- •Лабораторная работа №14.
- •Решение задач по вариантам.
- •Раздел 6. Массивы. Стандартные алгоритмы на массивах. Тема 6.1. Одномерные массивы. Способы задания одномерных массивов. Обработка массива.
- •Способы задания одномерных массивов
- •Типичные задачи на обработку массивов.
- •Лабораторная работа №15. Тема: Одномерные массивы
- •Описание массива
- •Лабораторная работа №16.
- •Тема 6.2. Двумерные массивы. Действия с двумерными массивами.
- •Лабораторная работа №17.
- •Лабораторная работа №18.
- •Актуализация опорных знаний
- •Пример выполнения задания
- •Индивидуальные задания.
- •Тема 6.3. Методы сортировки массивов.
- •Лабораторная работа № 19.
- •Пример выполнения задания
- •Индивидуальные задания
- •Лабораторная работа №20.
- •Раздел 7. Символы и строки. Процедуры и функции работы со строками.
- •Тема 7.1. Символьный тип данных. Функции работы с символами.
- •Тема 7.2. Строки. Тип string. Сравнение строк. Понятие подстроки.
- •Лабораторная работа №21.
- •Тема 7.3. Процедуры и функции работы со строками.
- •Лабораторная работа №22.
- •Лабораторная работа № 23.
- •7.4. Обязательная контрольная работа.
- •Раздел 8. Множества. Тема 8.1. Множество. Элемент множества. Способы задания множества.
- •Лабораторная работа №24.
- •Тема 8.2. Операции над множествами.
- •Лабораторная работа №25. Тема: Множества. (Продолжение)
- •Раздел 9. Записи. Тема 9.1. Определение и правила записи.
- •Лабораторная работа №26.
- •Тема 9.2. Записи с вариантами.
- •Лабораторная работа № 27-28.
- •Раздел 10. Файлы. Тема 10.1. Файлы. Виды файлов. Типизированные файлы.
- •План урока
- •Тема 10.2. Процедуры и функции для работы с типизированными файлами.
- •Функция ioResult
- •Лабораторная работа № 29.
- •Актуализация опорных знаний
- •Пример выполнения задания
- •Задания
- •Тема 10.3. Процедуры и функции работы с файлами. Решение задач. Лабораторная работа №30. Тема: Разработка программ обработки созданных файлов.
- •Актуализация опорных знаний
- •Пример выполнения задания
- •Лабораторная работа № 31. Тема: Разработка программ обработки созданных файлов.
- •Актуализация опорных знаний
- •Пример выполнения задания
- •Тема 10.4. Тeкстовые файлы, их описание и основные отличия от типизированных файлов.
- •План урока
- •Тема 10.5. Способы обмена с текстовыми файлами.
- •I Операции чтения из файла
- •II Операции записи в файл
- •III Логическая функция Eoln
- •IV Процедура открытия файла для дополнения
- •Лабораторная работа №32.
- •Лабораторная работа № 33.
- •Актуализация опорных знаний
- •Раздел 11. Стандартные модули. Тема 11.1. Стандартные процедуры и функции модулей crt и dos. Обработка прерываний.
- •План урока
- •Процедуры управления звуком
- •Функции работы с клавиатурой
- •Лабораторная работа № 34.
- •Актуализация опорных знаний
- •Задания
- •Тема 11.2. Стандартные процедуры и функции Unit Graph. Методы создания анимации.
- •2. Установка цвета
- •3. Управление экраном
- •4. Работа с точками изображения
- •Лабораторная работа № 35.
- •Актуализация опорных знаний
- •Задания
- •Тема 11.3. Создание библиотечных модулей.
- •Лабораторная работа № 36. Тема: Разработка алгоритмов и программ решения различных задач с использованием библиотечных модулей пользователя.
- •Актуализация опорных знаний
- •Раздел 12. Динамические переменные и структуры данных. Тема 12.1. Динамические структуры данных и их организация с помощью указателей. (4 часа)
- •Указатели и их объявление
- •Оператор @ с переменной
- •Оператор @ с параметром процедуры, переданным по значению
- •Оператор @ с параметром процедуры, переданным по ссылке
- •Тема 12.2. Представление деревьев. Основные операции над деревом.
- •Представление деревьев. Основные операции над деревом.
- •Лабораторная работа № 37.
- •Тема 12.3. Стек. Отличия стека от списка. Основные операции со стеком.
- •Занесение элемента в стек
- •Извлечение элемента из стека
- •Примеры решения задач.
- •Лабораторная работа № 38.
- •Актуализация опорных знаний
- •Примеры выполнения заданий
- •Задания
- •Тема 12.4. Очереди. Основные операции над очередью.
- •Занесение элемента в очередь
- •Извлечение элемента из очереди
- •Примеры решения задач
- •Лабораторная работа № 39.
- •Задания
- •Тема 12.5. Кольцо. Формирование кольца. Основные операции над кольцом.
- •Формирование кольца
- •Обход кольца
- •Лабораторная работа № 40. Тема. Примеры решения задач с применением динамической структуры кольцо. Творческая работа.
- •Тема 12.6. Список. Создание списка путем добавления элементов в конец списка. Просмотр списка.
- •Лабораторная работа № 41. Тема. Примеры задач, решаемых с помощью списка. Решение задач.
- •Лабораторная работа № 42.
- •Экзаменационные вопросы по дисциплине: «Основы алгоритмизации и программирования»
- •Перечень практических задач для подготовки к экзамену.
Лабораторная работа № 37.
Тема: Разработка алгоритмов и программ с использованием динамических массивов.
Цель работы: Научиться разрабатывать алгоритмы и программы с использованием динамических массивов.
Средства: ПЭВМ, среда разработки Pascal.
Актуализация опорных знаний
1. Статическое и динамическое распределение памяти.
2. Понятие указателя.
3. Описание и обработка динамических массивов.
Примеры выполнения заданий
Задание 1: Разработать алгоритм и программу решения задачи, в которой необходимо вычислить сумму неотрицательных чисел и подсчитать количество нулевых элементов в динамическом одномерном массиве B.
Текст программы
Program L15_1;
Uses Crt;
Type
mas=array[1..20] of real;
Var
b:^mas;
n,i,k:integer;
s:extended;
Begin
clrscr;
new(b);
write(‘Введите размерность массива N’);
readln(n);
for i:=1 to n do
begin
write(‘Введите элемент массива b[’,i,’]’);
readln(b^[i]);
end;
s:=0; k:=0;
for i:=1 to n do
begin
if b^[i]>0 then s:=s+b^[i];
if b^[i]=0 then k:=k+1;
end;
dispose(b);
writeln(‘S= ’,sr8:4,’ k=’,k);
End.
Задание 2: Разработать алгоритм и программу решения задачи, в которой необходимо подсчитать количество положительных элементов массива, лежащих выше главной диагонали в двумерном динамическом массиве A(N,N).
Текст программы
Program L15_2;
Uses Crt;
Type
mas=array[1..20] of real;
mas2=array[1..20] of ^mas;
Var
a:^mas2;
i,j,n,k:integer;
Begin
clrscr;
write(‘Введите размерность массива N’);
readln(n);
new(a);
for i:=1 to n do
new(a^[i]);
for i:=1 to n do
for j:=1 to n do
begin
write(‘Введите элемент массива a[’,i,’ ’,j,’]’);
readln(a^[i]^[j]);
end;
k:=0;
for i:=1 to n do
for j:=1 to n do
if (j>i) and (a^[i]^[j]>0) then k:=k+1;
write(‘k= ’,k);
for i:=1 to n do
dispose(a^[i]);
dispose(a);
End.
Задания
1. Разработать алгоритмы и программы решения задач:
a) найти среднее арифметическое элементов каждого из столбцов двумерного динамического массива A[N,N], состоящего из элементов целого типа.
b) заменить нулями все элементы, расположенные на побочной диагонали двумерного динамического массива A[N,N], состоящего из элементов целого типа.
2. Разработать алгоритмы и программы решения задач:
a) найти среднее арифметическое из всех отрицательных элементов двумерного динамического массива A[N,N], состоящего из элементов целого типа.
b) заменить нулями все элементы, расположенные на главной диагонали и ниже ее двумерного динамического массива A[N,N], состоящего из элементов целого типа.
3. Разработать алгоритмы и программы решения задач:
a) найти сумму и произведение всех положительных элементов двумерного динамического массива A[N,N], состоящего из элементов целого типа.
b) заменить нулями все элементы, расположенные на главной диагонали и выше ее двумерного динамического массива A[N,N], состоящего из элементов целого типа.
4. Разработать алгоритмы и программы решения задач:
a) найти сумму и произведение всех отрицательных элементов двумерного динамического массива A[N,N], состоящего из элементов целого типа.
b) заменить нулями все элементы, расположенные на побочной диагонали и выше ее двумерного динамического массива A[N,N], состоящего из элементов целого типа.
5. Разработать алгоритмы и программы решения задач:
a) найти сумму всех элементов двумерного динамического массива A[N,N], состоящего из элементов вещественного типа и заменить ею элементы главной диагонали.
b) заменить нулями все элементы, расположенные на побочной диагонали и ниже ее двумерного динамического массива A[N,N], состоящего из элементов целого типа.
6. Разработать алгоритмы и программы решения задач:
a) найти произведение всех положительных элементов двумерного динамического массива A[N,N], состоящего из элементов целого типа и заменить им элементы главной диагонали.
b) найти сумму всех элементов, расположенных на побочной диагонали и выше ее двумерного динамического массива A[N,N], состоящего из элементов целого типа.
7. Разработать алгоритмы и программы решения задач:
a) найти сумму наименьших элементов каждой строки двумерного динамического массива A[N,N], состоящего из элементов целого типа.
b) найти сумму всех элементов, расположенных на побочной диагонали и ниже ее двумерного динамического массива A[N,N], состоящего из элементов целого типа.
8. Разработать алгоритмы и программы решения задач:
a) найти количество отрицательных элементов в каждой строке двумерного динамического массива A[N,N], состоящего из элементов целого типа.
b) найти сумму всех элементов, расположенных на главной диагонали и выше ее матрицы двумерного динамического массива A[N,N], состоящего из элементов целого типа.
9. Разработать алгоритмы и программы решения задач:
a) получить новый двумерный динамический массив путем деления всех элементов двумерного динамического массива A[N,N], состоящего из элементов вещественного типа не равных нулю, на его наибольший по модулю элемент.
b) найти сумму всех элементов, расположенных на главной диагонали и ниже ее двумерного динамического массива A[N,N], состоящего из элементов целого типа.
10. Разработать алгоритмы и программы решения задач:
a) найти количество отрицательных элементов в каждом столбце двумерного динамического массива A[N,N], состоящего из элементов целого типа.
b) найти произведение всех элементов, расположенных на побочной диагонали и выше ее двумерного динамического массива A[N,N], состоящего из элементов целого типа.
11. Разработать алгоритмы и программы решения задач:
a) найти сумму элементов столбца, в котором расположен наименьший элемент двумерного динамического массива A[N,N], состоящего из элементов целого типа.
b) найти произведение всех элементов, расположенных на побочной диагонали и ниже ее двумерного динамического массива A[N,N], состоящего из элементов целого типа
12. Разработать алгоритмы и программы решения задач:
a) получить двумерный динамический массив путем умножения всех элементов двумерного динамического массива A[N,N], состоящего из элементов целого типа, на его наибольший по модулю элемент.
b) найти сумму элементов строки, в которой расположен наименьший элемент в двумерного динамического массива A[N,N], состоящего из элементов целого типа.
13. Разработать алгоритмы и программы решения задач:
a) заменить нулями все элементы, расположенные на главной диагонали двумерного динамического массива A[N,N], состоящего из элементов целого типа.
b) найти произведение всех элементов, расположенных на главной диагонали и ниже ее двумерного динамического массива A[N,N], состоящего из элементов целого типа
14. Разработать алгоритмы и программы решения задач:
a) сформировать одномерный динамический массив из суммы элементов строк двумерного динамического массива A[N,N], состоящего из элементов целого типа.
b) найти произведение всех элементов, расположенных на главной диагонали и выше ее двумерного динамического массива A[N,N], состоящего из элементов целого типа
15. Разработать алгоритмы и программы решения задач:
a) сформировать одномерный динамический массив из разностей наибольших и наименьших значений элементов строк двумерного динамического массива A[N,N], состоящего из элементов целого типа.
b) найти сумму всех элементов, расположенных ниже побочной диагонали двумерного динамического массива A[N,N], состоящего из элементов целого типа.
16. Разработать алгоритмы и программы решения задач:
a) найти среднее арифметическое элементов каждой строки двумерного динамического массива A[N,N], состоящего из элементов целого типа.
b) найти сумму всех элементов, расположенных ниже главной диагонали двумерного динамического массива A[N,N], состоящего из элементов целого типа .