
- •Учебно-методическое пособие по изучению теоретического материала и самостоятельному выполнению лабораторных заданий
- •1. Введение
- •2. Общие методические рекомендации по изучению курса
- •3. Методические рекомендации по изучению теоретического материала курса
- •3.1 Содержание разделов дисциплины
- •Тема 1. «Структура программы на языке «Паскаль». Основные типы данных. Правила записи имён в языке Паскаль. Линейные вычислительные процессы.»
- •Тема 2. «Базовые конструкции языка «Паскаль». Ветвящиеся вычислительные процессы.»
- •Тема 3. «Одномерные и многомерные массивы. Циклические вычислительные процессы.»
- •Тема 4. «Обработка символьной информации»
- •Тема 5. «Процедуры в языке Паскаль»
- •Тема 6. «Функции в языке Паскаль»
- •Тема 7. Рекурсивные функции. Явная и неявная рекурсия.
- •Тема 8. Многомодульные приложения (дополнительная тема).
- •4. Методические рекомендации по выполнению лабораторных работ
- •4.1 Лабораторная работа №1 «Структура программ на языке Паскаль, основные типы данных, основные операции, линейные вычислительные процессы»
- •Варианты заданий на лабораторную работу № 1.
- •Var a,b,c,r : real;
- •Var a,b,c,r : real;
- •Var a,b,c,r : real;
- •4.2 Лабораторная работа №2 «Условные операторы. Правила записи условий простые и сложные условия, ветвящиеся вычислительные процессы»
- •Варианты заданий на лабораторную работу № 2.
- •Var a,b,X : real;
- •Var a,b,X : real;
- •Var a,b,X : real;
- •Var a,b,X : real;
- •Var a,b,X : real;
- •4.3 Лабораторная работа №3 «Массивы и циклы в языке Паскаль»
- •Варианты заданий на лабораторную работу № 3.
- •4.4 Лабораторная работа №4 «Обработка символьной и строковой информации в языке Паскаль»
- •Варианты заданий на лабораторную работу № 4.
- •4.5 Лабораторная работа №5 «Процедуры в языке Паскаль»
- •Варианты заданий на лабораторную работу № 5.
- •Var a,b : integer; // Числа, вводимые пользователем
- •I : integer; // Счётчик цикла
- •Var a,b : integer; // Числа, вводимые пользователем
- •I : integer; // Счётчик цикла
- •Var a,b : integer; // Числа, вводимые пользователем
- •I : integer; // Счётчик цикла
- •Var X : integer;
- •Var I : integer; // Счётчик цикла
- •4.6 Лабораторная работа №6 «Функции в языке Паскаль»
- •Варианты заданий на лабораторную работу № 6.
- •Пример решения типовой задачи лабораторной работы № 6.
- •Var I : integer; // Счётчик цикла
- •Var X : integer;
- •Var X : integer;
- •В результате внесённых изменений наша программа примет следующий вид:
- •Var X : integer;
- •Результат работы этой программы представлен на следующем рисунке:
- •Var X : integer;
- •4.7 Лабораторная работа №7 «Рекурсия и рекурсивные функции в языке Паскаль»
- •Варианты заданий на лабораторную работу № 7.
- •Var x1, x2, Xn : real; // Вычисляемые числа
- •Var x1, x2, Xn : real; // Вычисляемые числа
- •Var x1, x2, Xn : real; // Вычисляемые числа
- •Var r : real ; // Граница вычислений, вводимая пользователем
- •Var x1, x2, Xn : real ; // Вычисляемые числа
- •I : integer; // Число итераций цикла
- •Var r : real ; // Граница вычислений, вводимая пользователем
- •Var Xn : real; // Вычисляемые числа
- •Var Xn : real; // Вычисляемые числа
- •5. Вопросы для подготовки к зачёту
- •6. Список рекомендуемой литературы
- •7. Программное обеспечение и Интернет-ресурсы
Var a,b,X : real;
Begin
// Ввод исходных данных.
Writeln('Введите исходные данные');
Write('a='); Readln(a);
Write('b='); Readln(b);
// Расчетная часть.
if a>b
then if a=0
then writeln('Вычисление по первой ветви невозможно,
так как переменная "a" равна нулю')
else begin X:=b/a + 2;
Writeln('Результат:');
Writeln('X=',X);
end
else if a=b
then begin X:=-57;
Writeln('Результат:');
Writeln('X=',X);
end
else if b=0
then writeln('Вычисление по третьей ветви невозможно,
так как переменная "b" равна нулю')
else begin X:=(a-b) / b;
Writeln('Результат:');
Writeln('X=',X);
end;
End.
Данная программа будет корректно обрабатывать все возможные критические ситуации. Например, при вводе данных, рассмотренных выше (a=0, b=-1), программа выдаст не сообщение об ошибке, а корректное сообщение пользователю:
Разработанная программа вполне корректна. Это так. Но в результате доработки – код программы стал очень громоздким. Кроме того, в коде нашей программы трижды (в каждой из вычислительных ветвей) повторяются одинаковые команды печати результата.
Нельзя ли каким-либо способом упростить этот код?
Методов оптимизации кода существует достаточно много. Например, мы можем сразу проверить и отсечь все критические ситуации, а если их нет, то выполнить основное вычисление уже без дополнительных проверок. Правда для этого нам придётся воспользоваться сложными составными условиями, использующими логические операции «and», «or», «xor», «not».
В результате окончательный, оптимизированный, корректный код программы примет следующий вид:
Var a,b,X : real;
Begin
// Ввод исходных данных.
Writeln('Введите исходные данные');
Write('a='); Readln(a);
Write('b='); Readln(b);
// Расчетная часть.
if ((a>b) and (a=0))
then writeln('Вычисление по первой ветви невозможно,
так как переменная "a" равна нулю')
else if ((a<b) and (b=0))
then writeln('Вычисление по третьей ветви невозможно,
так как переменная "b" равна нулю')
else begin
if a>b
then X:=b/a + 2
else if a=b
then X:=-57
else X:=(a-b) / b;
// Печать результата
Writeln('Результат:');
Writeln('X=',X);
end;
End.
4.3 Лабораторная работа №3 «Массивы и циклы в языке Паскаль»
При выполнении данной работы требуется написать и отладить программу, организующую и заполняющую двумерный массив числовыми данными по определённому закону. Вывести этот массив на экран монитора. Произвести дополнительные вычислительные действия над данными, расположенными в этом массиве, согласно варианту задания.
Темы, которые необходимо знать для выполнения и защиты данной работы:
Понятие массива.
Одномерные и многомерные массивы.
Описание и использование массивов в языке Паскаль.
Организация доступа к элементам массива.
Принцип размещения массивов в памяти.
Понятие цикла.
Итерационные переборные циклы «For» в языке Паскаль.
Циклы с «пред» условием «While do» в языке Паскаль.
Циклы с «пост» условием «Repeate Until» в языке Паскаль.
Операторы досрочного прерывания текущей итерации и досрочного прерывания всего цикла «Continue» и «Break».
Использование циклических вычислительных процессов при обработке массивов.
Дополнительно: Организация неявных циклических процессов при помощи оператора безусловного перехода «GoTo метка».
Выполнение данной работы должно проходить в 8 этапов:
Этап первый. Предварительный анализ предметной области задачи.
Этап второй. Разработка алгоритма заполнения матрицы.
Этап третий. Разработка алгоритма вывода матрицы на экран.
Этап четвёртый. Оптимизация разработанных алгоритмов.
Этап пятый. Организация диалога с пользователем для ввода запрашиваемых по условию второй части задания дополнительных данных.
Этап шестой. Организация дополнительных вычислений, определённых во второй части задания.
Этап седьмой. Организация дополнительных вычислений, определённых в третьей части задания.
Этап восьмой. Тестирование и доработка программы, если это необходимо.
Общие требования к работе (минимальный уровень, оценка «удовлетворительно»):
Определить в программе матрицу размером 10х10.
Заполнить её указанным в варианте задания способом.
Вывести матрицу на экран.
Алгоритм заполнения и вывода может быть любым.
Для защиты на оценку «хорошо»:
Организовать диалог с пользователем и ввести дополнительные данные.
Выдать ответ в соответствии с условием задачи и введёнными данными.
Для защиты на оценку «отлично»:
Выполнить дополнительные расчёты (определённые в варианте задания) по данным, находящимся в матрице и выдать соответствующие результаты.