ЛР6. Лабораторная работа 6 режим программирования организация разветвлений и циклов ст гр. Икт801 Каримов Рустам
Скачать 124.18 Kb.
|
ФЕДЕРАЛЬНОЕ АГЕНТСТВО СВЯЗИ Федеральное государственное бюджетное образовательное учреждение высшего образования «Санкт-Петербургский государственный университет телекоммуникаций им. проф. М. А. Бонч-Бруевича» ___________________________________________________________________________ Кафедра радиосистем и обработки сигналов Дисциплина «Прикладные пакеты моделирования» Лабораторная работа № 6 РЕЖИМ ПРОГРАММИРОВАНИЯ: ОРГАНИЗАЦИЯ РАЗВЕТВЛЕНИЙ И ЦИКЛОВ Выполнил: ст. гр. ИКТ-801 Каримов Рустам Проверил: доцент А.С. Леонюк _____________________ Санкт-Петербург 2020 1. Организация разветвлений с одним условием. Содержимое function-файла(y1.m): function y1 = y1(a, b) x=[-4:0,1:4]; if and (a!= 0, b!= 0) y1 =a*sin(b*x); plot (x,y1) grid title ('y1=a*sin(b*x)'); else y1 = (a+2)*x +b; plot (x,y1) grid title ('y1=(a+2)*x+b'); end endfunction Содержимое командного окна: >> p=y1(0,0); >> p=y1(3,-1); Пояснение: разветвление по условию выполняется с помощью оператора if при организации разветвления проверяется условие y1 – выходной параметр, a и b – входные 2. Организация разветвлений с несколькими условиями. Содержимое function-файла(y2.m): function y2 = y2(a, b) x = [-4:0,1:4]; if and (a!= 0, b!= 0) y2 =a*sin(b*x); plot (x,y2) grid title ('y2=a*sin(b*x)'); elseif and(a>-2,b>0) y2 = (a+2)*x +b; plot (x,y2) grid title ('y2=(a+2)*x+b'); else y2=(2-a)*(x.^2) + b; plot (x,y2) grid title ('y2=(2-a)*(x.^2) +b'); end endfunction Содержимое командного окна: >> z=y2(0,0); >> z=y2(-3,8); >> z=y2(0,1); Пояснение: if elseif else использованы для организации разветвления 3. Организация цикла с заранее известным числом повторений. Содержимое function-файла(Fibonacci.m): function F=Fibonacci(i) F1=0; F2=1; disp(strcat(num2str(F1,F2))) for i=3:10 F=F1+F2; F1=F2; F2=F; disp(strcat(num2str(F))) end endfunction Содержимое командного окна: >> F=Fibonacci 0 1 2 3 5 8 13 21 34 F = 34 Пояснение: for использован для организации цикла F - выходной параметр, i - входной 4.Организация цикла с заранее неизвестным числом повторений. Содержимое function-файла(GeomProgression.m): function [s,s1,s2] = GeomProgression(q) n=0; s0=0; q=input('q= ') e=input('e= ') while e>1e-4 s=s0+q.^n; e=abs(s-s0); s0=s; n=n+1; end s1=1/(1-q) s2=abs(s-abs(s1)) disp(strcat(['s= ', num2str(s),'s1= ', num2str(s1), 's2= ', num2str(s2)])) endfunction Содержимое командного окна: >> GeomProgression q= 0.56 q = 0.56000 e= 57 e = 57 s1 = 2.2727 s2 = 0.00011905 s= 2.2726s1= 2.2727s2= 0.00011905 ans = 2.2726 Пояснение: while использован для организации цикла s,s1,s2-выходные параметры, q,e-входные 5. Организация разветвлений в зависимости от значения выражения. Содержимое function-файла(DifferentFunctions.m): % script DifferentFunctions clc clear disp('0-y1') disp('1-y2') disp('2-Fibonacci') disp('3-GeomProgression') variant=input('variant= '); switch (variant) case 0 disp('Исполняется файл y1') a=input('a= ') b=input('b= ') y=y1(a,b); case 1 disp('Исполняется файл y2') a=input('a= ') b=input('b= ') y=y2; case 2 disp('Исполняется файл Fibonacci') y=Fibonacci; case 3 disp('Исполняется файл GeomProgression') y=GeomProgression; otherwise disp('Неправильный ввод') end Содержимое командного окна: 0-y1 1-y2 2-Fibonacci 3-GeomProgression variant= 3 Исполняется файл GeomProgression q= 0.5 q = 0.50000 e= 57 e = 57 s1 = 2 s2 = 0.000061035 s= 1.9999s1= 2s2= 6.1035e-05 0-y1 1-y2 2-Fibonacci 3-GeomProgression variant= 0 Исполняется файл y1 a= 2 a = 2 b= 3 b = 3 0-y1 1-y2 2-Fibonacci 3-GeomProgression variant= 6 Неправильный ввод Пояснение: switch использован для организации разветвления при организации разветвления проверяется значение выражения переменная variant может принадлежать к типу данных int |