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

Лекция 2 (3)

Операторы цикла и условные операторы

Программа может иметь комментарии. Символ %означает, что далее следует поясняющий текст. Все комментарии начинаются с этого знака. Комментарий не является исполняемым оператором.

Вывод комментариев на экран при выполнении программы обеспечивает оператор echo on. Отменяет вывод комментариев на экран оператор echo off . Оператор pause приостанавливает выполнение программы и ожидает нажатия любой клавиши для продолжения. Оператор pause(n) создает паузу в n секунд.

Операторами языка можно пользоваться как при создании программ, так и в режиме прямых вычислений

Язык ML имеет специальные управляющие конструкции, которые позволяют задавать последовательность выполнения команд в программах. Такие конструкции называются операторами управления и задаются с помощью ключевых слов. Это условный оператор if и оператор переключения (выбора) switch … case и операторы цикла for и while .

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

Бл-сх.

Условный оператор позволяет организовать ветвления в программе и имеет следующую синтаксическую конструкцию:

if (<логическое выражение1>)

<операторы>

Else

<операторы>

E nd

Синтаксис и выполняемые действия этих операторов аналогичны соответствующим операторам известных языков программирования. Область действия конструкции ограничивается словом end .

Условный оператор может содержать ветку elseif и иметь такой вид:

if (<логическое выражение1>)

  <операторы>

[elseif (<логическое выражение2>)

<операторы>

elseif (<логическое выражение3>)

<операторы>

…]

[else

<операторы>]

End

В этой конструкции может быть произвольное количество вложений ветвей elseif, или их может не быть вовсе.

MATLAB допускает вложенность операторов. Условный оператор может быть вложенным. Тогда каждому if может соответствовать свой end.

if (<логическое выражение1>)

<операторы>

[else

if (<логическое выражение2>)

<операторы>

 [else

<операторы>]

End

End

Пример

a=input('введите a=');

b=input('введите b=');

%disp(sprintf('исходные данные:при a=%3.1f; при b=%3.1f',a,b))

 if a>10

res=a-b;

 elseif a>0&a<=10&b<0

       res=a+b;        

 else

res=2*b;

 end

 disp(sprintf('исходные данные:при a=%3.1f; при %b=%3.1f\nres=%3.1f',a,b,res))

 %disp(sprintf('f=%3.1f',res))

disp(res)

Найти максимум из 3-х чисел x, y, z

x=input('bb x= ');

y=input('bb y= ');

z=input('bb z= ');

if (x>y)&(x>z)

max=x

elseif (y>z)

max=y

else

max=z

end

Disp ( max )

Оператор выбора

 

Оператор переключения (выбора) . Если необходимо сделать множественный выбор, можно воспользоваться оператором переключения, синтаксическая конструкция которого приведена ниже:

Switch <ключевое выражение>

Case { <список значений1}

<операторы>

Case {<список значений2>}

<операторы>

…….

[Otherwise

<операторы>]

End

Сначала вычисляется значение ключевого выражения. Затем это значение ищется в списках значений. Если совпадение найдено, то выполняются операторы соответствующего блока, в противном случае выполняются операторы, стоящие после ключевого слова otherwise.

Пусть необходимо по введенному с клавиатуры номеру месяца вывести название времени года. Ниже приведены команды, позволяющие решить эту задачу:

n=input('введи номер месяца : ')

switch n

case {1,2,12}

  s='зима';

case {3,4,5}

  s='весна';

case {6,7,8}

   s='лето';

case {9,10,11}

  s='осень';

otherwise

  s='ошибка';

end  

disp(strcat('введенный номер месяца - ',s))

 

Циклы

Напомним:

Цикл – это многократно повторение одинаковых действий с различными исходными значениями. Однократное выполнение совокупности действий в цикле называется итерацией цикла. Операторы и конструкции, которые выполняются в цикле, называется телом цикла.

Различают 2 вида циклов: арифметические и итерационные. Цикл называют арифметическим, если количество повторений заранее известно или может быть вычислено. Если количество повторений заранее неизвестно, то такой цикл называют итерационным.

В Матлабе различают циклические структуры: цикл «ДЛЯ», цикл «ПОКА». Это for и while соответственно.

Обычно, когда необходимо выполнять тело цикла для различных значений некоторой переменной в заданном диапазоне, удобно использовать конструкцию «ДЛЯ». В заголовке такого цикла указывается и начальное значение, и шаг, и конечное значение переменной. В остальных случаях используют конструкцию «ПОКА». В цикле «ПОКА» сначала, до выполнения тела цикла, проверяется условие, поэтому цикл может не выполниться ни одного раза. При использовании этого вида цикла обязательно до цикла надо указать начальное значение переменной, которая будет изменяться в цикле. Кроме того всегда внутри цикла должен быть оператор, изменяющий условие.

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

Оператор цикла с параметром позволяет описывать действия, которые выполняются фиксированное количество раз:

For <пар. цикла>=<нач. значение>:<шаг>:<кон. значение>

                       <операторы>

End

Для досрочного прерывания цикла используется оператор break.

Если шаг изменения параметра цикла равен единице, то его можно не указывать. Параметры цикла, их начальное и конечное значения и шаг изменения могут быть целого и вещественного типа.

Например, требуется вычислить значения у=x2 для всех х на отрезке от 1 до 10 c шагом равным 3:

>>for x=1:3:10 1:2:10

    y=x^2

end

Результат выполнения данного оператора:

y =

1

y =

16

y =

49

y =

100

Или вычислим значения у для всех х на отрезке от 0 до 1.5
c шагом равным 0,5:

for x=0:0.5:1.5

y=x^2;

disp(strcat('x=',num2str(x),' y=',num2str(y)))

end

В результате на экране получим:

x=0 y=0

x=0.5 y=0.25

x=1 y=1

x=1.5 y=2.25

Вычислить сумму

Дано натуральное n. Вычислить значение суммы

s=0;

n=input('введите n=');

for i=1:n

s=s+1/i^2;

end

disp(strcat('s=', num2str(s)))

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

p = 1;

a = 1;

for i = 1:11

x=x/i;

p=p*(1+x);

end

disp ( p )

Оператор цикла с предусловием while позволяет запрограммировать цикл, в котором количество повторений зависит от выполнения некоторого условия:

while <лог. выражение, задающее усл. продол. цикла>

<операторы>

End

Например, найти целое х, при котором ax больше заданного B.

a=input( ' введи a=' );

b=input( ' введи b=' );

x=0;

sta=1;

while sta <b

       x=x+1;

       sta=sta*a;  

end

disp(x)

Получим на экране:

введи a=2

введи b=45

6

Пример.

Вычислить за сколько лет в сбербанке будет накоплена сумма S при начальном вкладе W и процентах годового прироста P.

K – число лет.

D – прирост за год.

D=w*p/100

W=w+d

k=0;

p=10;

s=1000;

w=800;

while w<s

d=w*p/100;

w=w+d;

k=k+1;

end

disp(strcat( 's=' ,num2str(s), ' k=' ,num2str(k), ' w=' ,num2str(w)))

На экране получим:

s=1000 k=3 w=1064.8


Дата добавления: 2021-04-05; просмотров: 64; Мы поможем в написании вашей работы!

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




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