Drajveri za modem - Linux

Ova strana je namenjena za sve one koji spremaju ispit iz Osnova Racunarskih Sistema, pa ako vec nesto pisem za sebe, zasto to mozda ne bi pomoglo i drugima. Ocekujem vase ideje i primedbe, kako bi se ovde naslo sto vise materijala. Pisite... (i ucite...)

PISITE!


Pismeni deo ispita oz ORS-a, jun 2002.

Ideja:
U okviru implementacije programa za tehnicko crtanje (projektovanje) potrebno je obezbediti prevodjenje datih dvodimenzionalnih likova u kolekcije duzi kojima se ti likovi mogu dovoljno dobro aproksimirati. Prevodjenje je potrebno obezbediti metodima klasa likova:
int Prevodjenje (TipKolekcijeDuzi& duzi, double eps) - kolekciju duzi prazni i popunjava duzima kojima se aproksimira dati lik;
int PrevodjenjePlus (TipKolekcijeDuzi& duzi, double eps) - kolekciju duzi dopunjava duzima kojima se aproksimira dati lik;
Parametar eps predstavlja najvece dopusteno odstupanje duzi od lika koji se njome predstavlja.
Sve klase za koje je to potrebno,moraju biti komletirane implementacijama destruktora i drugih neophodnih metoda.
Duzi se predstavljaju strukturom: struct Duz { int x0, y0, x1, y1, boja; };
Za predstavljanje kolekcije duzi moze se upotrebljavati kolekcija po izboru (u tekstu zadatka se upotrebljava naziv TipKolekcijeDuzi). Moze se upotrebljavati i neka od kolekcija iz standardne biblioteke.
Potrebno je podrzati sledece vrste likova sa odgovarajucim atributima:
Kvadrat(boja, koordinate levog gornjeg temena, duzina stranice);
Pravougaonik(boja, koordinate levog gornjeg temena, duzine stranica);
Krug(boja, koordinate centra, poluprecnik);
Poligon(boja, koordinate svih temena poligona; ne postoji ogranicenje broja temena poligona);
ParametarskaFunkcija(boja, polozaj grafika funkcije= polozaj koordinatnog pocetka grafika u koordinatnom sistemu crteza, razmera=duzina jedinicne duzi grafika u koordinatnom sistemu crteza, domen parametra zadat kao zatvoren interval, tekstualni zapis parametarske funkcije);
SlozenLik(kolekcija likova).

Zadatak:
1.deo(10 poena): Napisati klasu Lik kao baznu klasu hijerarhuje klasa kojima se predstavljaju likovi.
2.deo(10 poena): Napisati klase Kvadrat i Pravougaonik.
3.deo(15 poena): Napisati klasu Krug.
4.deo(15 poena): Napisati klasu Poligon.
5.deo(25 poena): Napisati klasu ParametarskaFunkcija. Za izracunavanje vrednosti parametarske funkcije upotrebljavati (predpostavljenu) funkciju:
void VrednostParametarskeFunkcije( char*, funkcija, double t, double& x, double& y),
koja za dati tekst funkcije i vrednost parametra t izracunava vrednosti x i y. (Savet: pri aproksimiranju lika funkcije duzima moze se koristiti metod polovljenja segmenata domena, tj.odgovarjucih duzi, do postizanja potrebne tacnosti. Tacnost je dovoljno procenjivati na osnovu polozaja sredista duzi).
6.deo(25 poena): Napisati klasu SlozenLik, koja predstavlja lik koji se sastoji od vise proizvoljnih likova. Obavezno napisati konstruktor kopiranjem.

Naredba: using namespace std;

Ova naredba se zove direktiva za upotrebu(using direktive). Imena u standardnoj biblioteci jezika C++ su deklarisana u prostoru imena pod nazivom prostor imena STD i ne vide se u datotekama sa tekstom programa, osim ako eksplicitno ne odredimo da budu vidljiva. Direktiva za upotrebu govori kompajleru da koristi imena iz biblioteke deklarisana u prostoru imena STD.
(Umesto da pisemo svaki put std::cin ili std::cout, std:: se izostavlja jer smo naglasili da koristimo tu biblioteku.)



Klasa: Vektor

Od ove godine na pismenom delu ispita uvodi se koriscenje klase Vektor.
Vektor u C++u predstavlja standardni niz, odnosno klasa niza je sada deo njegove standardne biblioteke. Ona se ne zove niz vec se zove Vektor. Postoje dve osnovne razlike izmedju implementacije sablona klase Array i sablona klase vektor. Prva razlika je u tome da sablon klase vektor podrzava kako dodelu vrednosti postojecem elementu niza, tako i umetanje dodatnih elemenata - to jest, niz vektora se dinamicki povecava u fazi izvrsavanja ako programer zeli da koristi tu mogucnost. Druga razlika je u tome sto su za klasu vektor obezbedjeni mnogi genericki algoritmi za obavljanje operacija nad vektorom.
Da bismo definisali vektor, moramo ukljuciti njegovo odgovarajuce zaglavlje:

#include <vector>
Slede valjanje definicije objekata vektora:

#include <vector>

//nacini za stvaranje objekata vektor
vektor<int> vec0;  //prazan vektor

const int size=8;
const int value=1024;

//vektor velicine 8,
//svaki element je inicijalizovan 0
vektor<int> vec1(size);

//vektor velicine 8,
//svaki element je inicijalizovan na vrednost 1024
vektor<int> vec2(size, value);

//vec3 je velicine 4
//inicijalizovan je sa cetiri vrednosti niza ia
int ia[4]={0,1,1,2};
vektor<int> vec3(ia,ia+4)            ???? ovo ia+4 mi nije jasno ????

//vec4 je kopija vektora vec2
vektor<int> vec4(vec2); 
Kada su vektori definisani, treba da pristupimo njihovim elementima. Kao i kod sablona klase Array, standardni sablon klase vektor podrzava koriscenje operatora indeksiranja. Na primer:
#include <vector>
extern int getSize();

void mumble()
{
 int size=getSize();
 vector<int> vec(size);

 for ( int ix=0; ix<size; ++ix )
   vec[ix]=ix;

 //...
} 
Ne mogu vise, bas sam se umorio dok sam namestio da sve izgleda bas ovako, nastavak sledi...
A sve o klasi vektor pogledajte iz dela help-a koji mozete skinuti ovde...