Laboratorium Podstaw Programowania 2

Laboratorium Podstaw Programowania 2

ĆWICZENIE 10

Data wykonania

ćwiczenia:

24.05.2012

WSTĘP:

Programowanie strukturalne w odróżnieniu od tego, której używaliśmy posiada inną organizacje oraz pozwala na zredukowanie używanych zmiennych w naszym programie. A co więcej pozwala na tworzenie bardziej wydajnych oraz efektywnych programów np. w naszym kodzie możemy używać przycisków okien oraz innych tego typu elementów.

Zadanie 1.

Utwórz klasę Zarowka. Klasa powinna zawierać metody:

 zapalZarowke(), która będzie wyświetlała napis: „Żarówka zapalona”;

 zgasZarowke(),która będzie wyświetlała napis: „Żarówka zgaszona”;

 rozjasnijZarowke()która będzie wyświetlała napis: „Żarówka rozjaśniona”;

 przyciemnijZarowke()która będzie wyświetlała napis: „Żarówka przyciemniona”.

unit elektr;

W module o nazwie elektr utworzenie klasy o nazwie

Zarowka oraz klasy zgodnie z treścią polecenia.

zapalZarowk, zgasZarowke, rozjasnijZarowke oraz przyciemnijZarowke

interface

uses crt;

type

Zarowka = object

procedure zapalZarowke;

procedure zgasZarowke;

procedure rozjasnijZarowke;

procedure przyciemnijZarowke;

end;

implementation

procedure zarowka.zapalZarowke;

begin

writeln('Zarowka zapalona');

end;

Utworzenie procedur, które po uruchomieniu będą kolejno wyświetlać : Zarowka zapalona, Zarowka zgaszona, Zarowka rozjasniona oraz Zarowka przyciemniona.

Główny program wczytuje moduł z innego pliku oraz deklaruje zmienna c typu Zarowka

Oraz uruchamia metody.

procedure zarowka.zgasZarowke;

begin

writeln('Zarowka zgaszona');

end;

procedure zarowka.rozjasnijZarowke;

begin

writeln('Zarowka rozjasniona');

end;

procedure zarowka.przyciemnijZarowke;

begin

writeln('Zarowka przyciemniona');

end;

end.

program zarowa;

uses crt,zar;

var c:Zarowka;

begin

clrscr;

c.zapalZarowke;

c.zgasZarowke;

c.rozjasnijZarowke;

c.przyciemnijZarowke;

readln;

end.

Wynik działania:

Zadanie 2.

Utwórz klasę Punkt, która będzie zawierać współrzędne punktu (x, y). Klasa ta powinna zawierać metody:

 ustawX(), która będzie ustawiała wartość współrzędnej punktu X;

 pobierzX(), która będzie zwracała przechowywaną wartość współrzędnej punktu X;

 ustawY(), która będzie ustawiała wartość współrzędnej punktu Y;

 pobierzY(), która będzie zwracała przechowywaną wartość współrzędnej punktu Y;

 wyswietlWspolrzędne(), która będzie wyświetlać współrzędne punktu X i Y.

Utworzenie klasy o nazwie punkty która zawiera klasy potrzebne do pobrania oraz

Procedury wyswietlWspolrzedne, która wyświetli punkty.

unit pkt;

interface

uses crt;

type

punkt = object

wsp_x,wsp_y:byte;

function pobierzX:byte;

procedure ustawX(w:byte);

function pobierzY:byte;

procedure ustawY(w:byte);

procedure wyswietlWspolrzedne(x,y:byte);

end;

implementation

W tym miejscu znajdują się procedury, które ustawiają pobrane wcześniej pobrane wsółrzędne x oraz y o nazwach

Ustaw X oraz ustaw Y.

procedure punkt.ustawX(w:byte);

begin

wsp_x:=w;

end;

procedure punkt.ustawY(w:byte);

begin

wsp_y:=w;

end;

function punkt.pobierzX:byte;

begin

pobierzX:=wsp_x;

end;

function punkt.pobierzY:byte;

begin

pobierzY:=wsp_y;

end;

procedure punkt.wyswietlWspolrzedne(x,y:byte);

begin

writeln(x,',',y);

end;

end.

W głównym programie następuje

wczytanie modułu o nazwie pkt oraz utworzenie zmiennej c typu punkty.

Następnie odczytanie od użytkownika punktów x oraz y a następnie przekazanie tych zmiennych do procedur ustaw.

Na samym końcu następuje wywołanie procedury wyswietlWspolrzedne i przekazanie jej przez parametry funkcji które zwracają wartości współrzędnych.

program zad2;

uses crt,pkt;

var c:Punkt;

xx,yy:integer;

begin

clrscr;

writeln('podaj x');

readln(xx);

writeln('podaj y');

readln(yy);

c.ustawX(xx);

c.ustawY(yy);

writeln;

write('wspolrzedne punktu to: ');

c.wyswietlWspolrzedne(c.pobierzX,c.pobierzY);

readln;

end.

Wynik działania:

Zadanie 3.

Utwórz klasę, której obiekt będzie mógł wykonywać następujące operacje na liczbach zespolonych :

1. Wyświetlanie liczby zespolonej w postaci a+jb;

2. Obliczanie liczby sprzężonej do danej liczby zespolonej;

3. Obliczanie modułu liczby zespolonej;

4. Obliczanie kąta liczby zespolonej;

5. Dodawanie do jednej liczby zespolonej drugiej liczby zespolonej. Wynik należy zapisać w obiekcie wywołującym metodę np.: a.dodaj(b) wynik w a.

6. Odejmowanie od jednej liczby zespolonej drugiej liczby zespolonej. Wynik należy zapisać w obiekcie wywołującym metodę np.: a.odejmij(b) wynik w a.

7. Mnożenie jednej liczby zespolonej przez drugą liczbę zespoloną. Wynik należy zapisać w obiekcie wywołującym metodę np.: a.mnoz(b) wynik w a.

8. Dzielenie jednej liczby zespolonej przez drugą liczbę zespoloną. Wynik należy zapisać w obiekcie wywołującym metodę np.: a.dziel(b) wynik w a.

unit modzes;

interface

uses crt;

type

Utworzenie klasy o nazwie zesp

Oraz odpowiednich metod potrzebnych do dalszych operacji.

zesp = object

re,im:real;

function pobierzRe:real;

procedure ustawRe(rez:real);

function pobierzIm:real;

procedure ustawIm(imz:real);

procedure wyswietlLiczbeZesp(rez,imz:real);

procedure sprzezona;

function obliczModul:real;

function obliczKat:real;

procedure dodaj(b:zesp);

procedure odejmij(b:zesp);

procedure mnoz(b:zesp);

procedure dziel(b:zesp);

end;

implementation

procedure zesp.ustawRe(rez:real);

begin

re:=rez;

end;

Na samym początku znajdują się procedury pobierające liczby rzeczywiste oraz jednostki urojone.

procedure zesp.ustawIm(imz:real);

begin

im:=imz;

end;

function zesp.pobierzRe:real;

begin

pobierzRe:=Re;

end;

function zesp.pobierzIm:real;

begin

pobierzIm:=Im;

end;

procedure zesp.wyswietlLiczbeZesp(rez,imz:real);

begin

if imz=1 then

writeln('Liczba zespolona to ',rez:3:4,'+i');

if imz=(-1) then

writeln('Liczba zespolona to ',rez:3:4,'-i');

if ((imz>0)and(imz<>1)) then

writeln('Liczba zespolona to ',rez:3:4,'+',imz:3:4,'i');

if ((imz<0)and(imz<>-1)) then

writeln('Liczba zespolona to ',rez:3:4,imz:3:4,'i');

if imz=0 then

writeln('Liczba zespolona to ',rez:3:4);

end;

procedure zesp.sprzezona;

begin

zesp.ustawIm(zesp.pobierzIm*(-1));

end;

function zesp.obliczModul:real;

begin

obliczModul:=sqrt(zesp.pobierzRe*zesp.pobierzRe+zesp.pobierzIm*zesp.pobierzIm);

end;

W tym miejscu następuje obliczanie modułu z liczby zespolonej, liczby sprzężonej, dodawanie oraz dodawanie, odejmowanie, mnożenie i dzielenie.

function zesp.obliczKat:real;

var x,kat:real;

begin

x:=arctan(zesp.pobierzIm/zesp.pobierzRe);

kat:=(x*180)/Pi;

obliczKat:=kat;

end;

procedure zesp.dodaj(b:zesp);

begin

zesp.ustawRe(zesp.pobierzRe+b.pobierzRe);

zesp.ustawIm(zesp.pobierzIm+b.pobierzIm);

end;

procedure zesp.odejmij(b:zesp);

begin

zesp.ustawRe(zesp.pobierzRe-b.pobierzRe);

zesp.ustawIm(zesp.pobierzIm-b.pobierzIm);

end;

procedure zesp.mnoz(b:zesp);

var aaa:real;

begin

aaa:=zesp.pobierzRe;

zesp.ustawRe(zesp.pobierzRe*b.pobierzRe-zesp.pobierzIm*b.pobierzIm);

zesp.ustawIm(aaa*b.pobierzIm+b.pobierzRe*zesp.pobierzIm);

end;

procedure zesp.dziel(b:zesp);

var x,y,z:zesp;

begin

x.ustawRe(zesp.pobierzRe);

x.ustawIm(zesp.pobierzIm);

y.ustawRe(b.pobierzRe);

y.ustawIm(b.pobierzIm);

b.sprzezona;

zesp.mnoz(b);

y.mnoz(b);

z.ustawRe(zesp.pobierzRe);

z.ustawIm(zesp.pobierzIm);

zesp.ustawRe(z.pobierzRe/y.pobierzRe);

zesp.ustawIm(z.pobierzIm/y.pobierzRe);

end;

end.

program modzead;

uses crt,modzes;

var

a,b:zesp;

r1,r2,im1,im2:real;

modul:real;

l:byte;

begin

clrscr;

writeln('Pierwsza liczba zespolona:');

write('------- Podaj czesc rzeczywista: ');

readln(r1);

write('------- Podaj czesc urojona: ');

readln(im1);

a.ustawRe(r1);

a.ustawIm(im1);

writeln;

writeln;

a.wyswietlLiczbeZesp(a.pobierzRe,a.pobierzIm);

writeln;

writeln('Druga liczba zespolona:');

write('------- Podaj czesc rzeczywista: ');

readln(r2);

write('------- Podaj czesc urojona: ');

readln(im2);

b.ustawRe(r2);

Główny program odczytuje od użytkownika liczby do obliczenia następnie wyświetla MENU po czym instrukcja case uruchamia odpowiednie procedury.

b.ustawIm(im2);

writeln;

writeln;

b.wyswietlLiczbeZesp(b.pobierzRe,b.pobierzIm);

writeln;

modul:=a.obliczModul;

readln;

l:=11;

while l<>0 do

begin

clrscr;

modul:=a.obliczModul;

writeln(' (1) Wyswietl liczby zespolone');

writeln(' (2) Oblicz liczbe sprezona');

writeln(' (3) Oblicz modul liczby zespolonej');

writeln(' (4) Oblicz kat liczby zespolonej');

writeln(' (5) Dodaj');

writeln(' (6) Odejmij');

writeln(' (7) Pomnoz');

writeln(' (8) Podziel');

writeln(' (0) ZAKONCZ');

readln(l);

case l of

1:

begin

clrscr;

writeln('Pierwsza liczba zespolona:');

a.wyswietlLiczbeZesp(a.pobierzRe,a.pobierzIm);

writeln;

writeln('Druga liczba zespolona:');

b.wyswietlLiczbeZesp(b.pobierzRe,b.pobierzIm);

writeln;

readln;

end;

2:

begin

clrscr;

a.wyswietlLiczbeZesp(a.pobierzRe,a.pobierzIm);

writeln;

a.sprzezona;

write('Sprzezona ');

a.wyswietlLiczbeZesp(a.pobierzRe,a.pobierzIm);

writeln;

readln;

end;

3:

begin

clrscr;

a.wyswietlLiczbeZesp(a.pobierzRe,a.pobierzIm);

writeln;

writeln('|z|=', a.obliczModul:4:6);

writeln;

readln;

end;

4:

begin

clrscr;

a.wyswietlLiczbeZesp(a.pobierzRe,a.pobierzIm);

writeln;

writeln('KĄt a=', a.obliczKat:4:6);

writeln;

readln;

end;

5:

begin

clrscr;

writeln('Pierwsza liczba zespolona:');

a.wyswietlLiczbeZesp(a.pobierzRe,a.pobierzIm);

writeln;

writeln('Druga liczba zespolona:');

b.wyswietlLiczbeZesp(b.pobierzRe,b.pobierzIm);

writeln;

a.dodaj(b);

a.wyswietlLiczbeZesp(a.pobierzRe,a.pobierzIm);

readln;

end;

6:

begin

clrscr;

writeln('Pierwsza liczba zespolona:');

a.wyswietlLiczbeZesp(a.pobierzRe,a.pobierzIm);

writeln;

writeln('Druga liczba zespolona:');

b.wyswietlLiczbeZesp(b.pobierzRe,b.pobierzIm);

writeln;

a.odejmij(b);

a.wyswietlLiczbeZesp(a.pobierzRe,a.pobierzIm);

readln;

end;

7:

begin

clrscr;

writeln('Pierwsza liczba zespolona:');

a.wyswietlLiczbeZesp(a.pobierzRe,a.pobierzIm);

writeln;

writeln('Druga liczba zespolona:');

b.wyswietlLiczbeZesp(b.pobierzRe,b.pobierzIm);

writeln;

a.mnoz(b);

a.wyswietlLiczbeZesp(a.pobierzRe,a.pobierzIm);

readln;

end;

8:

begin

begin

clrscr;

writeln('Pierwsza liczba zespolona:');

a.wyswietlLiczbeZesp(a.pobierzRe,a.pobierzIm);

writeln;

writeln('Druga liczba zespolona:');

b.wyswietlLiczbeZesp(b.pobierzRe,b.pobierzIm);

writeln;

a.dziel(b);

a.wyswietlLiczbeZesp(a.pobierzRe,a.pobierzIm);

readln;

end;

end;

end;

end;

readln;

end.

WYNIK DZIAŁANIA

PODSUMOWANIE:

Programowanie obiektowe pozwala bardziej zbliżyć się do przestrzeni rozwiązywanego

problemu, gdyż operujemy pojęciami właściwymi temu problemowi. Możemy np.: stworzyć obiekt przechowujący inne obiekty, które przechowują informację

o studentach i wysłać do niego komunikat: „znajdź studenta o podanym nazwisku”. Po nabraniu pewnej wprawy kod programu obiektowego staje się bardziej czytelny

i łatwy do zrozumienia niż kod programu strukturalnego.


Wyszukiwarka

Podobne podstrony:
Laboratorium Podstaw Programowania
cwiczenie10d2013, WSTI Pawia 55, Semestr I, Podstawy programowania (wyk, lab - L.Grad, Laboratoria
cwiczenie8d2013, WSTI Pawia 55, Semestr I, Podstawy programowania (wyk, lab - L.Grad, Laboratoria
cwiczenie13d2012, WSTI Pawia 55, Semestr I, Podstawy programowania (wyk, lab - L.Grad, Laboratoria
cwiczenie9d2013, WSTI Pawia 55, Semestr I, Podstawy programowania (wyk, lab - L.Grad, Laboratoria
cwiczenie11d2013, WSTI Pawia 55, Semestr I, Podstawy programowania (wyk, lab - L.Grad, Laboratoria
cwiczenie6d2013, WSTI Pawia 55, Semestr I, Podstawy programowania (wyk, lab - L.Grad, Laboratoria
Podstawy programowania Laboratorium 1
Podstawy programowania Laboratorium 2
strumienie, studia, Podstawy Programowania, Laboratoria
Nowa podstawa programowa WF (1)
1 Podstawy programowania dialogowego
nowa podstawa programowa sp
11-nkb~1, wisisz, wydzial informatyki, studia zaoczne inzynierskie, podstawy programowania, l2
2-eukl~1, wisisz, wydzial informatyki, studia zaoczne inzynierskie, podstawy programowania, l2
Zmiany w podstawie programowej w zakresie edukcji matematycznej, Wczesna edukacja, Materiały do prac
1-algo~1, wisisz, wydzial informatyki, studia zaoczne inzynierskie, podstawy programowania, l2

więcej podobnych podstron