
- •A. Государственный образовательный стандарт
- •B. Рабочая программа учебной дисциплины b.1. Цели и задачи дисциплины, ее место в учебном процессе
- •B.2. Протокол согласования рабочей программы с другими дисциплинами специальности на 200_ учебный год
- •B.3. Объем дисциплины и виды учебной работы
- •B.4. Содержание дисциплины b.4.1.Тематический план
- •B.4.2. Лекционный курс
- •B.4.3. Лабораторный практикум
- •B.4.4. Самостоятельная работа студентов
- •B.5. Список рекомендуемой литературы для изучения дисциплины
- •B.6. Вопросы к экзамену
- •B.9. Тематический план
- •C.2.Технические и программные средства реализации информационных процессов.
- •C3. Модели решения функциональных и вычислительных задач. Алгоритмизация и программирование. Алгоритмы, классы, типы, свойства алгоритмов, Языки программирования высокого уровня (обзор).
- •C.4. Тема 4. Основы и методы защиты информации.
- •C.5. Тема 5.Компьютерный практикум.
- •C.9. Тема 9. Постановка задачи и спецификация программы. Способы записи алгоритмов. Стандартные типы данных.
- •5. Описание процедур и функций. Этот вопрос рассматривается в пункте 6.
- •C.10.5. Лекция 5 (1час) Понятие рекурсии, примеры рекурсивных задач и программ с рекурсивными вызовами процедур и функций.
- •C.10.7. Лекция 7 (2 часа) Множества
- •D. Лабораторный практикум d.1 Лабораторная работа № 1
- •D.2. Лабораторная работа № 2
- •D.3. Лабораторная работа № 3
- •D.3.1. Варианты для задания 1. «Простейшие циклы»
- •D.3.2. Варианты для задания 2 «Обработка одномерных массивов»
- •D.4. Лабораторная работа № 4
- •D.5. Лабораторная работа № 5
- •D.6. Лабораторная работа № 6
- •D.7. Лабораторная работа № 7
- •D.8. Лабораторная работа № 8
- •D.9. Лабораторная работа № 9
- •D.10. Лабораторная работа № 10
- •D.11. Литература к лабораторным работам
- •E. Самостоятельная работа. E.1. Задачи для самостоятельной работы e.1.1. Задачи для самостоятельной работы по теме: "Запись числовых констант, переменных и выражений".
- •E.1.2. Задачи для самостоятельной работы по теме: "Типы данных. Операции и функции над данными разных типов".
- •E.1.3. Задачи для самостоятельной работы по теме: "Операторы цикла".
- •E.1.4. Задачи для самостоятельной работы по теме: "Массивы".
- •E.1.5. Задачи для самостоятельной работы по теме: "Процедуры и функции".
- •E.1.6. Задачи для самостоятельной работы по теме: "Строки".
- •E.1.7. Задачи для самостоятельной работы по теме: "Множества".
- •E.1.8. Задачи для самостоятельной работы по теме: "Файлы".
- •E.2. Задачи и упражнения на тему «Структуры данных»
- •E.2.1. Векторы
- •E.2.2. Матрицы
- •E.2.3. Строки
- •E.2.4. Записи и таблицы
- •E.2.5. Списки
- •E.2.6. Очереди, стеки, деревья
- •E.2.7. Двоичные деревья
- •E.2.8. Литература по теме «Структуры данных»
- •G. Контрольные задания по лабораторным работам g.1. Контрольная работа по лабораторным № 3,4
- •G.2. Контрольная работа по лабораторной № 5
- •G.3. Контрольная работа по лабораторным № 6, 7, 8
- •H. Тематика контрольных работ по дисциплине Информатика и программирование
- •I. Вопросы к экзамену
- •J. Литература
E.2.5. Списки
1. type ссылка = real;
вектор = array[ 1...100 ]ofссылка;
Считая, что все элементы вектора Xотличны отnil, описать:
а) функцию max(x) для нахождения наибольшего из чисел, на которые ссылаются элементы вектораХ;
б) функцию negl(x), значением которой является первый из элементов вектора Х, ссылающихся на отрицательные числа, или nil, если таких элементов нет;
в) логическую функцию same(x), которая проверяет, есть ли в вектореХхотя бы две одинаковые ссылки;
г) процедуру unique(x), которая в вектореХвсе элементы, ссылающиеся на равные числа, заменяет на первый из этих элементов.
2. Одно из возможных представлений "длинного" текста - это разделить его на участки (строки) равной длины и создать массив ссылок на эти строки:
const d= ...;{длина строки}
n= ...;{максимальное число строк}
type строка = array [1..d] of char;
ссылка= строка;
текст =array [1..n] of ссылка;
(Если в тексте менее nстрок, то последние элементы массива равныnill; в начале массива ссылокnill не должно быть. Если в операции над текстом указан номер отсутствующей строки, т.е. элемент массива с этим номером равенnill, то такая операция не выполняется.)
Используя данное представление текста, описать:
а) функцию числострок(Т)для подсчета числа строк в текстеТ;
б) логическую функцию элем(Т,i,j,c),проверяющую, есть ли в текстеТстрока с номеромi, и, если есть, присваивающуюj-ю литеру этой строки параметруc;
в) процедуру перестановка(Т,i,j), меняющую местамиi-ю иj-ю строки текстаТ;
г) процедуру замена(T,i,j),заменяющуюi-ю строку текстаТна копиюj-й строки;
д) процедуру добавить(T,i,j),добавляющую послеi-й строки текстаТкопиюj-й строки;
е) процедуру удалить(T,i),удаляющуюi-ю строку из текстаТ;
ж) логическую функцию поиск(Т,c,i,j), определяющую, входит ли литера c в текст Т, и, если входит, присваивающую параметрам i и j "координаты" первого вхождения этой литеры: i - номер строки, а j - номер позиции в этой строке;
з) процедуру вывод(Т), печатающую построчно текстТ;
и) процедуру ввод(Т),считывающую из входного файла последовательность литер до первой точки и формирующую из них текстТ(последнюю строку, если надо, дополнить пробелами).
3. Описать процедуру, которая вставляет:
а) в начала списка Lновый элементE;
б) в конец списка Lновый элементE;
в) новый элемент Eпосле первого элемента непустого спискаL;
г) в список Lновый элемент Е1 за каждым вхождением элементаЕ;
д) в список Lновый элемент Е1 перед первым вхождением элементаЕ, еслиЕвходит вL;
e) в непустой список L пару новых элементов Е1 и Е2 перед его последним элементом;
ж) в непустой список L, элементы которого упорядочены по неубыванию новый элемент Е так, чтобы сохранилась упорядоченность (ТЭ=real).
4. Описать процедуру, которая удаляет:
а) из непустого списка Lпервый элемент;
б) из списка Lвторой элемент, если такой элемент есть;
в) из списка Lза каждым вхождением элементаЕ один элемент, если такой есть и отличен отЕ;
г) из непустого списка Lпоследний элемент;
д) из списка Lпервый отрицательный элемент, если такой есть (ТЭ=integer);
e) из списка L все отрицательные элементы (ТЭ=real).
5. Программа. Заданный во входном файле текст (за ним следует точка) распечатать в обратном порядке.
6. Программа. Дана непустая последовательность натуральных чисел, за которыми следует 0. Напечатать порядковые номера тех чисел последовательности, которые имеют наибольшую величину.
7. Программа. Дано целое N>0, за которым следуетNвещественных чисел. Напечатать эти числа в порядке их не убывания.
8. Описать процедуру или функцию, которая:
а) проверяет на равенство списки L1 и L2:
б) определяет, входит ли список L1 в список L2;
в) проверяет, есть ли в списке Lхотя бы два одинаковых элемента;
г) переносит в конец непустого списка Lего первый элемент;
д) переносит в начало непустого списка L его последний элемент;
е) добавляет в конец списка L1 все элементы списка L2;
ж) вставляет в список Lза первым вхождением элементаЕвсе элементы списка L1, еслиЕ входит вL;
з) переворачивает список L, т.е. изменяет ссылки в этом списке так, чтобы его элементы оказались расположенными в обратном порядке;
и) в списке L из каждой группы подряд идущих равных элементов оставляет только один;
к) оставляет в списке Lтолько первые вхождения одинаковых элементов.
9. Описать рекурсивную функцию или процедуру, которая:
а) определяет, входит ли элемент Е в списокL;
б) подсчитывает число вхождений элемента Ев списокL;
в) находит максимальный элемент непустого списка L(ТЭ=real);
г) печатает в обратном порядке элементы списка L (ТЭ=char);
д) заменяет в списке L все вхождения Е1 на Е2;
е) удаляет из списка Lпервое вхождение элементаЕ, если такое есть;
ж) удаляет из списка Lвсе вхождения элементаЕ;
з) строит L1 - копию списка L;
и) удваивает каждое вхождение элемента Ев списокL;
к) находит среднее арифметическое всех элементов непустого списка L(ТЭ=real).
10. Описать процедуру, которая формирует список L, включив в него по одному разу элементы, которые:
а) входят хотя бы в один из списков L1 и L2;
б) входят одновременно в оба списка L1 и L2;
в) входят в список L1, но не входят в список L2;
г) входят в один из списков L1 и L2, но в то же время не входят в другой из них.
11. Описать процедуру, которая объединяет два упорядоченных по неубыванию списка L1 и L2 (TЭ=real) в один упорядоченный по неубыванию список:
а) построив новый список L;
б) меняя соответствующим образом ссылки в L1 и L2 и присвоив полученный список параметру L1.
12. Описать процедуру подстановка(L,L1,L2), которая в спискеLзаменяет первое вхождение списка L1 (если такое есть) на список L2.
13. type слово= цепочка;
цепочка=record буква: 'a'..'z';
связь: слово end;
ТЭ=слово;
Описать функцию или процедуру, которая:
а) в списке Lпереставляет местами первое и последнее непустые слова, если вLесть хотя бы два непустых слова;
б) печатает текст из первых букв всех непустых слов списка L;
в) удаляет мз непустых слов списка Lих первые буквы;
г) печатает все непустые слова списка L;
д) определяет количество слов в непустом списке L, отличных от последнего.
14. Многочлен
с целыми коэффициентами можно представить в виде списка, причем если A =0, то соответствующее звено не включается в список.
Описать тип данных, соответствующий такому представлению многочленов, и определить следующие функции и процедуры для работы с этими списками-многочленами:
а) логическую функцию равно(P,Q), проверяющую на равенство многочленыPиQ;
б) функцию знач(P,X), вычисляющую значение многочленаPв целочисленной точкеX;
в) процедуру диф(P,Q), которая строит многочленP- производную многочленаQ;
г) процедуру слож(P,Q,R), которая строит многочленP- сумму многочленовQиR;
д) процедуру
вывод(P,V), которая печатает
многочленPкак многочлен от
переменной, однобуквенное имя которой
является значением литерного параметраV; например, для многочленапроцедура
вывод(S',Y') должна напечатать 52*Y40-3*Y8+Y;
е) процедуру ввод(Р), которая считывает из входного файла безошибочную запись многочлена (за ней - пробел) и формирует соответствующий список-многочленP.
15. Предложить и описать представление файлов (из элементов некоторого типа ТЭ) в виде списков и определить функциюeof1(F)и процедурыreset1(F),read1(F,X),rewrite1(F),write1(F,X), реализующие при таком представлении файлов действия соответствующих стандартных функций и процедур.
16. Назовем (иерархическим) "списком" заключенную в круглые скобки последовательность элементов, разделенных запятыми; элементы списка - это атомы или снова списки:
<список>::=( ) (<элементы>)
<элементы>::=<элемент> <элемент>,<элементы>
<элемент>::=<атом> <список>
Под "атомом" понимается последовательность, содержащая от 1 до Nбукв и цифр, гдеN- заранее известное натуральное число. Пример подобного списка: (AD75,(3,(),(7H))).
Предложить и описать представление таких списков и определить следующие рекурсивные функции и процедуры для работы с ними:
а) логическую функцию member(A,L), проверяющую, входит ли атомАв списокL;
б) логическую функцию equal(L1,L2), проверяющую на равенство списки L1 и L2;
в) процедуру printat(L), печатающую все атомы, входящие в списокL;
г) процедуру printlist(L), печатающую списокLв том виде, как он определен указанными выше металингвистическими формулами;
д) процедуру readlist(L), которая считывает из входного файла записанный без ошибок список и строитL- соответствующее представление этого списка.
17. Пусть Lобозначает кольцевой (циклический) двунаправленный список с заглавным звеном при следующем описании такого списка:
type ТЭ= ... ; {тип элементов списка}
список2= звено2;
звено2=record элем:ТЭ2;
пред,след:список2 end;
и пусть Еобозначает величину типаТЭ2.
Описать функцию или процедуру, которая:
а) определяет, является ли список Lпустым;
б) печатает в обратном порядке элементы непустого списка L, (ТЭ2=char);
в) подсчитывает количество элементов списка L, у которых равные "соседи";
г) определяет, есть ли в списке Lхотя бы один элемент, который равен следующему за ним (по кругу) элементу;
д) в списке L переставляет в обратном порядке все элементы между первым и последним вхождениями элемента Е, если Е входит в L не менее двух раз;
е) удаляет из списка Lпервый отрицательный элемент, если такой есть;
ж) из списка L, содержащего не менее двух элементов, удаляет все элементы, у которых одинаковые "соседи" (первый и последний элементы считать "соседями");
з) добавляет в конец списка Lновый элементE;
и) в списке Lудваивает каждое вхождение элементаЕ;
к) строит список Lпо однонаправленному спискуL1;
л) в конец непустого списка Lдобавляет все его элементы, располагая их в обратном порядке (например, по списку из элементов 1,2,3 требуется построить список из элементов 1,2,3,3,2,1).
18. ("Считалка".) Nребят располагаются по кругу. Начав отсчет от первого, удаляют каждогоK- го, смыкая круг после каждого удаления. Определить порядок удаления ребят из круга.
Решение этой задачи описать в виде программы (ее исходные данные - натуральные числа NиК), которая должна напечатать номера ребят в том порядке, как они удаляются из круга.
19. Определить, симметричен ли заданный во входном файле текст (за ним следует точка).
20. Дана последовательность из не менее чем двух различных натуральных чисел, за которой следует 0. Напечатать в обратном порядке все числа между наибольшим и наименьшим числами этой последовательности.
21. Дана непустая последовательность непустых слов из букв: между соседними словами - запятая, за последним словом - точка.
Напечатать все слова максимальной длины.
22. Дана непустая последовательность слов, в каждом из которых от 1 до 12 строчных латинских букв; между словами - пробел, за последним словом - точка. Напечатать эти слова по алфавиту, указав для каждого из них число его вхождений в эту последовательность.
23. Дана непустая последовательность слов, в каждом из которых от 1 до Nстрочных латинских букв; между словами - пробел, за последним словом - точка, максимальная длина слов (т.е. значениеN) заранее не известна. Напечатать эти слова по алфавиту, указав для каждого из них число его вхождений в эту последовательность.
24. Дана непустая последовательность слов, в каждом из которых от 1 до 8 строчных латинских букв; между словами - пробел, за последним словом - точка. Напечатать эти слова в следующем порядке: сначала по алфавиту все слова из одной буквы, затем - по алфавиту все двухбуквенные слова и т.д. (одинаковые слова печатать по одному разу).
25. Дана непустая последовательность слов, в каждом из которых от 1 до Nстрочных латинских букв; между словами - пробел, за последним словом - точка. Максимальная длина слов (т.е. значениеN) заранее не известна. Напечатать эти слова в следующем порядке: сначала по алфавиту все слова из одной буквы, затем - по алфавиту все двухбуквенные слова и т.д. (одинаковые слова печатать по одному разу).
26. Дан текст, оканчивающийся точкой. Среди литер этого текста особую роль играет знак #, появление которого в тексте означает отмену предыдущей литеры текста; kзнаков # подряд отменяютkпредыдущих литер (если такие есть). Напечатать данный текст, исправленный с учетом такой роли знака # (например, текст Х#ЭЕ##HELO#LO должен быть напечатан в виде HELLO).
27. Дано произвольное натуральное число N. Напечатать все цифры десятичной записи числа N!.
28. Дана запись
многочлена (от переменной X)
произвольной степени с целыми
коэффициентами, причем его одночлены
могут быть и не упорядочены по степенямХ, а одночлены одной и той же степени
могут повторяться. (Возможный пример:+
+
).
Требуется привести подобные члены в
этом многочлене, после чего распечатать
его по убыванию степенейX.
29. Сформировать файл из натуральных чисел и напечатать порядковые номера тех элементов списка, построенного из элементов файла, за которыми стоит минимальный элемент.
30. Сформировать файл из символов, оканчивающихся точкой и выбросить из списка, построенного из элементов файла, круглые и квадратные скобки.