1 - курс / 1 -семестр. Язык программирования: Pascal.
Общие методические указания
До начала занятий в компьютерном классе студентам необходимо получить у преподавателя конкретный вариант задания и составить программу. В процессе ее составления должны быть определены тестовые последовательности для отладки программы, проверки ее работоспособности и тестирования при граничных исходных данных. После отладки и получения результатов счета программы лабораторные работы защищаются индивидуально.
Целью данных лабораторных работ является изучение основ языка программирования Pascal, приобретение навыков работы в интегрированной среде Turbo-Pascal, изучение алгоритмов работы с одномерными и двумерными массивами, освоение методов работы со строковыми данными и реализация соответствующих программ.
Массивы и строки, которые представляют собой исходные данные для лабораторных работ, не должны являться постоянными элементами программы. Их значения необходимо вводить в диалоговом режиме во время работы программы.
Каждая программа должна начинаться с блока ввода исходных данных для задачи. Все полученные результаты - элементы, удовлетворяющие указанному условию, или их количество; преобразованные матрицы и тексты; логические ответы - должны выводиться на экран. Ввод или вывод данных желательно снабдить соответствующими комментариями.
Использование меток в программе нежелательно, так как это, обычно, приводит к путанице и затрудняет дальнейшую модификацию и тестирование программы, не отвечает требованиям структурного программирования и нарушает логическую целостность программы.
Для работы с массивами необходимо изучить алгоритмы поиска заданного элемента в массиве, поиска максимального или минимального элемента массива и выделение его координат (индексов), подсчет суммы элементов массива или элементов заданного диапазона; разобрать методы сортировки массива, перестановки строк и столбцов; уметь работать с отдельно выделенным столбцом или строкой; уметь осуществлять ввод и вывод массивов в программе.
При работе со строками необходимо помнить, что собой представляет строка, как она задается, как хранится в памяти машины; уметь пользоваться встроенными функциями библиотеки Pascal для работы со строками.
При использовании в программе операторов цикла необходимо придерживаться следующих правил:
1) внутри цикла может находиться другой цикл, однако циклы должны иметь разные управляющие переменные и внутренний цикл должен полностью находиться в теле внешнего цикла;
2) нельзя передавать управление внутрь цикла, минуя заголовок;
3) если необходимо пропустить в теле цикла группу операторов и продолжить цикл, то есть выполнить его следующий шаг, то управление передается в конец цикла;
4) можно досрочно выйти из цикла изменив значение управляющей переменной так, чтобы цикл больше не выполнялся.
При отладке и тестировании программы необходимо подобрать достаточное количество примеров, чтобы можно было просмотреть результаты работы программы в различных режимах - правильные исходные данные и ошибочные; удачный результат , например, поиска, или нет. В программе должны присутствовать средства элементарного контроля и анализа вводимых данных, комментарии или варианты ответов при получении нестандартной ситуации.
Контрольные вопросы
1. Идентификаторы, константы, переменные.
2. Типы данных: скалярные и структурированные.
3. Скалярные типы данных.
4. Структурированные типы данных.
5. Тождественность и совместимость типов.
6. Арифметические выражения и операции.
7. Выражения и операции отношения.
8. Структура программы.
9. Процедуры ввода-вывода и их форматы.
10. Условный оператор.
11. Оператор выбора.
12. Оператор цикла с предусловием.
13. Оператор цикла с постусловием.
14. Оператор с фиксированным количеством повторов.
15. Процедуры, определенные пользователем.
16. Функции, определенные пользователем.
17. Стандартные арифметические функции.
18. Строки.
19. Стандартные функции обработки строк.
20. Массивы, описание типа.
21. Работа в среде Turbo-Pascal, основные пункты меню.
4. Фаронов В.В. Turbo Pascal 7.0. Начальный курс - М.: "Нолидж", 1997.
5. Фаронов В.В. Turbo Pascal 7.0. Практика программирования - М.: "Нолидж", 1997.
№
Варианты заданий для выполнения лабораторной работы
№1 по теме - МАССИВЫ (PASCAL)
В матрице найти максимальный элемент каждой строки и упорядочить строки по возрастанию этих значений.
Даны два целочисленных двумерных массива. Перемножить их.
Транспонировать квадратную матрицу.
Найти в вещественном одномерном массиве элемент, предшествующий по значению максимальному.
Найти в вещественном одномерном массиве элемент, следующий за макси-мальным (если мах - последний, то вывести первый элемент массива).
Даны два целочисленных двумерных массива. Вывести на экран значения одинаковых элементов (с указанием количества их повторений в массивах и индексы).
Поменять в квадратной матрице местами строку с максимальным элементом и столбец с минимальным. На месте их пересечения вывести разность (max,min).
В матрице найти сумму элементов каждой строки и упорядочить строки по возрастанию этих значений.
В матрице найти сумму элементов каждого столбца и упорядочить столбцы по убыванию этих значений.
Задан одномерный массив вещественных чисел. Определить, сколько чисел не превышает первое число.
Задан одномерный массив вещественных чисел. Определить, сумму всех положительных элементов массива.
Задан одномерный массив вещественных чисел. Найти сумму первого от конца положительного и первого от начала отрицательного чисел массива.
Задан одномерный массив вещественных чисел. Поменять местами максимальный и минимальный элементы массива.
Дана действительная квадратная матрица. Преобразовать матрицу по правилу: строку с заданным номером и столбец поменять местами. На месте их пересечения вывести 0.
Дана действительная квадратная матрица. Найти наибольший по модулю элемент. Получить квадратную матрицу (на единицу меньшего порядка), выбросив из исходной матрицы столбец и строку, на пересечении которых расположен элемент с найденным значением.
В целочисленной матрице отсортировать столбцы (каждый) по возрастанию элементов методом "пузырька".
В целочисленной матрице отсортировать строки (каждую) по убыванию элементов методом выбора максимального элемента массива.
Найти в одномерном массиве максимальный среди отрицательных элементов и минимальный среди положительных. Вывести на экран их значения вместе с координатами.
Переставить элементы одномерного масива в обратном порядке.
Найти среднее геометрическое значение элементов одномерного массива вещественных чисел.
Найти среднее арифметическое значение элементов одномерного массива вещественных чисел.
Заменить отрицательные элементы в двумерном массиве на 0, а нецелые положительные числа их целой составляющей.
Найти сумму и количество отрицательных элементов матрицы, находящихся над главной диагональю.
Найти в каждой строке матрицы максимальные элементы и поменять их местами с элементами главной диагонали ( в соответствующей строке; в случае присутствия нескольких максимальных элементов - выбрать для перестановки первый из них).
В одномерном массиве вычислить произведение отрицательных элементов, которые имеют нечетный индекс.
Найти в двумерном массиве наибольший элемент боковой диагонали.
Найти в двумерном массиве наименьший элемент главной диагонали.
Найти в двумерном массиве наименьший элемент боковой диагонали и наибольший главной. Поменять их местами.
В одномерном массиве вычислить сумму по модулю элементов, которые имеют четный индекс.
Подсчитать количество четных положительных целых чисел одномерного массива. Заменить их на 0. Все отрицательные нечетные элементы заменить их значением по модулю. Подсчитать количество таких замен.
№
Варианты заданий для выполнения лабораторной работы
№2 по теме - СТРОКИ (PASCAL)
Подсчитать частоту букв в строке.
Переписать элементы строки в обратном порядке (с учетом пробелов).
Определить, является ли заданная строка палиндромом (одинаково читается с начала и конца). Пробелы не учитывать, ответ выдать в форме: да или нет.
Распечатать часть строки, находящийся между первой и последней запятой.
Выбрать в строке и вывести на экран заглавные буквы латинского алфавита .
Найти и вывести на экран самую длинную строку текста.
Упорядочить элементы строки в алфавитном порядке (повторяющиеся символы и пробелы исключить).
Подсчитать, сколько раз в строке встречается заданный символ.
Преобразовать строку символов, заменив в ней все восклицательные знаки точками.
Преобразовать строку символов, заменив в ней все точки многоточием (тремя точками).
Убрать из заданной строки все группы букв вида abcd.
Удалить из строки все символы, являющиеся цифрами.
Подсчитать общее число вхождений в заданную строку знаков препинания (. , ! ? -)
Подсчитать число слов (группы символов, разделенных пробелами) в заданной строке.
Определить, какие символы встречаются в строке более одного раза.
Упорядочить строки текста по возрастанию их длин.
Расположить строки русского текста в алфавитном порядке (анализируя первую букву каждой строки)
Заменить в строке все ":" на "-" и подсчитать количество замен.
Удалить из текста все символы "," , ".". Определить разницу длин исходного и модифицированного текста.
Проверить, совпадает ли в заданном тексте количество открытых и закрытых скобок. Выдать на экран соответствующее сообщение.
Вывести на экран часть исходного текста, находящегося после первого вхождения ":".
Подсчитать в тексте количество букв "а" и "б". Удалить из текста ту букву, которая встречалась чаще. Если количество вхождений равное, то удалить обе.
Поменять в тексте первое и последнее слово местами (слова - группы символов, разделенные пробелами).
В заданном тексте найти самое длинное и самое короткое слово (слова - группы символов, разделенные пробелами).
В каждой строке текста подсчитать количество слов (слова - группы символов, разделенные пробелами) и выделить строку с максимальным количеством слов (вывести на экран; если таких строк несколько, то вывести только значение максимума и номера строк).
Отредактировать текст, оставляя в нем только по одному символу пробела между словами.
В заданном тексте найти и вывести на экран все слова, которые начинаются с буквосочетания "НЕ".
Переписать строку в обратном порядке. Пробелы удалить.
Расположить в обратном порядке слова (само слово не изменять) в каждой строке текста.
В исходном тексте выделить пробелами каждое вхождение заданного символа. Если символ расположен в начале или в конце слова, то соответствующий пробел не добавляется.
Тестовые примеры
I Укажите тип величины, если ее значение
a)25,
b)5.5,
c)'да ' .
II Выберите допустимые значения для величин: целого типа, действительного, символьного:
a)2,
b)4.5,
c)-6,
d)' нет' ,
e)15.8,
f)' 24'.
III Определите тип данных для обозначения :
a)масса человека,
b)количество студентов в группе,
c)название книги.
IV Укажите значение переменной S после выполнения цикла:
s:=3; i:=1; while i<6 do i:=i+1; s:=s+i;
s:=1; i:=0; while i<4 do begin i:=i+1; s:=s*i end;
s:=2; i:=1; repeat s:=s+i; i:=i+1 until (i>3);
s:=5; i:=5; repeat s:=s+1/i; i:=i-1 until (i<=3);
s:=0; for i:=5 to 7 do s:=s+1;
s:=1; for i:=10 downto 2 do s:=s+1;
V В каком случае, при к=3, тело цикла будет выполняться
a) конечное число раз ______
b) ни одного раза________
c) произойдет "зацикливание"
A
B
C
while k<=5 do begin
s:=s+k;
k:=k+1
end;
while k>=5 do begin
s:=s+k;
k:=k+1
end;
while k>=3 do begin
s:=s+k;
k:=k+1
end;
VI В каком случае, при к=3, тело цикла будет выполняться
d) конечное число раз ______
e) ни одного раза________
f) произойдет "зацикливание"
D
F
E
repeat
s:=s+k;
k:=k+1
until k<=5;
repeat
s:=s+k;
k:=k+1
until k>=5;
repeat
s:=s+k;
k:=k+1
until k<=3;
VII В каком случае, при к=3, тело цикла будет выполняться
g) конечное число раз ______
h) ни одного раза________
i) произойдет "зацикливание"
a
for i:=k to 10 do s:=s+k;
c
for i:=k downto 10 do s:=s+k;
b
for i:=k to 2 do s:=s+k;
d
for i:=k downto 2 do s:=s+k;
VIII Определить значение переменной S , которое удовлетворяет выполнению соответствующего оператора цикла:
a
s:=2; i:=0; while i<5 do i:=i+1; s:=s+1/i;
c
s:=1; i:=1; while i<4 do i:=i+1; s:=s*i end;
b
s:=5; i:=1; while i>1 do begin s:=s+1/i; i:=i-1 end;
d
s:=1; i:=6; while i>=31 do begin s:=s+ i; i:=i-1 end;
IX Определить значение переменной S , которое удовлетворяет выполнению соответствующего оператора цикла:
a
s:=4; i:=1; repeat s:=s+1/i; i:=i-1 until i<=1;
c
s:=1; i:=1; repeat i:=i+1; s:=s+i; until i>3;
b
s:=2; i:=1; repeat s:=s+1/(i+1); i:=i+3 until i>=5;
d
s:=2; i:=5; repeat i:=i-1; s:=s+1/i; until i<=4;
X Определить значение переменной S , которое удовлетворяет выполнению соответствующего оператора цикла: