
- •Учебно-методическое пособие по изучению теоретического материала и самостоятельному выполнению лабораторных заданий
- •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. Программное обеспечение и Интернет-ресурсы
Варианты заданий на лабораторную работу № 2.
1 |
|
16 |
|
2 |
|
17 |
|
3 |
|
18 |
|
4 |
|
19 |
|
5 |
|
20 |
|
6 |
|
21 |
|
7 |
|
22 |
|
8 |
|
23 |
|
9 |
|
24 |
|
10 |
|
25 |
|
11 |
|
26 |
|
12 |
|
27 |
|
13 |
|
28 |
|
14 |
|
29 |
|
15 |
|
30 |
|
Пример решения типовой задачи лабораторной работы № 2.
Рассмотрим решение поставленной во второй лабораторной работе задачи на примере следующего варианта задания:
Написать и отладить программу, реализующую ветвящийся вычислительный процесс и выполняющей вычисления согласно следующим формулам:
Этап первый. Предварительный анализ предметной области задачи.
В нашей задаче в вычислениях участвует два переменных объекта «a» и «b». Следовательно, нам необходимо описать в программе две соответствующие переменные. Реальные значения этих переменных будут вводиться пользователем нашей программы.
Для хранения результата вычислений также необходимо предусмотреть соответствующую переменную «X».
Так как в процессе вычислений (согласно поставленной задаче) будет неоднократно выполняться операция деления, то следует ожидать, что результат вычислений может оказаться дробным (вещественным). Кроме того, исходные значения переменных «a» и «b», также могут быть вещественными. Следовательно, тип всех переменных в нашей программе должен быть вещественным, а не целочисленным.
Итак. Для решения поставленной задачи нам необходимо определить в программе три следующих переменных вещественного типа:
Var a,b,X : real;
Этап второй. Разработка алгоритма программы.
Согласно условию задачи, при различных значениях исходных данных программа должна выполнять различные действия. Т.е. в программе необходимо организовать несколько независимых ветвей вычислений, выбираемых согласно текущим значениям переменных, введённым пользователем программы.
Выбор, по какому пути пойдёт вычисление, в языке «Паскаль» осуществляется при помощи операторов «if…then…else» или «Case».
Так как в нашей задаче не даны конкретные значения переменных, при которых следует осуществлять тот или иной выбор вычислительной ветви, а указаны только условия соответствия переменных «a>b», «a=b» и «a<b», то применение оператора «Case» нам не подойдёт. Следовательно, организацию ветвления необходимо будет реализовать, используя оператор «if…then…else».
Общий (предварительный) вид алгоритма программы будет выглядеть следующим образом:
Ввод данных (а, b).
Если a>b То: X=b / a + 2
Если a=b То: X=-57
Если a<b То: X=(a-b) / b
Печать результата (X).
Этап третий. Оптимизация разработанного алгоритма.
Если внимательно посмотреть на данный алгоритм, то легко заметить, что в случае, когда «a>b», программа, уже вычислив значение «X» по первому условию, будет проверять второе и третье условие, хотя это совершенно излишне. Можно ли остановить выполнение ненужных команд в нашей программе, если результат уже вычислен? Да. Для этого необходимо использовать не короткий, а полный оператор «if…then…else». В этом случае алгоритм пример такой вид:
Ввод данных (а, b).
Если a>b
То: X=b/a + 2
Иначе: Если a=b
То: X=-57
Иначе: Если a<b
То: X=(a-b) / b
Печать результата (X).
Такой «улучшенный» алгоритм, в случае входа в первую ветвь вычислений, уже не будет дополнительно проверять соответствие переменных остальным условиям. Т.е. программа не будет производить излишних действий.
Однако. Обратим внимание на общую связь всех условий: «a>b», «a=b» и «a<b». Легко заметить, что если не выполнено ни первое, ни второе условие, то третье условие проверять не нужно, так как оно выполнится автоматически! Действительно, если «a» не больше «b» и не равно «b», то, следовательно, «a» меньше «b»!
Следовательно, проверку третьего условия можно из алгоритма убрать, и алгоритм примет следующий вид:
Ввод данных (а, b).
Если a>b
То: X=b/a + 2
Иначе: Если a=b
То: X=-57
Иначе: X=(a-b) / b
Печать результата (X).
Этап четвёртый. Написание предварительного кода программы.
Написание кода программы по уже разработанному и оптимизированному алгоритму не составляет никакого труда.