
- •Рецензент: старший преподаватель кафедры прикладной информатики зип СибУпк ю. Е. Хохлова.
- •1. Общие положения
- •1.1. Цель и задачи дисциплины, ее место в учебном процессе
- •1.2. Требования к уровню освоения содержания дисциплины
- •2. Основные вопросы курса
- •Тема 5. Структуры данных
- •Тема 6. Сортировка
- •Тема 7. Поиск
- •Тема 8. Объектно-ориентированное программирование
- •Тема 9. Событийное программирование
- •Тема 10. Параллельные вычислительные технологии
- •3. Методические указания по самостоятельному изучению тем
- •Тема 1. Общее понятие алгоритма.
- •Тема 2. Основные конструкции программирования
- •Тема 3. Теория алгоритмов
- •Тема 4. Рекурсия
- •Тема 5. Структуры данных
- •Тема 6. Сортировка
- •Тема 7. Поиск
- •Тема 8. Объектно-ориентированное программирование
- •Тема 9. Событийное программирование
- •Тема 10. Параллельные вычислительные технологии
- •Какая система может быть отнесена к параллельной вычислительной системе?
- •4. Правила выполнения и оформления
- •Если рецензент предлагает внести в содержание контрольной работы те или иные исправления или дополнения и прислать их для повторной проверки, то это следует сделать в короткий срок.
- •5. Правила выбора варианта
- •6. Методические указания
- •7. Задания контрольной работы
- •В авторской редакции
5. Правила выбора варианта
Вариант контрольной работы определяется по таблице в зависимости от последней цифры номера шифра личного дела студента (зачетки).
Будьте внимательны при выборе варианта. Работа, выполненная не по своему варианту, возвращается без проверки.
Последняя цифра шифра |
Номер варианта |
1 |
1 |
2 |
2 |
3 |
3 |
4 |
4 |
5 |
5 |
6 |
6 |
7 |
7 |
8 |
8 |
9 |
9 |
0 |
10 |
Например, шифр зачетной книжки ПИБ-12-123, что соответствует 3 номеру задания.
6. Методические указания
по ВЫПОЛНЕНИЮ КОНТРОЛЬНОЙ РАБОТЫ
Приступая к самостоятельному выполнению контрольной работы, студенты должны изучить основные вопросы программы, приведенные выше, пользуясь материалами установочных лекций и рекомендованной литературой. Контрольная работа состоит из семи заданий, которые следует реализовать на языке программирования Компонентный Паскаль.
7. Задания контрольной работы
Вариант 1
Задача 1. Даны два ненулевых числа. Найти их сумму, разность, произведение и частное.
Задача 2. Даны три целых числа. Возвести в квадрат отрицательные числа и в третью степень – положительные (число 0 не изменять).
Задача 3. Дана целочисленная матрица размера M x N. Различные строки (столбцы) матрицы назовем похожими, если совпадают множества чисел, встречающихся в этих строках (столбцах). Найти количество строк1|столбцов2, похожих на первую3|последнюю4 строку1|столбец2.
Задача 4. Описать функцию IsIdent(S) целого типа, проверяющую, является ли строка S допустимым идентификатором Паскаля. При утвердительном ответе возвращается 0. Если S является пустой строкой, то возвращается –1, если строка начинается с цифры, то возвращается –2. Если S содержит недопустимые символы, то возвращается номер первого недопустимого символа. Проверить с помощью этой функции пять данных строк.
Задача 5. Описать процедуру UpCase1(S)1 | LowCase1(S)2, преобразующую все строчные | прописные буквы строки S в прописные | строчные (остальные символы строки S не изменяются). Используя эту процедуру, преобразовать шесть данных строк.
Задача 6. Описать рекурсивные функции Fact(N) и Fact2(N) вещественного типа, вычисляющие значения факториала N! и двойного факториала N!! соответственно (N > 0 — параметр целого типа). С помощью этих функций вычислить факториалы и двойные факториалы пяти данных чисел.
Задача 7. Проверить правильность расстановки скобок в строке S. Текст в строке S определяется следующим образом: <текст> ::= <элемент> | <элемент><текст> <элемент> ::= a | b | c | (<текст>) | [<текст>] | {<текст>} Если текст составлен правильно, то вывести True, иначе вывести False.
Вариант 2
Задача 1. Даны два числа. Найти среднее арифметическое их квадратов и среднее арифметическое их модулей.
Задача 2. Из трех данных чисел выбрать наименьшее.
Задача 3. Дан номер месяца (1 – январь, 2 – февраль, ...). Вывести название соответствующего времени года («зима», «весна» и т. д.).
Задача 4. Дано число k (0 < k < 11) и матрица размера 4 x 10. Найти сумму и произведение элементов k-го столбца данной матрицы.
Задача 5. Описать функцию FillStr(S,Len) строкового типа, возвращающую строку длины Len, заполненную повторяющимися копиями строки-шаблона S (последняя копия строки-шаблона может входить в результирующую строку частично). Используя эту функцию, сформировать по данному числу Len и пяти данным строкам-шаблонам пять результирующих строк длины Len.
Задача 6. Описать рекурсивную функцию PowerN(x,n) вещественного типа, находящую значение n-й степени числа x по формуле: x0 = 1, xn = x * xn – 1 при n > 0, xn = 1 / x – n при n < 0 (x > = 0 – вещественное число, n – целое). С помощью этой функции найти значения XN при 5 различных значениях N для данного X.
Задача 7. Вывести значение логического выражения, заданного в виде строки S. Выражение определяется следующим образом («T» – True, «F» – False): <выражение> ::= T | F | And(<операнды>) | Or(<операнды>) | Not(<выражение>) <операнды> ::= <выражение> | <выражение>,<операнды>.
Вариант 3
Задача 1. Скорость лодки в стоячей воде V км/ч, скорость течения реки U км/ч (U < V). Время движения лодки по озеру T1 ч, а по реке (против течения) – T2 ч. Определить путь S, пройденный лодкой.
Задача 2. Перераспределить значения переменных X и Y так, чтобы в X оказалось меньшее из этих значений, а в Y – большее.
Задача 3. Дан номер месяца (1 – январь, 2 – февраль, ...). Вывести число дней в этом месяце для невисокосного года.
Задача 4. Дана матрица размера 5 x 9. Найти суммы элементов всех ее четных 1 | нечетных 2 строк 3 | столбцов 4.
Задача 5. Описать процедуру UpCase1(S)1 | LowCase1(S)2, преобразующую все строчные 1 | прописные 2 буквы строки S в прописные 1 | строчные 2 (остальные символы строки S не изменяются). Используя эту процедуру, преобразовать пять данных строк.
Задача 6. Описать рекурсивную функцию SqrtK(x,k,n) вещественного типа, находящую приближенное значение корня k-й степени из числа x по формуле: y(0) = 1, y(n+1) = y(n) – (y(n) – x / y(n)k–1) / k, где y(n) обозначает SqrtK(x,k,n) (x – вещественный параметр, k и n – целые; x > 0, k > 1, n > 0). С помощью этой функции найти приближенные значения корня K-й степени из X при 6 различных значениях N для данных X и K.
Задача 7. Вывести значение логического выражения, заданного в виде строки S. Выражение определяется следующим образом («T» – True, «F» – False): <выражение> ::= T | F | And(<операнды>) | Or(<операнды>) <операнды> ::= <выражение> | <выражение>,<операнды>.
Вариант 4
Задача 1. Скорость первого автомобиля V1 км/ч, второго – V2 км/ч, расстояние между ними S км. Определить расстояние между ними через T часов, если автомобили удаляются друг от друга.
Задача 2. Значения переменных X, Y, Z поменять местами так, чтобы они оказались упорядоченными по возрастанию.
Задача 3. Дано целое число в диапазоне 0 – 9. Вывести строку – название соответствующей цифры на русском языке (0 – «ноль», 1 – «один», 2 – «два», ...).
Задача 4. Дана матрица размера 5 x 10. Найти минимальное 1 | максимальное 2 значение в каждой строке 3 | столбец 4.
Задача 5. Описать процедуру TrimL(S)1 |TrimR(S)2| Trim(S)3, удаляющую в строке S начальные 1 | конечные 2 | [начальные и конечные] 3 пробелы. Используя эту процедуру, преобразовать пять данных строк.
Задача 6. Описать рекурсивную функцию FibRec(N) целого типа, вычисляющую N-е число Фибоначчи F(N) по формуле: F(1) = F(2) = 1, F(k) = F(k–2) + F(k–1), k = 3, 4, ... . С помощью этой функции найти пять чисел Фибоначчи с указанными номерами.
Задача 7. Вывести значение логического выражения, заданного в виде строки S. Выражение определяется следующим образом («T» – True, «F» – False): <выражение> ::= T | F | And(<операнды>) | Or(<операнды>) <операнды> ::= <выражение>,<выражение>.
Вариант 5
Задача 1. Скорость первого автомобиля V1 км/ч, второго – V2 км/ч, расстояние между ними S км. Определить расстояние между ними через T часов, если автомобили первоначально движутся навстречу друг другу.
Задача 2. Даны две переменные целого типа: A и B. Если их значения не равны, то присвоить каждой переменной максимальное из этих значений, а если равны, то присвоить переменным нулевые значения.
Задача 3. Дано целое число в диапазоне 1 – 5. Вывести строку – словесное описание соответствующей оценки (1 – «плохо», 2 – «неудовлетворительно», 3 – «удовлетворительно», 4 – «хорошо», 5 – «отлично»).
Задача 4. Дана матрица размера 5 x 10. В каждой строке1|столбце2 найти количество элементов, больших3|меньших4 среднего арифметического всех элементов этой строки1|столбца2.
Задача 5. Описать функцию PosLast(subS,S) целого типа, возвращающую номер позиции, с которой в строке S содержится последнее вхождение подстроки subS. Если в строке S отсутствуют подстроки subS, то функция возвращает 0. Вывести значения этой функции для пяти данных пар subS и S.
Задача 6. Описать рекурсивную функцию C(m,n) целого типа, находящую число сочетаний из n элементов по m, используя формулу: C(0,n) = C(n,n) = 1, C(m,n) = C(m,n–1) + C(m–1,n–1) при 0 < m < n (m и n — целые параметры; n > 0, 0 <= m <= n). Дано число N и пять различных значений M. Вывести числа C(M,N) вместе с количеством рекурсивных вызовов функции C, потребовавшихся для их нахождения.
Задача 7. Проверить правильность выражения, заданного в виде строки S (выражение определяется по тем же правилам, что и в задании Proc73). Если выражение составлено правильно, то вывести 0, в противном случае вывести номер первого ошибочного (или лишнего) символа в строке S.
Вариант 6
Задача 1. Найти периметр и площадь прямоугольного треугольника, если даны длины его катетов a и b.
Задача 2. Даны две переменные целого типа: A и B. Если их значения не равны, то присвоить каждой переменной максимальное из этих значений, а если равны, то присвоить переменным нулевые значения.
Задача 3. Арифметические действия над числами пронумерованы следующим образом: 1 – сложение, 2 – вычитание, 3 – умножение, 4 – деление. Дан номер действия и два числа A и B (В не равно нулю). Выполнить над числами указанное действие и вывести результат.
Задача 4. Дана матрица размера 5 x 10. Преобразовать матрицу, поменяв местами минимальный и максимальный элемент в каждой строке 1 | столбце 2.
Задача 5. Описать функцию PosK(subS,S,k) целого типа, возвращающую mnlep позиции, с которой в строке S содержится k-е вхождение подстроки subS (k > 0). Если количество вхождений subS в строке S меньше k, то функция возвращает 0. Вывести значения этой функции для пяти данных троек: k, subS и S.
Задача 6. Описать рекурсивную функцию NOD(A,B) целого типа, находящую наибольший общий делитель двух натуральных чисел A и B, используя алгоритм Евклида: NOD(A,B) = NOD(B mod A,A), если A <> 0; NOD(0,B) = B. С помощью этой функции найти наибольшие общие делители пар A и B, A и C, A и D, если даны числа A, B, C, D.
Задача 7. Проверить правильность выражения, заданного в виде строки S (выражение определяется по тем же правилам, что и в задании Proc73). Если выражение составлено правильно, то вывести True, иначе вывести False.
Вариант 7
Задача 1. Дана длина ребра куба. Найти площадь грани, площадь полной поверхности и объем этого куба.
Задача 2. Значения переменных X, Y, Z поменять местами так, чтобы они оказались упорядоченными по убыванию.
Задача 3. Единицы длины пронумерованы следующим образом: 1 – дециметр, 2 – километр, 3 – метр, 4 – миллиметр, 5 – сантиметр. Дан номер единицы длины и длина отрезка L в этих единицах (вещественное число). Вывести длину данного отрезка в метрах.
Задача 4. Дана матрица размера 5 x 10. Найти минимальное 1 | максимальное 2 значение среди сумм элементов всех ее строк 3 | столбцов 4 и номер строки 3 | столбца 4 с этим минимальным 1 | максимальным 2 значением.
Задача 5. Описать функцию WordN(S,k) строкового типа, возвращающую k-е слово строки S (под словом понимается набор символов, не содержащий пробелов и ограниченный пробелами или началом/концом строки). Если количество слов в строке меньше k, то функция возвращает пустую строку. Используя эту функцию, выделить из данной строки S слова с номерами k1, k2, k3.
Задача 6. Описать рекурсивную функцию MinRec(A,N)1|MaxRec(A,N)2 вещественного типа, которая находит минимальный 1 | максимальный 2 элемент вещественного массива A размера N, не используя оператор цикла. С помощью функции MinRec1|MaxRec2 найти минимальные 1 | максимальные 2 элементы массивов A, B, C размера NA, NB, NC соответственно.
Задача 7. Вывести значение целочисленного выражения, заданного в виде строки S. Выражение определяется следующим образом: <выражение> ::= <цифра> | (<выражение><знак><выражение>) <знак> ::= + | – | *.
Вариант 8
Задача 1. Найти длину окружности и площадь круга заданного радиуса R. В качестве значения Pi использовать 3,14.
Задача 2. Даны три переменные: X, Y, Z. Если их значения упорядочены по возрастанию или убыванию, то удвоить их; в противном случае заменить значение каждой переменной на противоположное.
Задача 3. Единицы массы пронумерованы следующим образом: 1 – килограмм, 2 – миллиграмм, 3 – грамм, 4 – тонна, 5 – центнер. Дан номер единицы массы и масса тела M в этих единицах (вещественное число). Вывести массу данного тела в килограммах.
Задача 4. Дана матрица размера 5 x 10. Найти минимальный 1 | максимальный 2 среди максимальных 1 | минимальных 2 элементов каждой строки 3 | столбца 4.
Задача 5. Описать процедуру SplitStr(S,W,N), которая формирует по данной строке S набор слов W, входящих в S (W – выходной строковый массив; N – его размер; предполагается, что N не будет превышать 10). Под словом понимается набор символов, не содержащий пробелов и ограниченный пробелами или началом/концом строки. Используя эту функцию, вывести количество слов N, содержащихся в данной строке S, и сами эти слова.
Задача 6. Описать рекурсивную функцию Digits(S) целого типа, находящую количество цифр в строке S без использования оператора цикла. С помощью этой функции найти количество цифр в данных пяти строках.
Задача 7. Вывести значение целочисленного выражения, заданного в виде строки S. Выражение определяется следующим образом: <выражение> ::= <терм> | <выражение>+<терм> | <выражение>–<терм> <терм> ::= <элемент> | <терм>*<элемент> <элемент> ::= <цифра> | (<выражение>).
Вариант 9
Задача 1. Найти площадь кольца, внутренний радиус которого равен R1, а внешний радиус равен R2 (R1 < R2). В качестве значения Pi использовать 3.14.
Задача 2. Даны целочисленные координаты точки на плоскости. Если точка не лежит на координатных осях, то вывести 0. Если точка совпадает с началом координат, то вывести 1. Если точка не совпадает с началом координат, но лежит на оси OX или OY, то вывести соответственно 2 или 3.
Задача 3. Робот может перемещаться в четырех направлениях («С» – север, «З» – запад, «Ю» – юг, «В» – восток) и принимать три цифровые команды: 0 – продолжать движение, 1 – поворот налево, –1 – поворот направо. Дан символ C – исходное направление робота и число N – посланная ему команда. Вывести направление робота после выполнения полученной команды.
Задача 4. Дана целочисленная матрица размера 5 x 10. Вывести номер ее первой 1 | последней 2 строки 3 | столбца 4, содержащего равное количество положительных и отрицательных элементов (нулевые элементы не учитываются). Если таких строк 3 | столбцов 4 нет, то вывести 0.
Задача 5. Описать функцию DecToBin(N)1 | DecToHex(N)2 строкового типа, которая возвращает строковое представление целого неотрицательного числа N в двоичной 1 | 16-ричной 2 системе счисления. Результирующая строка состоит из символов ['0'–'1']1|['0'–'9', 'A'–'F']2 и не содержит ведущих нулей (за исключением представления числа 0). Используя эту функцию, получить двоичные 1 | 16-ричные 2 представления данных пяти чисел.
Задача 6. Описать рекурсивную функцию Simm(S) логического типа, проверяющую, является ли симметричной строка S, без использования оператора цикла. С помощью этой функции проверить данные пять строк.
Задача 7. Вывести значение целочисленного выражения, заданного в виде строки S. Выражение определяется следующим образом: <выражение> ::= <терм> | <выражение>+<терм> | <выражение>–<терм> <терм> ::= <цифра> | <терм>*<цифра>.
Вариант 10
Задача 1. Дана сторона равностороннего треугольника. Найти площадь этого треугольника и радиусы вписанной и описанной окружностей.
Задача 2. Даны вещественные координаты точки, не лежащей на координатных осях OX и OY. Вывести номер координатной четверти, в которой находится данная точка.
Задача 3. Локатор ориентирован на одну из сторон света («С» – север, «З» – запад, «Ю» – юг, «В» – восток) и может принимать три цифровые команды: 1 – поворот налево, –1 –поворот направо, 2 – поворот на 180 градусов. Дан символ C – исходная ориентация локатора и числа N1 и N2 – две посланные ему команды. Вывести ориентацию локатора после выполнения данных команд.
Задача 4. Дана матрица размера 5 x 10. Вывести номер ее первой 1 | последней 2 строки 3 | столбца 4, содержащего только положительные элементы. Если таких строк 3 | столбцов 4 нет, то вывести 0.
Задача 5. Описать функцию BinToDec(S)1| HexToDec(S)2 целого типа, которая определяет целое неотрицательное число по его строковому представлению S в двоичной 1 | 16-ричной 2 системе счисления. Параметр S имеет тип string, состоит из символов ['0'–'1']1|['0'–'9', 'A'–'F']2 и не содержит ведущих нулей (за исключением значения '0'). Используя эту функцию, вывести пять чисел, для которых даны их двоичные 1 | 16-ричные 2 представления.
Задача 6. Описать рекурсивные функции Fact(N) и Fact2(N) вещественного типа, вычисляющие значения факториала N! и двойного факториала N!! соответственно (N > 0 – параметр целого типа). С помощью этих функций вычислить факториалы и двойные факториалы пяти данных чисел.
Задача 7. Вывести значение целочисленного выражения, заданного в виде строки S. Выражение определяется следующим образом: <выражение> ::= <цифра> | <выражение>+<цифра> | <выражение>–<цифра>.
Библиографический список
Основная литература
Гаврилов, М. В. Информатика и информационные технологии : учебник для бакалавров / М. В. Гаврилов, В. А. Климов. – 2-е изд., испр. и доп. – М. : Юрайт, 2012. – 350 с.
Гуда, А. Н. Информатика. Общий курс : учебник / А. Н. Гуда, М. А. Бутакова, Н. М. Нечитайло ; ред. В. И. Колесников. – 3-е изд. – М. ; Ростов-на-Дону : Дашков и К, Наука-Спектр, 2009. – 400 с.
Кузнецова, Т. Н. Объектно-ориентированное программирование : лекция / Т. Н. Кузнецова. – Чита : ЗИП Сиб УПК, 2008. – 28 с.
Дополнительная литература
Гагарина, Л. Г. Введение в теорию алгоритмических языков и компиляторов : учебное пособие / Л. Г. Гагарина, Е. В. Кокорина. – М. : Высшее образование, 2011. – 176 с.
Гринченков, Д. В. Математическая логика и теория алгоритмов для программистов : учеб. пособие / Д. В. Гринченков, С. И. Потоцкий. – М. : КноРус, 2010. – 208 с.
Иванова, Г. С. Технология программирования : учебник для вузов / Г. С. Иванова. – М. : КноРус, 2011. – 336 с.
Костюкова, Н. И. Графы и их применение. Комбинаторные алгоритмы для программистов : учеб. пособие / Н. И. Костюкова. – М. : БИНОМ, 2010. – 311 с.
Пратт Т. Языки программирования. Разработка и реализация / Т. Пратт, М. Зельковиц. – СПб. : Питер, 2008. – 564 с.
Учебно-методическое издание
Гомбоев Леонид Гындунович
ВВЕДЕНИЕ В ТЕОРИЮ АЛГОРИТМОВ И
АЛГОРИТМИЧЕСКИЕ ЯЗЫКИ
Методические указания и задания
к выполнению контрольной работы
для студентов заочной формы обучения
Направление 230700.62 Прикладная информатика
Профиль «Прикладная информатика в информационной сфере»