clear all
clc
% LABORATORIUM  nr. 3   (instrukcje sterujace)      MATLAB 
%%%%%%%%%%%%%Teoria 1%%%%%%%%%%%%%%%%%
% Instrukcja warunkowa if ma nastepujaca postac:
% 
% if warunek 1              (wykonywane jeœli warunek prawdziwy)
%    blok instrukcji
% elseif warunek 2          
%    blok instrukcji
%     ........
% elseif warunek n-ty          
%    blok instrukcji     
% else 
%    blok instrukcji
% end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Przyk³ad 1  (odblokuj sobie kod)%%%%%%%%%%%%%%
% % Oblicz wartosc funkcji f(x)  dla dowolnego x 
% % f(x)=x  gdy x<0  oraz  f(x)=2x  gdy x>0
% varX = input('Podaj wartosc argumentu funkcji x = ')
% if varX < 0              
%     varY = varX;
%     disp(['Wartosc funkcji dla argumetu x = ',num2str(varX),' wynosi f(x) = ',num2str(varY)])
% elseif varX > 0         
%     varY = 2 * varX;
%     disp(['Wartosc funkcji dla argumetu x = ',num2str(varX),' wynosi f(x) = ',num2str(varY)])
% else 
%     disp('brak rozwiazania')
% end
%%%%%%%%%%%%%%%%%Teoria 2 
% Instrukcja switch ma nastepujaca postac:
% 
% switch zmienna              
%    case wartosc_1 zmiennej
%          blok instrukcji
%          ......
%    case wartosc_n-ta zmiennej
%          blok instrukcji
% otherwise 
%    blok instrukcji
% end

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Przyk³ad 2%%%%%%%%%%%%%%
% % Napisz program który wyswietli wyniki twojego kolokwium, wykorzystaj funkcje wbudowana: menu
% numer wcisnietej kontrolki = menu(‘tytu³ menu’,’nazwa 1’,’nazwa 2 ’,’nazwa 3’, …)
%              
% nPushButton = menu('Wyniki mojego kolokwium','napisalem wszystko','napisalem polowe','nic nie napisalem')
% switch nPushButton
%     case 1      
%         disp('Ocena 5.0')
%     case 2      
%         disp('Ocena 3.0')
% end
%     otherwise
 %         disp('Co ja robie tu ???')                                                                                                                                                                                                                                                                                                                                   
% 
%%%%%%%%%%%%%Teoria 3%%%%%%%%%%%%%%%%%
% Petla for ma nastepujaca postac:
% 
% for wektor (macierz)
%    blok instrukcji
% end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Przyk³ad 3  (odblokuj sobie kod)%%%%%%%%%%%%%%
% Napisz skrypt, wypisze pierwiastki liczb o wartosciach od 1 do 10 
% for indexVector = 1:10
%     vector(indexVector) = sqrt(indexVector); 
% end
% vector
%%%%%%%%%%%%%Teoria 4%%%%%%%%%%%%%%%%%
% Petla while ma nastepujaca postac:
% 
% while warunek (instrukcje wykonywane je¿eli prawdziwy)
%    blok instrukcji
% end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Przyk³ad 4 (odblokuj sobie kod)%%%%%%%%%%%%%%
% Napisz skrypt, wypisze pierwiastki liczb o wartosciach od 1 do 10 
% indexVector = 1;
% while indexVector <= 10
%     vector(indexVector) = sqrt(indexVector); 
%      indexVector = indexVector + 1;
% end
% vector

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%Zadanie do realizacji
%Zad. 1. - u¿yj instrukcji warunkowej if 
% Utworz skrypt, ktory obliczy pierwiastki równania kwadratowego postaci ax^2+bx+c=0 
% dla dowolnie zdeklarowanych przez u¿ytkownika sta³ych  a, b, c    
% Zad.2 - wykorzystaj  instrukcje switch       
% Napisz skrypt, w ktorym w zaleznosci od wybranej przez uzytkownika liczby
% calkowitej z zakresu od 1 do 5, wykonane zostana nastepujace dzialania:   
% dla wpisanej liczby 1  zostanie obliczona wartosc sin(x)
% dla liczby 2 obliczona cos(x)  oraz dla pozostalych tg(x),                                                    
% Zad.3  
% Napisz skrypt, oblicz silnie z dowolnie wprowadzonej liczby ca³kowitej n dwoma sposobami, 
%raz wykorzystaj petle for, raz wektorowo wykorzystuj¹c funkcjê prod(). 
% Mozesz zmierzyc czas wykonywanych operacji.   tic – w³¹cza stoper      toc- wy³acza stoper   
% Zad.4.
% Napisz program, ktory obliczy dowolna potege dowolnie wybranej liczby wiekszej od zera. 
% Zad.5. 
% Napisz skrypt, ktory obliczy wartosc wyra¿enia x*x dla jednego argumentu wejsciowego,
% x*y dla dwóch argumentów wejœciowych, dla pozosta³ych przypadkow wyswietli komunikat o bledzie.
% Zad.6. 
% Napisz program, ktory dla dowolnej liczby x podanej przez uzytkownika  
% czy jest to liczba (a) parzysta, (b) nieparzysta, (c) nieca³kowita. 
% Wyswietl odpowiedni komunikat dla u¿ytkownika, mozesz wykorzystac
% funkcje mod(x,2) wyznaczajaca reszte z dzielenia przez 2
% Zad.7. 
% Napisz skrypt, ktory obliczy pierwiastki kolejnych nieparzystych liczb od 1 do 11
% Zad.8. 
% Korzystajac z instrukcji sterujacych napisz program ktory wykona dla
% dwoch losowych macierzy kwadratorych o rozmiarach zadeklarowanych przez
% uzytkownika
% a) mnozenie macierzowe
% b) mno¿enie tablicowe 
% sprawdz zgodnosc uzyskanych wynikow bezposrednio uzywajac: A*B oraz A .* B
% Zad.9 - wykorzystaj while
% Napisz skrypt, ktory obliczy sume ciagu: 1+1/2+1/3+…+1/n  
% gdzie: zmienna wejsciowa n jest dowolnie zadana przez uzytkownika
% Zad.10. - uzyj funkcji menu oraz switch
% Napisz program, który dla wybranej losowo, kwadratowej macierzy o dowolnym rozmiarze obliczy: 
% wyznacznik, wartosc srednia i odchylenie standardowe std(A) poszczególnych kolumn. 
% Zad.11   
% Napisz program, który dla dowolnie zadanego przedzia³u argumentow funkcji narysuje wykres
% ktory uzytkownik samodzielnie wybierze np.: sin(x), cos(x), tg(x),
% Program powinien stale proponowac uzytkowi rysowanie funkcji dziêki wpisaniu komendy  "start", 
% natomiast konczyc swoje dzialanie w przypadku, gdy zostanie wpisana komenda "stop", 
% wykorzystaj funkcje: break, continue
%Zad.12. W informatyce kwantowej do realizacji podstawowych algorytmow kwantowych wykorzystuje sie 
% tzw. bramki kwantowe,  jedn¹ z nich jest bramka Hadamarda.
% Jedno-kubitowa bramka kwantowa jest opisana za pomoc¹ macierzy:
%          H_1 = 0.5*[ 1, 1;
%                    1, -1]
% M-kubitowa  bramka kwantowa jest opisywana przez macierz tworzona rekurencyjnie:
%        H_m = 0.5*[H_m-1, H_m-1;
%                 H_m-1, - H_m-1]    gdzie: _m-1 to indeks dolny macierzy H
% Zakladajac, ze dysponujesz komputerem kwantowym  m-kubitowym  przygotuj skrypt 
% stanowiacy podstawe twojej biblioteki, ktory dla dowolnie  podanej liczby kubitow obliczy macierz H
%(uwaga, ze wzglêdu na zasoby twojego PC-ta  nigdy nie przekraczaj liczby 12).
%Do obliczen wykorzystaj funkcjê matlaba 
%Zad.13.
% Utworz kolejno 2 niezalezne skrypty: 
% pierwszy o nazwie rysujWykres.m do narysowania wykresu 2D funkcji f(a,b), 
% drugi o nazwie minimalnyElement.m  wyznaczaj¹cy minimaln¹ wartoœæ funkcji f(a,b)  
% f(a,b)= -2*(a+b)^2, 
% a i b zdeklaruj jako dowolne wektory rownoliczne
% nastepnie utworz trzeci  skrypt o nazwie komplet.m 
% w ktorym wpisz kolejno:
% minimalnyElement.m
% pause(10)
% rysujWykres.m
% zwroc uwage ze mozesz wywolywac skrypt w skrypcie


% 
% Uwaga:
% jesli  nie uzywasz zmiennych globalnych to pamietaj aby w 3 skryptach uzywac tych samych nazw zmiennych













%                                                                 
