Контрольная работа по дисциплине «Основы алгоритмизации и

advertisement
Контрольная работа по дисциплине «Основы алгоритмизации и
программирования»
специальность «Программное обеспечение ВТ и АС»
4 курс 2 семестр
Вариант I
1. Написать программу, решающую неравенство.
ax2+b0.
Программа должна правильно выполняться при любых значениях начальных данных.
2. Напишите следующую программу.
Найти сумму целых положительных чисел, кратных 4 и меньших 100.
3. Разработайте программу, формирующую квадратную матрицу D(n,n), где n≤15,
элементы которой определяются по формуле
Sin (i  j )
D[i,j] =
1
i j
2i  3 j
при i<j;
при i=j;
при i>j,
где i – номер строки матрицы;
j – номер столбца матрицы.
В сформированной матрице определить максимальный и минимальный элемент и
поменять их местами.
Вывести исходную матрицу, соответствующие элементы и их координаты, а также
преобразованную матрицу.
4. Дана строка текста длиной из 40 символов, состоящая из слов, разделённых
пробелами.
Разработать программу удаления «лишних» пробелов.
Лишними считать пробелы в начале строки до первого символа, второй и более
пробелы между словами и пробелы в конце строки.
Вывести исходную и преобразованную строки и количество удалённых пробелов.
Вариант II
1. Написать программу, решающую неравенство.
ax2+bx+c>0.
Программа должна правильно выполняться при любых значениях начальных данных.
2. Напишите следующую программу.
Найти сумму целых положительных четных чисел, меньших 100.
3. Дана матрица A(n,m), где n,m≤15.
Разработайте программу, формирующую одномерный массив B(n), элементами
которого должно являться количество элементов каждой строки, превышающих
среднее арифметическое значение матрицы в целом. Если в строке таких элементов
нет, в соответствующий элемент одномерного массива заносится 0.
Вывести исходную матрицу, значение среднего арифметического элементов матрицы
и сформированный массив B.
4. Разработайте программу, которая вводит строки, содержащие фамилию, имя, отчество
и год рождения, а выводит – строки, содержащие фамилию, инициалы и возраст на
текущий год.
Завершение ввода – при чтении пустой строки.
Вывести исходные и преобразованные строки.
Вариант III
1. Написать программу, решающую неравенство.
ax2+b>0.
Программа должна правильно выполняться при любых значениях начальных данных.
2. Напишите следующую программу.
Найти сумму целых положительных нечетных чисел, меньших 200.
3. Дан массив D(n), где n≤10, вещественного типа.
Разработайте программу, которая вычисляет сумму трёх первых положительных
элементов заданного массива. Если таких элементов нет. Программа должна выдавать
соответствующее сообщение.
Выведите на печать исходный массив и искомую сумму.
4. Разработать программу, которая определяет в строке количество слов длиннее четырёх
символов. Слова разделены одним пробелом.
Вывести исходную строку, полученные слова и количество полученных слов.
Вариант IV
1. Написать программу, решающую неравенство.
ax2+b0.
Программа должна правильно выполняться при любых значениях начальных данных.
2. Напишите следующую программу.
Найти сумму целых положительных чисел, больших 20, меньших 100 и кратных 3.
3. Дан одномерный массив вещественных чисел A(n), где n≤50.
Разработайте программу, формирующую новый массив B из элементов массива A,
которые превышают среднее арифметическое значение элементов массива A, стоящих
на местах с чётными индексами.
Выведите среднее арифметическое значение элементов массива A, исходный и
сформированный массивы.
4. Разработайте
программу,
которая
осуществляет
замену
заданной
строки
в
отсортированном по алфавиту массиве строк, и сортирует полученный массив строк в
соответствии с русским алфавитом.
Вывести исходный и преобразованный массивы.
Вариант V
1. Написать программу, решающую неравенство.
ax2+bx>0.
Программа должна правильно выполняться при любых значениях начальных данных.
2. Напишите следующую программу.
Найти сумму первых 10 членов ряда, в котором an=ln(n!)/n2.
3. Дан
одномерный
целочисленный
массив
C(n),
где
n≤40,
содержащий
как
положительные, так и отрицательные элементы.
Разработайте программу, которая определяет номер первого отрицательного,
элемента, по абсолютной величине превышающего максимальный элемент этого
массива.
Выведите массив C, а также номер найденного элемента, или соответствующее
сообщение, если такого элемента нет.
4. Разработайте программу, меняющую в строке местами слова с указанными номерами.
Запретить ввод номеров, которые превышают количество слов в строке или равны
между собой.
Вывести исходную и преобразованную строки.
Вариант VI
1. Написать программу, решающую неравенство.
ax2+bx+c0.
Программа должна правильно выполняться при любых значениях начальных данных.
2. Напишите следующую программу.
Найти сумму первых 15 членов ряда, в котором an=nln n/(ln n)n.
3. Разработайте программу, которая формирует массив B(n), где n≤30, содержащий
элементы целого типа в диапазоне от -20 до 130, используя датчик случайных чисел.
В сформированном массиве определите количество и среднее арифметическое
значение положительных и отрицательных элементов массива.
Выведите массив B, а также все найденные в программе величины.
4. Дана строка текста длиной из 80 символов, состоящая из слов, разделённых пробелом,
в конце точка.
Разработайте программу, которая определяет номера слов, в которых содержится
более трёх символов «А».
Вывести исходную строку и номера слов. Если слов с таким числом букв не окажется,
вывести соответствующее сообщение.
Вариант VII
1. Написать программу, решающую систему неравенств.
 a 1x  b1  0
.

a
x

b

0
 2
2
Программа должна правильно выполняться при любых значениях начальных данных.
2. Напишите следующую программу.
Найти сумму первых 12 членов ряда, в котором a n  n! / n
n
.
3. Дан
одномерный
целочисленный
массив
D(n),
где
n≤50,
содержащий
как
положительные, так и отрицательные элементы.
Разработайте программу, которая находит сумму всех чётных элементов массива,
стоящих на чётных местах, то есть, имеющих четные номера.
Выведите массив D, а также все найденные в программе величины.
4. Дана строка текста длиной из 40 символов, состоящая из слов, разделённых пробелом,
в конце точка.
Разработайте программу, которая удаляет из текста слово, содержащее максимальное
количество букв «В».
Вывести исходную и преобразованную строки. Если в тексте нет слов с буквой «В» –
вывести соответствующее сообщение
Вариант VIII
1. Написать программу, решающую систему неравенств.
 a 1x  b1  0
.

a 2 x  b 2  0
Программа должна правильно выполняться при любых значениях начальных данных.
2. Напишите следующую программу.
Найти сумму первых 7 членов ряда, в котором a n  e n .
3
3. Дана матрица A(n,m), где n,m≤25.
Разработайте программу, заменяющую все чётные элементы массива, на их квадраты,
а нечётные удвоить.
Вывести исходную и преобразованную матрицу.
4. Дан массив символьных строк длиной 40 символов. Строки состоят из слов,
разделённых пробелом, в конце точка.
Разработайте программу, которая формирует одномерный массив B, содержащий в
качестве элементов количество слов каждой строки, начинающихся на гласную букву.
Если таких слов нет, в соответствующий элемент массива занести 0.
Вывести исходный и сформированный массивы.
Вариант IХ
1. Написать программу, решающую систему неравенств.
 a 1x  b1  0
.

a 2 x  b 2  0
Программа должна правильно выполняться при любых значениях начальных данных.
2. Напишите следующую программу.
Найти сумму первых 9 членов ряда, в котором a n  n 2 e 
n
.
3. Дана матрица C(n,m), где n,m≤30.
Разработайте программу, умножающую положительные элементы на первый элемент
соответствующей строки, а отрицательные – на последний.
Вывести исходную и преобразованную матрицу.
4. Дана строка, состоящая из слов, разделённых одним пробелом.
Разработайте программу, которая разбивает исходную строку на максимальной длины
подстроки, размер которых не превышает заданного значения n. Перенос слов считать
запрещённым.
Вывести исходную и полученные строки.
Вариант Х
1. Написать программу, решающую систему неравенств.
 a 1x  b1  0
.

a
x

b

0
 2
2
Программа должна правильно выполняться при любых значениях начальных данных.
2. Напишите следующую программу.
Найти сумму первых 11 членов ряда, в котором an=n!/nn.
3. Дана матрица E(n,m), где n,m≤40.
Разработайте программу, находящую номера всех максимальных элементов в каждой
строке. Переместить содержимое этого максимального элемента в начало этой строки
матрицы.
Вывести исходную и преобразованную матрицу.
4. Разработайте
программу,
которая
осуществляет
поиск
заданной
отсортированном в соответствии с русским алфавитом массиве строк n=100.
Вывести исходный массив и количество вхождений заданной строки.
строки
в
МЕТОДИЧЕСКИЕ
рекомендации по выполнению контрольных работ
Курс «Основы алгоритмизации и программирования» предполагает изучение
нового материала и углубление на более высоком проблемно-теоретическом уровне
уже изученного по курсу «Информатика».
Задачи курса: Ознакомить студентов с основами алгоритмизации, сформировать
устойчивые навыки и прочные знания по структурному программированию,
ознакомить с основами объектно-ориентированного программирования.
Наряду с изучением рекомендованной литературы студентам необходимо
систематически следить за текущими событиями в ИТ-индустрии, происходящими в
мире, регулярно читать профильные журналы, научно-техническую литературу.
Следует иметь в виду, что глубокое и полное усвоение материала данного курса
не определяется простым запоминанием технической информации, методов решения
задач.
Студент должен знать различные методы, подходы к решению задачи, уметь
анализировать полученные решения, искать и устранять обнаруженные ошибки,
проводить отладку и тестирование компьютерных программ.
В процессе подготовки все имеющиеся в пособиях иллюстрации, схемы,
диаграммы и таблицы необходимо внимательно рассматривать.
Встречающиеся в тексте незнакомые или непонятные слова нужно выписывать и,
пользуясь энциклопедией и словарями, определить их значение.
Не следует приступать к выполнению контрольной работы до полного изучения
всей программы отдельного задания. Только полное завершение изучения материала, в
объеме одного задания позволяет учащемуся успешно выполнить контрольную
работу.
Задачи контрольной работы охватывают конкретные темы изучаемого курса.
Решения студентов должны не только обнаружить хорошее знание конкретных тем, но
и свидетельствовать о целостности представления изученного ими раздела, о месте,
которое занимает рассматриваемый аспект в компьютерных методах решения задач.
В решениях конкретных задач надо строго соблюдать правила, принятые в
данном алгоритмическом языке.
Контрольная
работа
№2
включает
изучение
разделов
«Управляющие
структуры», «Структуры данных».
Для иллюстрации работы инструментальных средств программирования выбран
Turbo Pascal.
На
практике
часто
возникают
задачи
с
необходимостью
управления
пользователем ходом выполнения программы. Например, в нашем случае это может
быть выполнение двух операций: сложение или вычитание, — в зависимости от
входных данных x и y. Если x<y, то выполняется операция сложения (x+y), иначе —
операция вычитания (x-y).
Для реализации управления ходом выполнения программы служит условная
конструкция:
If <логическое выражение> then <опрератор1> [else <опрератор2>]
где в качестве <логическое выражение> указывается некоторое условие, при
выполнении которого выполняется оператор <оператор1>, а при невыполнении
оператор <опрератор2>. При этом конструкция «else» является необязательной (что
обозначено заключением ее в квадратные скобки). В случае отсутствия конструкции
«else» при ложности условия <логическое выражение> происходит выход из условной
конструкции и передача управления следующему оператору.
В логических выражениях могут быть использованы следующие логические
отношения.
1) <
— меньше,
2) <=
— меньше, либо равно,
3) >
— больше,
4) >=
— больше, либо равно,
5) =
— равно,
6) <>
— неравно,
7) or
— логическое или,
8) and
— логическое и,
9) not
— логическое не.
Например, если необходимо вычислить произведение двух переменных только в
случае, когда одновременно выполняются два условия: x<y и x+y>0, то условный
оператор будет выглядеть следующим образом.
If (x<y) and (x+y>0) then
z:=x*y;
Обращаем внимание, что в условной конструкции может выполняться только
один оператор, поэтому, чтобы выполнить несколько операторов, из них собирается
составной оператор, который начинается со служебного слова begin, а заканчивается
— end. Например, если необходимо вычислить при указанных условиях еще и сумму,
то получим
If (x<y) and (x+y>0) then
Begin
z:=x*y;
u:=x+y
End;
Напишем программу таким образом, чтобы если x<y, то выполнялась операция
сложения (x+y), иначе — операция вычитания (x-y).
Uses
crt;
Var
x, y, z: real;
Begin
ClrScr;
Write(‘x=’);
ReadLn(x);
Write(‘y=’);
ReadLn(y);
If x<y then
Begin
z:=x+y;
WriteLn(‘x+y=’, x:6:2, ‘+’, y:6:2, ‘=’, z:6:2)
End
Else
Begin
z:=x-y;
WriteLn(‘x-y=’, x:6:2, ‘-’, y:6:2, ‘=’, z:6:2)
End
End.
При решении задач часто бывает необходимо повторять одни и те же действия
несколько раз. Для этого служит цикл со счетчиком, который состоит из двух частей:
заголовка и тела. В заголовке цикла описывается сколько раз надо выполнить тело
цикла. Оператор цикла со счетчиком выглядит следующим образом.
For <переменная>:=<выражение1> to <выражение2> do {заголовок}
<оператор>; {тело}
<переменная> должна быть одним из целочисленных типов, <выражение1> и
<выражение2> в результате должны давать целое число. В теле цикла может
находиться только один оператор. Поэтому, если необходимо выполнить несколько
операторов, то используем составной оператор. Например, вычислить произведение
всех целых чисел от 1 до n можно с помощью следующего фрагмента.
p:=1;
for i:=2 to n do
p:=p*i;
Кроме того, циклы можно использовать для обработки сложных структур данных.
Например, такую задачу, как сложение двух векторов можно решить с помощью
следующей программы.
Uses
Crt;
Type
TVector=array[1..10] of real;
Var
i, n: integer;
a, b, c: TVector;
begin
ClrScr;
Write(‘n=’); readln(n);
{Вводим с клавиатуры массивы a и b}
For i:=1 to n do
Begin
Write(‘a[‘, i, ‘]=’); readln(a[i]);
End;
For i:=1 to n do
Begin
Write(‘b[‘, i, ‘]=’); readln(b[i]);
End;
{Вычисляем сумму векторов c=a+b}
For i:=1 to n do
Begin
c[i]:=a[i]+b[i];
Writeln(‘c[‘, i, ‘]=’, c[i])
End
End.
Продемонстрируем использование циклов при работе со строками. Здесь нам
понадобиться цикл с предусловием (цикл «пока»). Этот цикл необходим, когда заранее
неизвестно количество повторений.
While <логическое выражение> do
<оператор>;
Тело цикла выполняется, пока <логическое выражение> принимает значение
«истина». Т. е. в цикле «пока» указывается условие выполнения цикла. В теле цикла
может находиться только один оператор. Поэтому, если необходимо выполнить
несколько операторов, то используем составной оператор.
Решим следующую задачу.
С клавиатуры вводится одна строка, которая содержит фамилию, имя и отчество,
разделенные одним или несколькими пробелами, причем в начале и конце строки
пробелов нет. Надо вывести в столбик три строки: фамилию, имя и отчество
соответственно.
Uses
Crt;
Const
STRMAX=50; {максимальная длина строки}
LISTMAX=3; {максимальное количество строк в списке}
Type
TIndList=1..LISTMAX {тип для номера строки в списке}
TIndStr=1..STRMAX; {тип для номера символа в строке}
TStr50=string[STRMAX]; {тип для строки с максимальной длиной}
TListStr50=array[TIndList] of TStr50; {тип для списка строк}
Var
i: TIndList
n: TIndStr;
sfio: TStr50;
ls: TListStr50;
begin
ClrScr;
Write(‘Ф.И.О.=’); readln(sfio);
For i:=1 to LISTMAX-1 do {перебираем строки в списке ls}
Begin
n:=pos(‘ ‘, sfio); {вычисляем позицию пробела в строке sfio}
ls[i]:=copy(sfio, 1, n-1); {копируем первое слово из строки sfio в
строку списка ls}
delete(sfio, 1, n); {удаляем скопированное слово вместе с пробелом
из строки sfio}
while sfio[1]=’ ‘ do {проверяем остались ли еще в начале строки sfio
пробелы и, если да, то удаляем их}
delete(sfio, 1, 1)
end;
ls[LISTMAX]:=sfio; {пересылаем последнее слово из строки sfio в
список ls}
For i:=1 to LISTMAX do {выводим список ls на экран}
Writeln(ls[i]);
Readkey
end.
При решении задания №1 следует обратить особое внимание на следующее.
Результат необходимо вывести в принятом в математике виде, например, [1;3)[4;5].
Для отображения, отсутствующих на клавиатуре математических символов, следует
придерживаться следующих обозначений:
—U
 — oo
 — (/)
ТРЕБОВАНИЯ
к выполнению и оформлению контрольной работы
1. Каждая работа выполняется в отдельной тетради школьного формата. Следует
пронумеровать страницы и оставить на них поля не менее 3 см для замечаний
преподавателей.
2. На обложке тетради должно быть аккуратно записаны все данные титульного листа:
шифр, специальность, фамилия, имя, отчество студента, предмет и номер работы.
3. Работа должна быть выполнена чернилами одного цвета, аккуратно и разборчиво.
4. Каждую задачу надо начинать с новой страницы.
5. Решение задачи желательно располагать в порядке номеров, указанных в задании.
6. Условия задачи должны быть обязательно переписаны полностью в контрольную
тетрадь.
7. При оформлении записей в тетради необходимо выполнить общие требования к
культуре их ведения.
8. В конце работы следует указать литературу, которой вы пользовались, проставить
дату выполнения работы и подпись.
9. Если в работе допущены недочеты и ошибки, то студент должен выполнить все
указания преподавателя, сделанные в рецензии.
10. Контрольные работы должны быть выполнены в срок в соответствии с учебным
планом-графиком. В период сессии работы на проверку не принимаются.
11. Работа, выполненная не по своему варианту, не учитывается и возвращается
студенту без оценки.
12. Студенты, не имеющие зачеты по контрольной работе, к экзамену не допускаются.
13. Каждая контрольная работа имеет 10 вариантов. Вариант работы выбирается по
последней цифре номера зачетки. Например, студенты, имеющие номера 23, 117,
300, 204, получают варианты 3, 7, 10, 4 соответственно.
Список источников
1. Кормен Т., Лейзерсон Ч., Ривест Р. Алгоритмы: построение и анализ. — М.:
МЦНМО. 2001. — 960 с.
2. Кнут Д. Э. Искусство программирования: В 3 т. — М.: Вильяме, 2000.
3. Иванова Г. С. Основы программирования: Учебник для вузов. — М: Изд-во МГТУ
им. Н. Э. Баумана, 2002. —416 с.
4. Могилев А. В., Пак Н. И., Хеннер Е. К. Информатика. — М.: Академия, 1999. —
816с.
5. Симонович С. В., Евсеев Г. А., Алексеев А. Г. Общая информатика. — М.: ACTПРЕСС, Инфорком-Пресс. 1999. — 592 с.
6. Вирт Н. Алгоритмы + структуры данных = программы. — М.: Мир, 1985. — 406 с.
7. Епанешников А. М., Епанешников В. А. Программирование в среде Turbo Pascal 7.0.
— М: Диалог-МИФИ, 1996. — 288 с.
8. Абрамов В. Г., Грифонов Н. П., Трифонова Г. Н. Введение в язык паскаль. — М :
Наука, 1988. — 320 с.
9. Немнюгин С. A. Turbo Pascal: Практикум. — СПб: Питер, 2001. — 256 с.
10. Ю.Уэйн М, Прата С, Мартин Д. Язык Си. - - М.: Мир, 1988. — 512 с.
11.И.Крячков А. В., Сухи ни на И. В., Томшин В. К. Программирование на С и
C++. Практикум: Учеб. пособие для вулов. — М.: Горячая линия - Телеком,
2000. — 344 с.
Download