
- •Учебно-методическое пособие по изучению теоретического материала и самостоятельному выполнению лабораторных заданий
- •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
Readln(a);
Readln(b);
if a>b then X:=b/a + 2
else if a=b then X:=-57
else X:=(a-b) / b;8
Writeln(X);
End.
Это вполне рабочая программа, выполнение которой на компьютере выдаст следующий результат:
Этап пятый. Структуризация и комментирование кода программы и сообщений пользователю.
В целях повышения «читаемости» кода программы и удобства работы с ней, так же, как и в первой работе, структурируем код программы, снабдим его соответствующими комментариями и выдадим пользователю соответствующие сообщения. В результате код программы примет вид:
Var a,b,X : real;
Begin
// Ввод исходных данных.
Writeln('Введите исходные данные');
Write('a='); Readln(a);
Write('b='); Readln(b);
// Расчетная часть.
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.
Результат работы этого варианта программы буде выглядеть гораздо нагляднее:
Этап шестой. Тестирование программы и определение её применимости для вычислений при различных значениях исходных данных.
Тестирование разработанной нами программы показывает, что, в ряде случаев программа может выдавать сообщения об ошибке.
Т ак же как и в работе № 1, при разработке данной программы мы не провели анализ предметной области, и не определили области допустимых значений исходных данных.
Так, при вводе таких данных, как: a=0, b=-1, программа выдаст сообщение о неверной операции. При таких исходных данных в программе будет выполнено первое условие «a>b» и вычисление пойдёт по первой ветви, в которой рассчитывается значение по формуле: «b/a + 2». В результате возникнет ситуация деления на ноль, так как переменная равна «a» нулю.
В случае же ввода таких данных, как: a=-5, b=0, ситуация деления на ноль возникнет в третье ветви вычислений, по условию «a<b», в которой рассчитывается значение формулы: и вычисление пойдёт по первой ветви, в которой рассчитывается значение по формуле «(a-b) / b».
Этап седьмой. Доработка программы по результатам тестирования.
Одной из основных трудностей при разработке реальных программ является выявление и «нейтрализация» всех возможных критических ситуаций, которые могут возникнуть в процессе работы программы.
В нашем примере нам удалось выявить две таких ситуации:
Деление на ноль при вычислении по первой ветви, когда переменная «a>b» и, при этом, «a=0».
Деление на ноль при вычислении по третьей ветви, когда переменная «a<b» и, при этом, «b=0».
Для нейтрализации этих ситуаций нам необходимо добавить в код программы две дополнительных проверки:
В первой ветви вычислений необходимо добавить проверку равенства «a=0».
В третьей ветви – проверку равенства «b=0».
При этом, в случае выполнения этих равенств, необходимо отменить вычисления и выдать пользователю соответствующее ситуации сообщение.
В результате доработки код программы примет следующий вид: