Gyakorló feladatsor eljárásokra Készítette: Rummel Szabolcs Elérhetősé:
Feladat 1 • Készíts amortizációt (értékcsökkenést) kiszámító programot! • A program számolja ki a negyedéves értékcsökkenését az autónak, ha az értékcsökkenési kulcs: 15% • Az autó árát billentyűzetről kérje be a program!
Feladatok az amortizációhoz • A negyedéves értékcsökkenéseket tárolja el egy tömbben! (4 elemű tömb) • Írja ki a negyedéves értékcsökkenéseket! (A tömb elemeit) • Írja ki az egy év alatti értékcsökkenést! (tömb elemeinek összegét)
Szükséges algoritmusok • Tömb feltöltése • Tömb elemeinek kiírása • Összegképzés
Tömb feltöltése Procedure feltolt(ar:real; var t:tombtip); Var i:integer; Begin For i:=1 to 4 do Begint[i]:=ar-ar*0,15;ar:=ar-ar*0,15;End;End; Az autó ára (azért longint, mert nagy számról van szó Az értékcsökkenés kiszámolása Az autó árából levonjuk az autó árának 15 %-át Az árból levonjuk az értékcsökkenést, hogy a következő negyedévben a csökkentett árból tudjuk az értékcsökkenést számolni! A tömb érték szerint van átadva, mert másik eljárásban használjuk a feltöltött tömböt!
Az algoritmus működése Az autó ára: Így a tömb első eleme: *0,15 Az ár: = A tömb második eleme: *0,15 Az ár: = És így tovább!!
Tömb elemeinek kiírása Procedure kiir(t:tombtip); Var i:integer; Begin For i:=1 to 4 do writeln(t[i]:2:0);End; A kiíró utasítást ismételjük meg négyszer ezért a tömb elemei kiíródnak a t[1]-től t[4]-i
Összegképzés Procedure osszeg(t:tombtip; var osszeg:real); Var i:integer; BeginOsszeg:=ar*0,15; For i:=1 to 3 do osszeg:=osszeg+t[i]*0,15;End; Az osszeg változót cím szerint adjuk át, mert szeretnénk kiírni a főprogramban! A ciklus azért megy csak háromig, Mert a t[4], már a következő év első Negyedévének az értékcsökkenése! Az ár 15%-a adja az első negyedév értékcsökkenését! Az aktuális negyedév értékcsökkenésének a kiszámítása
Algoritmus működése Osszeg: *0,15= Ciklus első lépése: Osszeg: *0,15= Ciklus második lépése: Osszeg: *0,15= És így tovább!!
A főprogram Deklaráció: Type tombtip=array[1..4] of real; Var t:tombtip; osszeg,ar:real; osszeg,ar:real;BEGIN Writeln(‘add meg az autó árát!’); Readln(ar);Feltolt(ar,t);Kiir(t);Osszeg(t,osszeg); Writeln(‘Az értékcsökkenés összesen: ’,osszeg:2:0); Readln;END.
Feladat 2 • Készíts programot, ami kiszámolja egy betét éves banki kamatát! • A betét összegét billentyűzetről kérje be! • Írasd ki a havi betéteket! • Számold ki az év végi betét összegét!
Szükséges algoritmusok • Tömb feltöltése • Tömb eleminek kiírása • Összegképzés algoritmusa Az algoritmusokat lásd az előző programból!
Feladat 3 • Alakítsd át a programot, hogy a kamatot is billentyűzetről kérje be! • Számoljon kamatos kamatot (a kamatot mindig az aktuális hónapból számolja ki!)
Segítség a feladat 3-hoz Pl: a betét= a kamat=6% a kamat=6% az első havi betét= az első havi betét= A következő havi kamatot ne ból, hanem ből számítsd! Segítségül használhatod az amortizációs programot (csak nem kivonni hanem összeadni kell)
Feladat 4 • Készíts programot, ami kiszámolja egy munkavállaló adóbevallását! • A program kérje be billentyűzetről a magánszemély éves fizetését! • A személyi jövedelemadó kulcs: 18%
Feladat 4 megoldás Procedure ado(ber:real); BeginBer:=ber-ber*0,18; Writeln(‘A nettó fizetés: ‘,ber:2:0); End; Levon 18%-ot a berből! Kiírja az eljárásban a bért, így a főprogramban nem kell még egyszer kiírni!
Főprogram Deklaráció Var ber:real; BEGIN Writeln(‘Add meg a dolgozó fizetését’); Readln(ber);Ado(ber);Readln;END.
Feladat 5 • Alakítsd át a programot, hogy ha az éves fizetés Ft alatt van, akkor 18%- kal számoljon, ha Ft fölött van, akkor 36%-kal számoljon!
Feladat 5 • Írj eljárást, ami a TB járulékot kiszámolja! A TB járulék: 29% • Írj eljárást, ami kiszámolja a munkavállalói járulékot! A munkavállalói járulék 1,5% • Adja meg a program a levonások utáni éves bért! (vonja le a program az adót, a TB-t és a munkavállalói járulékot, majd a maradékot írja ki a képernyőre)
Feladat 6 • Készíts programot, ami egy számítógép bolt alkatrészeit és azok árait tartja nyilván! • Számolja ki, mennyibe kerül egy komplett számítógép! • Mutassa meg melyik a legdrágább és legolcsóbb alkatrész!
Szükséges algoritmusok • Tömb feltöltése • Tömb kiírása • Összegképzés • Minimum kiválasztás • Maximum kiválasztás
Deklaráció Type tombtip1=array[1..5] of string; tombtip2=array[1..5] of integer; Var t1:tombtip1; t2:tombtip2; Az első tömb az alkatrészek Nevének tárolására szolgál! A második tömb az alkatrészek Árának tárolására szolgál!
Tömb feltöltése Procedure feltolt(var t1:tombtip1;var t2:tombtip2); Var i:integer; Begin For i:=1 to 5 do begin writeln(‘Az alkatrész neve?’); readln(t1[i]); writeln(‘Az alkatrész ára?’); readln(t2[i]);End; Az alkatrész neve a t1 i-dik változóba kerül! Az alkatrész ára a t2 i-dik változóba kerül! Párhuzamosan halad a név és az ár feltöltése, azért mert egy ciklusban töltődik fel!
Tömb elemeinek kiírása Procedure kiir(t1:tombtip1;t2:tombtip2); Var i:integer; Begin For i:=1 to 5 do writeln(t1[i],’: ‘,t2[i]); End;
Összegképzés Procedure osszeg(t2:tombtip2); Var i:integer; osszeg:longint; osszeg:longint;BeginOsszeg:=t2[1]; For i:=2 to 5 do osszeg:=osszeg+t2[i]; Writeln(‘Egy számítógép ’,osszeg,’ Ft-be kerül); End;
Minimum kiválasztás Procedure mini(t1:tombtip1;t2:tombtip2); Var i,min:integer; nev:string; nev:string;BeginMin:=t2[1];Nev:=t1[1]; For i:=2 to 5 do if min<t2[i] then beginmin:=t2[i];nev:=t1[i];end; writeln=(‘A legolcsóbb alkatrész: ‘,nev,’: ‘,min); End; Ha kisebb, akkor bekerül a „min” változóba! Ha változik „min” változó,akkor vele változzon a „nev” is!
Maximum kiválasztás • Az algoritmus ugyanaz csak a reláció fordul meg, illetve a kiírásnál a magyarázó szöveg más!
Feladat 7 • Készíts programot, ami az otthoni könyveidet, vagy CD-t, vagy DVD-t tartja nyilván! • A program mondja meg melyik a legdrágább, melyik legolcsóbb CD-d, mennyit ér a gyűjteményed! • A program rendezze a gyűjteményedet ABC sorrendbe! • A program rendezze ár szerint növekvő sorrendbe!
Szükséges algoritmusok • Tömb feltöltése • Tömb kiírása • Minimum és maximum kiválasztás • Összegképzés • Rendezés (A rendező algoritmust alkalmazhatod a szöveg típusú tömbnél is!)
Rendezés Procedure rendez(var t1:tombtip1); Var i,j:inetger; cs:”olyan típus amilyen a tömb”); cs:”olyan típus amilyen a tömb”);Begin For i:=1 to n-1 do for j:=i+1 to n do if t[i]>t[j] then begincs:=t[i];t[i]:=t[j];t[j]:=cs;end;End; A feltétel, ami megvizsgálja, hogy melyik a nagyobb! Csere algoritmusa!
Gondolkodj! • Ellenőrizd, hogy a t1 rendezésével a t2 változik-e! • Hogyan lehet megoldani azt a problémát, hogy a t1 rendezésével a t2 is ugyanúgy rendeződjön! Illetve fordítva!
Nem jut több az eszembe Jó munkát kívánok!