Задание. Семакин, Информатика, 10 класс, , стр 234

Занятие №20 лекция, практическая работа

Тема: Запись и вычисление логических выражений

Практическая работа №9 Программирование ветвящихся алгоритмов

Дидактическая цель: познакомить учащихся с оператором ветвления на Паскале, с типами ветвления; с формой записи оператора ветвления на Паскале.

Литература: Семакин, Информатика, 10 класс, стр. § 19, стр 234

Видеоматериалы

https://www.youtube.com/watch?v=2TzkU2z9mgs

http://sdo.losev-it.ru/course/index.p...

https://www.youtube.com/watch?v=TpTJGOvzhtI

https://www.youtube.com/watch?v=vUI3psv1buY

http://losev-it.ru

https://www.youtube.com/playlist?list=PLT7luqA6b3njxrHHeAwzZ6atRbn4hET-z


Вопросы и задания

1 Повторить материал § 19.

2 Ознакомиться с видеоматериалами

3 Ознакомиться с материалом лекции и ответить на вопросы.

4 В тетради записать дату и тему занятия, привести блок-схему и условные операторы, описывающие структуру ветвления.

5 Внимательно ознакомьтесь с примерами программирования структуры ветвления на языке Паскаль

6 В тетради выполнить Практическую работу №9 Программирование ветвящихся алгоритмов

В начале занятия для повторения пройденного материала, найдите правильные ответы на вопросы:

1. Как записывается заголовок программы на Паскале? Program (name)
2. Как записывается раздел описания переменных? Var
3. С какими типами числовых величин работает Паскаль? Целые и вещественные
4. Как записывается оператор присваивания? :=
5. Как записывается оператор ввода и вывода в Паскале? Read (readln), write (writeln)

Алгоритмическая структура ветвления программируется в Паскале с помощью условного оператора If. Условный оператор используется для выполнения одного из двух возможных вариантов программы.

Полное ветвление:

If < логическое выражение >

Then < оператор 1 >

Else < оператор 2 >

Неполное ветвление:

If < логическое выражение >

Then < оператор >

Перед else точка с запятой не ставится!

Логическое выражение:

  • Простой формой логического выражения является операция отношения:
    • < меньше,
    • > больше,
    • <= меньше или равно,
    • >= больше или равно,
    • = равно,
    • <> не равно.
  • Сложные формы логических выражений составляются с использованием логических операций:
    • not логическое отрицание (НЕ),
    • and логическое умножение (И),
    • or логическое сложение (ИЛИ),
    • xor исключающее ИЛИ
  • Порядок действий:
  • Отрицание, умножение, сложение, операции отношений.

Операторные скобки:

  • Если после слов then или else нужно выполнить не один оператор, а несколько, то эти операторы заключают в операторные скобки: begin … end
  • Конструкция такого вида:

Begin <последовательность операторов> end

относится к составным операторам.

  • Операторы ветвления могут быть вложены друг в друга, необходимо только следить за тем, чтобы then и else одного и того же оператора располагались друг под другом.

В качестве примера рассмотрим следующую задачу:

  • Из двух заданных целых чисел выбрать наибольшее.

 

  • Математическая модель:

Данные: x, y

Результат:

  • Варианты:

Если x=5, y=8, то max=8

Если x=6, y=1, то max=6

Если x=5, y=5, то max=5

 

Программа:

Program Vetv1en;

Var x, y, max: integer;

Begin

Writeln (‘Введите два числа’);

Readln (x, y);

if x >=y then max:=x

else max:=y;

Writeln (‘наибольшее = ’,max);

End.

То, что в алгоритмах называется условием, в Паскале является логическим выражением, которое вычисляется в первую очередь. Если его значение равно true, то будет выполняться < оператор 1 > (после Then), если — false, то < оператор 2 > (после Else) для полной формы или оператор, сразу следующий после условного, для неполной формы (без Else). На ветвях может быть как простой оператор, так и составной — серия операторов в операторных скобках Begin, End.

Пример 1. По длинам трех сторон треугольника а, b, с требуется вычислить его площадь.

Для решения задачи используется формула Герона

где р = (а + b + с)/2 — полупериметр треугольника. Исходные данные должны удовлетворять основному соотношению для сторон треугольника — длина каждой стороны должна быть меньше суммы длин двух других сторон, и длины сторон не могут быть отрицательными величинами.

Имея возможность в одном условном операторе записывать достаточно сложные логические выражения, используя логические операции, мы можем сразу «отфильтровать» все варианты неверных исходных данных.

Пример 2. Требуется перевести пятибалльную оценку в ее наименование: 5 — «отлично», 4 — «хорошо», 3 — «удовлетворительно», 2 — «неудовлетворительно».

Блок-схема алгоритма приведена на рис. 1.

Рисунок 1 – Алгоритм перевода числовой оценки в словесную

Этот алгоритм имеет структуру вложенных ветвлений и может быть запрограммирован с использованием условного оператора If следующим образом:

Пример 3. Решение рассмотренной в предыдущем примере задачи можно запрограммировать с помощью одного оператора выбора, имеющегося в языке Паскаль. Вот как будет выглядеть такая программа:

Оператор выбора имеет следующий формат:

Case < селектор > of

< список констант 1 > : < оператор 1 > ;

···

< список констант N > : < оператор N > ;

Else <оператор>

End

Здесь < селектор > — это выражение любого порядкового типа; < константа > — постоянная величина того же типа, что и селектор; < оператор > — любой простой или составной оператор.

Выполнение оператора выбора происходит так: вычисляется выражение-селектор; затем в списках констант ищется такое значение, которое совпадает с полученным значением селектора; далее исполняется оператор, помеченный данной константой. Если такой константы не найдено, то происходит переход к выполнению оператора, следующего после слова Else.

Пример 4. В этом примере демонстрируется использование списка констант в операторе выбора. Программа сообщает, сдал студент экзамен или не сдал. Если оценка одна из следующих: 3, 4, 5, то экзамен сдан; если 2, то не сдан.

Case N of

       3,    4,    5:    WriteLn(' Экзамен сдан ');

                              2:    WriteLn('Экзамен не сдан');

       Else WriteLn('Нет такой оценки')

End

Так же как условный оператор, оператор выбора может ис-пользоваться в неполной форме, т. е. без ветви Else.

Если применить условный оператор, то эта программа запишется так:

If (N=3) or (N=4) or (N=5)

Then WriteLn(' Экзамен сдан ')

Else If N=2

       Then WriteLn(' Экзамен не сдан ')

       Else WriteLn('Нет такой оценки');

В условии ветвления использовано сложное логическое выражение, содержащее операции логического сложения or (или).

Вопросы и задания

1. Какие операторы используются для программирования ветвящихся алгоритмов?

2. В каких случаях удобно использование оператора выбора?

3. Составьте на Паскале программу упорядочения по возрастанию значений в трех переменных: X, Y, Z.

4. Используя оператор выбора, составьте программу, которая по введенному номеру месяца будет выводить название соответствующего времени года (зима, весна, лето, осень).

Практическая часть

Задание. Семакин, Информатика, 10 класс, , стр 234

Для одной из задач задания 1 и 2 составить блок-сему алгоритма и программу с ветвящейся структурой, используя условный оператор IF, задания 3 - составить программу, выводящую значение TRUE, если указанное высказывание является истинным, и FALSE — в противном случае (использовать условный оператор нельзя).

Примеры решения задач

Задание. Для каждой задачи составить блок-сему алгоритма и программу с ветвящейся структурой, используя условный оператор IF.

1. Даны два угла треугольника (в градусах). Определить, существует ли такой треугольник. Если да, то прямоугольный ли он. var a,b,c:real; begin writeln('введите два угла треугольника'); readln(a,b); if (a+b)>180 then write('треугольник не существует') else begin writeln('треугольник существует'); c:=180-(a+b); if (a=90) or (b=90) or (c=90) then writeln('треугольник прямоугольный') else writeln('треугольник не прямоугольный'); end; end.
2. На плоскости XOY задана своими координатами точка А. Указать, где она расположена: на какой оси или в какой координатной четверти. var x,y:real; begin writeln('введите координаты точки А'); readln(x,y); if (x=0)and (y=0) then write('в центре координат') else if (y=0) then write('на оси x') else if (x=0) then write('на оси y') else if (x>0) then if y>0 then write('в первой четверти') else write('в четвертой четверти')   else begin if y>0 then write ('во второй четверти') else write ('в третьей четверти'); end; end.
3. Грузовой автомобиль выехал из одного города в другой со скоростью V1 км/ч. Через t ч в этом же направлении выехал легковой автомобиль со скоростью v2 км/ч. Составить программу, определяющую, догонит ли легковой автомобиль грузовой через t ч после своего выезда. var v1,v2,t,t1:real; begin writeln('v1='); read(v1); writeln('t='); read(t); writeln('v2='); read(v2); writeln('t1='); read(t1); if (v2*t1>=v1*(t+t1)) then write('догонит') else write ('не догонит'); end.
4.Написать программу нахождения суммы большего и меньшего из 3 чисел. var a,b,c,max,min:integer; begin write ('введите три числа'); readln(a,b,c); if (a>b) and (a>c) then max:=a else if (b>a) and (b>c) then max:=b else max:=c; if (a<c)<="" span="" style="box-sizing: border-box;"> then min:=a else if (b else min:=c; writeln(max+min); end.
5.Написать программу, распознающую по длинам сторон среди всех треугольников прямоугольные. Если таковых нет, то вычислить величину угла С. var a,b,c,n,uc:real; f:boolean; begin writeln('введите стороны треугольника'); readln(a,b,c); if (a>b) and(a>c) then f:=(a*a=c*c+b*b) else if (b>c) and (b>a) then f:=(b*b=a*a+c*c) else f:=(c*c=a*a+b*b); if f=true then writeln ('Треугольник прямоугольный') else begin writeln ('треугольник не прямоугольный'); n:=(a*a+b*b-c*c)/(2*a*b); uc:=arctan(sqrt(1+1/n))*180/pi; writeln('Угол С равен: ',uc:8:2); end; end.
6. Составить программу, осуществляющую перевод величин из радианной меры в градусную или наоборот. Программа должна запрашивать, какой перевод нужно осуществить, и выполнять указанное действие. var gr,rad:real; s:char; begin writeln('Перевести в радианы или градусы р/г:'); read(s); if (s='р')or (s='r')or (s='R')or (s='Р') then begin writeln ('введите количество градусов'); read (gr); rad:=gr*pi/180; Write(gr:3:6,'градусов=',rad:3:6,'радиан'); end else begin write('введите количество радиан:'); read (rad); gr:=rad*180/pi; Write(rad:3:6,'радиан=',gr:3:6,'градусов'); end; end.

Задание 2

Задание 3

2. Составить программу, которая по данному числу (1-12) выводит название соответствующего ему месяца на английском языке.

 

 

Обратная связь: выполненные задания, вопросы отправляем в комментариях или личные сообщения преподавателю или на электронную почту колледжа dktidistanc@mail.ru


Дата добавления: 2020-11-23; просмотров: 800; Мы поможем в написании вашей работы!

Поделиться с друзьями:




Мы поможем в написании ваших работ!