Podstawy Informatyki



Pobieranie 153,57 Kb.
Data02.04.2018
Rozmiar153,57 Kb.

Podstawy Informatyki

Ćwiczenie : „MatLab – Najprostsze programy (skrypty)”
Programy dla MATLABa można pisać przy pomocy najprostszych edytorów tekstu jak NOTATNIK (w Ms Windows). Poszczególne instrukcje można pisać w oddzielnych liniach a gdy są w tej samej linii to oddzielać przecinkami, natomiast trzeba instrukcje kończyć średnikami - jeśli chcemy zablokować wyświetlanie wyniku każdej instrukcji na ekranie.

Po utworzeniu trzeba zapisać program do pliku tekstowego o rozszerzeniu nazwy: ".m" potocznie nazywanego: "m-plikiem".

Istnieją dwa rodzaje m-plików:


  • skrypty czyli procedury nie wymagające parametrów, wywoływane przez wpisanie nazwy pliku (bez rozszerzenia ".m") w oknie komend (działają one na zmiennych tworzonych w tzw. przestrzeni roboczej Matlab’a)

  • funkcje zwracające wartości (w postaci skalara lub wektora) i zazwyczaj wymagające podania parametrów czyli argumentów funkcji; wywołania ich są najczęściej używane w wyrażeniach stanowiących fragmenty instrukcji innych m-plików (zmienne używane w funkcji są lokalne tzn. niedostępne poza ciałem funkcji).

Dowolne objaśnienia czyli komentarze można umieszczać w m-plikach rozpoczynając od znaku procentu [%].

Aby uruchomić napisany program w Matlabie trzeba:

1. ustawić jako bieżący folder - Current Directory (u góry) - ten dysk i folder w którym m-plik został zapisany, korzystając z przycisku [...],



2. wpisać nazwę m-pliku bez rozszerzenia „.m” ale uwaga:

Matlab rozróżnia duże i małe litery



1. Pisanie pierwszego programu
Napisz program (skrypt) obliczania trzeciej potęgi podanej liczby i zapisz do pliku "pr1.m":
a = input('dana liczba=')

x=a^3


disp('szescian tej liczby='),disp(x)
Uruchom ten program w Matlabie.
Aby pozbyć się wyświetlania "echa" działania każdej instrukcji trzeba instrukcje kończyć średnikiem [;].

Linie komentarzy umieszczone na początku pliku (przed instrukcjami) wyświetlą się jako jego opis gdy wpiszemy: "help nazwa_pliku", a dodatkowo program po uruchomieniu też powinien się przedstawić.

Tak więc ulepszona wersja programu może wyglądać tak:

% Program oblicza sześcian podanej liczby

disp('Obliczanie sześcianu danej liczby:');

a = input('dana liczba=');

x=a^3;

disp('szescian tej liczby=');disp(x);


Wpisz: help pr1 a następnie jeszcze raz uruchom program.
Jeśli chcemy aby program działał dla wielu kolejno podawanych liczb – trzeba zastosować jeden z kilku możliwych typów pętli programowych. W tym przypadku najodpowiedniejsza będzie pętla WHILE ... END powtarzająca operacje aż do momentu gdy zechcemy ją zatrzymać.

Uzupełnij program pętlą WHILE ... END tak aby zatrzymał się po wprowadzeniu zera jako danej dla x.


2. Pętla FOR ... END. Zapisywanie wyników do pliku

2.1 Objaśnienia

Pętla ta ma postać



for zmienna = macierz

. . . . instrukcje



end

i wykonuje się tyle razy ile jest kolumn w macierzy a wartościami zmiennej kontrolnej są właśnie całe kolumny tej macierzy czyli wektory.

W szczególności najczęściej macierz jest ciągiem i jest to wtedy bardziej podobne do pętli for w innych językach (np. w języku BASIC) a mianowicie:

for zmienna = wart_p : krok : wart_k

. . . . instrukcje



end

Pozwala więc ona powtarzać wykonywanie bloku instrukcji określoną liczbę razy przy czym dodatkowo zmienna kontrolna w tej pętli przyjmuje kolejno wartości od wart_p do wart_k z przyrostem (lub ubytkiem) krok. Jeśli krok=1 to można go pominąć w zapisie.


Przykład 1:

Aby otrzymać kwadraty liczb parzystych od 2 do 10 i podstawić je do kolejnych elementów wektora p:

for i = 1:5

p(i) = (2*i)^2

end
Przykład 2:

Aby wyliczyć i wstawić do wektora y ciąg wartości funkcji sinus przyjmujemy konkretny zakres kąta (w radianach) na przykład od zera do pi/2 i przyrost na przykład 0.2:

k=0;

for x = 0 : 0.2 : pi/2



k=k+1;

y(k)=sin(x);

end
Przykład 3:

Program:


for w=1:3

for k=1:4

M(w,k)=w+k;

end


end

M

Wygeneruje macierz o 3 wierszach i 4 kolumnach:



M =

2 3 4 5


3 4 5 6

4 5 6 7
2.2 Zapisywanie wyników do pliku

Funkcje realizujące odczytywanie i zapisywanie informacji z i do plików dyskowych są zapożyczone z języka C. Poniżej objaśniono kilka najważniejszych funkcji na przykładzie:
% Program zapisuje do pliku wartości kąta x oraz jego funkcji sin(x), cos(x)

[id, kom] = fopen('WYNIKI1.TXT','wt'), % Tworzy plik wyników

fprintf(id,'%s\n', ' kąt x [stopnie] sin(x) cos(x)' ); % Nagłówek tabelki

for xs = 0 : 5 : 90

x = xs*pi/180; % kąt xs zamieniony na radiany

y1=sin(x); y2=cos(x);



fprintf(id,' %3d', xs);

fprintf(id,' %15.4f %12.4f\n', y1,y2);

end


fclose(id);

Objaśnienia:

Funkcja fopen tworzy i otwiera plik o nazwie 'a:\Wyniki1.txt' bo ma podaną taką nazwę pliku jako pierwszy parametr. Drugi parametr 'wt' określa typ dostępu:



'w' = zapis (ang. write), 't' – plik typu tekstowego

Funkcja ta zwraca dwie wartości, które w tym przypadku zostaną podstawione do zmiennych [id, kom] gdzie: id = identyfikator pliku, kom = komunikat o ewentualnej przyczynie niemożliwości otwarcia pliku.

Funkcja fprintf wyprowadza informacje do pliku tekstowego o identyfikatorze podanym jako pierwszy parametr tej funkcji (w naszym przypadku: id). Drugim parametrem jest łańcuch tekstowy określający format wyprowadzanej informacji. Spacje również są tu istotne.

%3d określa 3 miejsca dla liczby całkowitej (o czym świadczy litera d)

%12.4f - to format dla liczb rzeczywistych, a w nim 12 miejsc zadeklarowano dla całej liczby (i poprzedzających ją spacji) a w tych 12-tu zarezerwowano 4 miejsca po kropce dla części ułamkowej

\n – oznacza rozkaz zmiany linii na wydruku wyprowadzanym do pliku (nie pomyl: \ a nie /)

fclose(id) – zamyka plik o identyfikatorze id po wyprowadzeniu wszystkich informacji.
2.3 Ćwiczenia
a) Napisz program z pętlą FOR...END, który wyświetla na ekranie pierwiastki z kolejnych liczb

nieparzystych od 1 do 9

b) Napisz program z pętlą FOR...END, który dla ciągu wartości  od 3,6 do 13 co 0,4 oblicza

wartości wyrażenia:  = (- 0,5)/(1,1+sin )



Zadanie domowe:

Napisz programy z pętlami FOR...END wykonujące (a) mnożenie macierzowe, (b) mnożenie tablicowe dwu macierzy i sprawdź dla konkretnych macierzy A i B zgodność wyników działań twoich programów z działaniami Matlaba: A*B oraz A .* B


6. Instrukcja IF

Instrukcja ta ma najczęściej postać:

if warunek

. . . .instrukcje1

else


. . . . instrukcje2

end
Instrukcja IF (zupełnie podobnie jak w BASIC-u i innych językach) pozwala zależnie od spełnienia podanego warunku wykonać blok instrukcje1 lub blok instrukcje2.



Warunek używany w instrukcji IF to dowolne wyrażenie logiczne.
Przykład:

Składniki wyrażeń logicznych opisano poniżej.


3.1 Relacje i wyrażenia logiczne – objaśnienia

Prostymi wyrażeniami logicznymi są relacje. Relacja to dwa wyrażenia arytmetyczne połączone operatorem relacji. Są następujące operatory relacji i operatory logiczne:




Zamiast nich można stosować funkcje:


3.2 Ćwiczenia

Napisz program, który dla dowolnej liczby x wprowadzonej z klawiatury - sprawdza przy pomocy funkcji mod(x,2) wyznaczającej resztę z dzielenia przez 2 – czy jest to liczba (a) parzysta, (b) nieparzysta, (c) niecałkowita. Po sprawdzeniu ma wyświetlić odpowiedni komunikat.






©operacji.org 2017
wyślij wiadomość

    Strona główna