Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Posobie_Programmirovanie_1_Kurs_1_Sem_Anosov_Yu...doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.2 Mб
Скачать

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 этапов:

  1. Этап первый. Предварительный анализ предметной области задачи.

  2. Этап второй. Разработка алгоритма заполнения матрицы.

  3. Этап третий. Разработка алгоритма вывода матрицы на экран.

  4. Этап четвёртый. Оптимизация разработанных алгоритмов.

  5. Этап пятый. Организация диалога с пользователем для ввода запрашиваемых по условию второй части задания дополнительных данных.

  6. Этап шестой. Организация дополнительных вычислений, определённых во второй части задания.

  7. Этап седьмой. Организация дополнительных вычислений, определённых в третьей части задания.

  8. Этап восьмой. Тестирование и доработка программы, если это необходимо.

Общие требования к работе (минимальный уровень, оценка «удовлетворительно»):

  • Определить в программе матрицу размером 10х10.

  • Заполнить её указанным в варианте задания способом.

  • Вывести матрицу на экран.

  • Алгоритм заполнения и вывода может быть любым.

Для защиты на оценку «хорошо»:

  • Организовать диалог с пользователем и ввести дополнительные данные.

  • Выдать ответ в соответствии с условием задачи и введёнными данными.

Для защиты на оценку «отлично»:

  • Выполнить дополнительные расчёты (определённые в варианте задания) по данным, находящимся в матрице и выдать соответствующие результаты.