OO1PP1 – DZ4                                                                     Rok za izradu: 26.12.2008.

PRAKTIKUM IZ PROGRAMIRANJA 1

- domaći zadatak broj 4 -

Sastaviti program na programskom jeziku Pascal, koji radi sa tekst datotekama po sledećem redosledu izvršavanja:

a) poziva potprogram koji učitava imena datoteka sa kojima će raditi,

b) poziva odgovarajući potprogram koji izvrši traženu obradu nad datotekama,

c) ponavlja prethodne korake sve dok korisnik za ime datoteke ne zada prazan string.

Zavisno od rednog broja problema, sastaviti program, koji:

0.   čita ulaznu datoteku koja sadrži podatke o stanju u magacinu, po formatu šifraArtikla, naziv, količina (šifra artikla - ceo broj, naziv - string do 30 znakova, količina - realan broj) i koja može u susednim redovima imati podatke o istim artiklima (ista šifra i naziv); program u izlaznu datoteku, koji ima isti format kao i ulazni, štampa zbirne podatke o količini robe;

1.   čita dve ulazne datoteke (oba istog formata kao u tački 0, oba sortirana po šifri artikla); potrebno je napraviti izlaznu datoteku (istog formata kao ulaznu) koja sadrži zbirne podatke o artiklima (za svaku šifru i naziv sadrži sumu količine koja se nalazi u obe datoteke); u jednoj datoteci nema ponavljanja podataka o istom artiklu; podaci o količini nekog artikla se mogu, ali ne moraju nalaziti u obe datoteke;

2.   čita ulaznu datoteku koja sadrži podatke o knjigama u biblioteci u formatu idKnjige, nazivKnjige, imePisca, prezimePisca, brojPrimeraka; dela istog pisca će biti u susednim redovima (ako ih ima više); treba formirati izlazni fajl koji će imati format PrezimePisca, ImePisca, broj knjiga, gde je poslednja stavka ukupan broj primeraka knjiga tog pisca koje bibilioteka ima;

3.   čita ulaznu datoteku koja predstavlja račun kupca i ima format šifraArtikla, količina, cenaJednogArtikla, naziv gde je šifraArtikla ceo broj, količina i cena su celi brojevi, naziv je string do 30 znakova; podaci o istom artiklu će biti u susednim redovima (ako ih ima više); potrebno je napraviti izlaznu datoteku koja ima format šifraArtikla, naziv, zbirnaCena, gde je poslednja stavka iznos novca koji treba dati za sve artikle sa tom šifrom;

4.   čita ulaznu datoteku koja predstavlja evidenciju o angažovanju demonstratora i koji ima sledeći format: šifraPredmeta, ime, prezime, brojRadnihSati (ime, prezime, šifra predmeta – string do 20 znakova, broj radnog sata i cena radnog sata – ceo broj); različita angažovanja istog demonstratora će biti u susednim redovima; potrebno je napraviti datoteku po formatu ime, prezime, zarada, gde je zarada ukupna količina novca koju treba isplatiti demonstratoru; cenu radnog sata korisnik unosi sa glavnog ulaza.

Po uspešnom rešavanju osnovnog zadatka, napraviti modifikaciju programa tako da program obrađuje samo one linije iz ulaznih datoteka čiji je redni broj u skupu vrednosti koje korisnik unese sa tastature. U svakoj varijanti zadatka korigovati ime i prezime pisca/demonstratora, odnosno svaki naziv artikla ako je potrebno, tako da u izlaznoj datoteci svi stringovi imaju veliko početno slovo, a sva ostala slova mala (na primer: piVo promeniti u Pivo). Pretpostaviti da svi stringovi sadrže tačno jednu reč.

Program treba da čita ulaznu datoteku uz vođenje računa o tipu podataka koji se čita. Za sve podatke koje ima smisla grupisati, osmisliti sopstveni tip zapisa i koristiti promenljive tog tipa, tamo gde je to moguće. Podatke iz datoteka nije dozvoljeno smeštati u bilo kakvu zbirku podataka u memoriji. Dozvoljeno je pamtiti samo podatke od interesa za tekući predmet obrade (artikal/pisac/demonstrator). Smatrati da ulazna datoteka ima 0 ili više redova. Smatrati da dužine redova nisu veće od 80. Ako nešto u postavci zadatka nije dovoljno precizno definisano ili ako su neki od zahteva međusobno suprotstavljeni, usvojiti razumnu pretpostavku i rešiti zadatak korišćenjem te pretpostavke. Osmisliti i napisati na papiru nekoliko primera ulaznih podataka sa kojima će se program testirati, kao i očekivani izlaz za odabrane primere. Test primere otkucati u bilo kom tekst editoru i priložiti zajedno sa tekstom programa. Potprogrami ne smeju pristupati promenljivama glavnog programa direktno, već samo putem svojih argumenata.

Napomene:

1.   Odbrana četvrtog domaćeg zadatka je u petak, 26.12.2008. godine. Tačni termini za sve studente su objavljeni u okviru sistema WebLab.

2.   Formula za redni broj problema i koji treba rešavati je sledeća (R – redni broj indeksa, G – poslednje dve cifre godine upisa):

i = (R + G) mod 5

3.   Kao rešenje domaćeg zadatka potrebno je na odbrani pokazati sledeće datoteke:

·      dz4.PAS, koja sadrži izvorni tekst programa na programskom jeziku Pascal;

·      dz4_mod.PAS, koji sadrži modifikovani program koji radi sa skupovima;

·      dz4_u1.txt, …, dz4_uN.txt, koje sadrže nekoliko odabranih test primera kojima će program biti testiran.

16.12.2008. godine                                                                                    sa predmeta