- •Алгоритмы, структуры данных и программирование
- •Қасымқанұлы Бөрібай, к.Ф.-м. Н., доцент кафедры высшей математики Костанайского государственного педагогического института
- •Работа №1
- •1 Перечень знаний и умений, необходимых для выполнения лабораторной работы
- •2 Пример решения задачи
- •1 Способ:
- •2 Способ:
- •3 Задачи
- •Работа №2
- •1 Перечень знаний и умений, необходимых для выполнения лабораторной работы
- •2 Пример решения задачи
- •4 Тесты
- •3 Задачи
- •4 Тесты
- •Работа №3
- •1 Перечень знаний и умений, необходимых для выполнения лабораторной работы
- •2 Примеры решения задач
- •3 Задачи
- •4 Тесты
- •Работа №4
- •1 Перечень знаний и умений, необходимых для выполнения лабораторной работы
- •2 Пример решения задачи
- •3 Задачи
- •4 Тесты
- •Работа №5
- •1 Перечень знаний и умений, необходимых для выполнения лабораторной работы
- •2 Пример решения задачи
- •3 Задачи
- •4 Тесты
- •Работа №6
- •1 Перечень знаний и умений, необходимых для выполнения лабораторной работы
- •2 Пример решения задачи
- •3 Задачи
- •4 Тесты
- •Работа №7
- •1 Перечень знаний и умений, необходимых для выполнения лабораторной работы.
- •2 Пример решения задачи
- •3 Задачи
- •4 Тесты
- •Работа №8
- •1 Перечень знаний и умений, необходимых для выполнения лабораторной работы
- •2 Пример решения задачи
- •3 Задачи
- •4 Тесты
- •Работа №9
- •1. Перечень знаний и умений, необходимых для выполнения лабораторной работы
- •2. Пример решения задачи
- •3. Задачи
- •4. Тесты
- •Работа №10
- •1. Перечень знаний и умений, необходимых для выполнения лабораторной работы
- •2. Пример решения задачи
- •3. Задачи
- •4. Тесты
- •Работа №11
- •1. Перечень знаний и умений, необходимых для выполнения лабораторной работы
- •2. Пример решения задачи
- •3. Задачи
- •4. Тесты
- •Работа №12
- •1. Перечень знаний и умений, необходимых для выполнения лабораторной работы
- •2. Пример решения задачи
- •3. Задачи
- •4. Тесты
- •Работа №13
- •1. Перечень знаний и умений, необходимых для выполнения лабораторной работы
- •2. Пример решения задачи
- •3. Задачи
- •4. Тесты
- •Работа №14
- •1. Перечень знаний и умений, необходимых для выполнения лабораторной работы
- •2. Пример решения задачи
- •3. Задачи
- •4. Тесты
- •Работа №15
- •1 Перечень знаний и умений, необходимых для выполнения лабораторной работы
- •2 Пример решения задачи
- •3 Задачи
- •4 Контрольные вопросы
- •Ответы к тестовым заданиям
Работа №1
Тема: Программирование разветвляющегося процесса
Цель: Ознакомиться с условными операторами и научиться составлять алгоритмы задач с разветвляющимися процессами
1 Перечень знаний и умений, необходимых для выполнения лабораторной работы
Перед тем, как приступить к выполнению лабораторной работы, студенту необходимо ознакомиться со следующим материалом:
логическая структура программы, написанной на языке Turbo Pascal;
способы объявления стандартных типов данных;
назначение и синтаксис условных операторов;
назначение и синтаксис операций div, mod;
назначение и синтаксис функции odd;
назначение и синтаксис логических операторов.
2 Пример решения задачи
Вычислить
корни квадратного уравнения
Для решения задачи необходимо сначала проанализировать ее условие. Данное уравнение имеет два корня, если дискриминант больше нуля. Если дискриминант равен нулю, то корень один. При отрицательном дискриминанте уравнение не имеет решения, т.е. не имеет корней.
Дискриминант
вычисляется по формуле:
.
Поскольку в результате решения квадратного
уравнения возможны три исхода (два
корня, один корень, нет корней), процесс
программирования разветвляется на три
части в зависимости от значения
дискриминанта. Решение задачи, т.е. текст
программного кода, будет подробно
представлено ниже. А сначала разберем
упрощенный вариант, когда нам не важно
равен ли дискриминант нулю.
Разобьем задачу на три этапа:
ввод исходных данных;
вычисление корней уравнения;
вывод результирующего значения.
Для реализации первого этапа пользователю необходимо сделать запрос о значениях переменных a, b и с. Для этого используются операторы read и write:
{в этой строке с помощью оператора writeln на экран выдается сообщение “Введите значение а”, которое объясняет пользователю, каких действий ожидает от него программа, при этом после вывода сообщения, курсор переходит на следующую строку.}
writeln (‘Введите значение а’);
{здесь значение, которое пользователь ввел с клавиатуры (вводом считается завершение набора символов клавишей ENTER), помещается в переменную а.}
readln (a);
{выполняет действия аналогичные действиям первой строки с той разницей, что запрашиваются две переменные.}
writeln (‘Введите значения b и с’);
{для того чтобы значения вводимые пользователем были помещены в ячейки b и с, пользователь должен ввести их через пробел, либо ввод каждого значения завершить клавишей ENTER.}
readln (b, с);
Приступим к реализации второго этапа. Сначала необходимо вычислить дискриминант. Это выполняется строкой вида:
d=:b*b-4*a*c;
Теперь необходимо проанализировать имеет ли уравнение решение, при заданных пользователем переменных a,b,c. Анализ осуществляется посредством оператора if….then….else.
if d>=0
then
begin
x1:=(-b+sqrt(d))/(2*a);
x2:=(-b-sqrt(d))/(2*a);
end.
Причём, если значение дискриминанта равно нулю, х1 и х2 будут иметь одинаковые значения.
Третий этап включает в себя вывод результирующего значения на экран. В случае если корни имеются, строка вывода примет вид:
writeln (‘ответ: х1=’, х1, ‘х2=’, х2);
Если же ответов нет, то writeln (‘ответа нет’);
Поскольку при выводе наблюдается два исхода в зависимости от условия (отрицателен или нет дискриминант), которое совпадает с условием второго этапа: d>=0, третий и второй этапы можно объединить.
Прежде чем скомпоновать программу полностью необходимо определить тип используемых переменных. В задаче переменные a, b и с вводятся пользователем и могут быть либо целого типа (integer), либо вещественного (real). Переменная d обозначающая дискриминант, вычисляется по формуле, причем, при вычислении используется операции умножения и вычитания. Поэтому, если a, b и с были объявлены как переменные типа integer, то d можно объявить как переменную этого же типа, так как применение данных арифметических операций не позволяет выйти переменной d за диапазон целых чисел. Переменные х1 и х2 должны быть объявлены как переменные вещественного типа, поскольку при их вычислении используется арифметическая операция деление.
Таким образом, программа будет иметь вид:
рrogram korny; {имя программы}
uses crt; {библиотека, включающая стандартные функции ввода вывода}
var a,b,c,d: integer; {объявление переменных}
x1,x2: real;
begin
clrscr; {очищение экрана}
writeln (‘Введите значение а’); readln (a);
writeln (‘Введите значения b и с’); readln (b, с);
d=:b*b-4*a*c;
if d>=0
then
begin
x1:=(-b+sqrt(d))/(2*a);
x2:=(-b-sqrt(d))/(2*a);
writeln (‘ответ: х1=’, х1, ‘х2=’, х2);
end
else
writeln (‘ответа нет’);
end.
Рассмотрим способы решения задачи, имеющие и выводящие на экран один корень в случае равенства дискриминанта нулю.
Первый и третий этапы решения задачи аналогичны этапам рассмотренным выше. Второй этап можно реализовать несколькими способами.
