Download - Gyakorló feladatsor eljárásokra
Gyakorló feladatsorGyakorló feladatsoreljárásokraeljárásokra
Készítette: Rummel SzabolcsKészítette: Rummel Szabolcs
Elérhetősé: [email protected]érhetősé: [email protected]
Feladat 1Feladat 1
• Készíts amortizációt Készíts amortizációt (értékcsökkenést) kiszámító (értékcsökkenést) kiszámító programot!programot!
• A program számolja ki a negyedéves A program számolja ki a negyedéves értékcsökkenését az autónak, ha az értékcsökkenését az autónak, ha az értékcsökkenési kulcs: 15%értékcsökkenési kulcs: 15%
• Az autó árát billentyűzetről kérje be a Az autó árát billentyűzetről kérje be a program!program!
Feladatok az amortizációhozFeladatok az amortizációhoz
• A negyedéves értékcsökkenéseket A negyedéves értékcsökkenéseket tárolja el egy tömbben! (4 elemű tömb)tárolja el egy tömbben! (4 elemű tömb)
• Írja ki a negyedéves Írja ki a negyedéves értékcsökkenéseket! (A tömb elemeit)értékcsökkenéseket! (A tömb elemeit)
• Írja ki az egy év alatti értékcsökkenést! Írja ki az egy év alatti értékcsökkenést! (tömb elemeinek összegét)(tömb elemeinek összegét)
Szükséges algoritmusokSzükséges algoritmusok
• Tömb feltöltéseTömb feltöltése
• Tömb elemeinek kiírásaTömb elemeinek kiírása
• ÖsszegképzésÖsszegképzés
Tömb feltöltéseTömb feltöltése
Procedure feltolt(ar:real; var t:tombtip);Procedure feltolt(ar:real; var t:tombtip);Var i:integer;Var i:integer;BeginBeginFor i:=1 to 4 doFor i:=1 to 4 do
BeginBegint[i]:=ar-ar*0,15;t[i]:=ar-ar*0,15;ar:=ar-ar*0,15;ar:=ar-ar*0,15;
End;End;End;End;
Az autó ára (azért longint, mertnagy számról van szó
Az értékcsökkenés kiszámolásaAz 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éseAz algoritmus működése
Az autó ára: 140000Az autó ára: 140000Így a tömb első eleme: 1400000-Így a tömb első eleme: 1400000-
1400000*0,151400000*0,15
Az ár: 1400000-210000=1190000Az ár: 1400000-210000=1190000
A tömb második eleme: 1190000-A tömb második eleme: 1190000-1190000*0,151190000*0,15
Az ár: 1190000-178500=1011500Az ár: 1190000-178500=1011500
És így tovább!!És így tovább!!
Tömb elemeinek kiírásaTömb elemeinek kiírása
Procedure kiir(t:tombtip);Procedure kiir(t:tombtip);
Var i:integer;Var i:integer;
BeginBegin
For i:=1 to 4 doFor i:=1 to 4 do
writeln(t[i]:2:0);writeln(t[i]:2:0);
End;End;
A kiíró utasítást ismételjük meg négyszerezért a tömb elemei kiíródnak
a t[1]-től t[4]-i
ÖsszegképzésÖsszegképzés
Procedure osszeg(t:tombtip; var osszeg:real);Procedure osszeg(t:tombtip; var osszeg:real);
Var i:integer;Var i:integer;
BeginBegin
Osszeg:=ar*0,15;Osszeg:=ar*0,15;
For i:=1 to 3 doFor i:=1 to 3 do
osszeg:=osszeg+t[i]*0,15;osszeg:=osszeg+t[i]*0,15;
End;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éseAlgoritmus működése
Osszeg: 1400000*0,15= 210000Osszeg: 1400000*0,15= 210000
Ciklus első lépése: Ciklus első lépése:
Osszeg: Osszeg: 210000+1190000*0,15=388500210000+1190000*0,15=388500
Ciklus második lépése:Ciklus második lépése:
Osszeg: 388500+Osszeg: 388500+1011500*0,15=5402251011500*0,15=540225
És így tovább!!És így tovább!!
A főprogramA főprogram
Deklaráció:Deklaráció:Type tombtip=array[1..4] of real;Type tombtip=array[1..4] of real;Var t:tombtip;Var t:tombtip;
osszeg,ar:real;osszeg,ar:real;BEGINBEGINWriteln(‘add meg az autó árát!’);Writeln(‘add meg az autó árát!’);Readln(ar);Readln(ar);Feltolt(ar,t);Feltolt(ar,t);Kiir(t);Kiir(t);Osszeg(t,osszeg);Osszeg(t,osszeg);Writeln(‘Az értékcsökkenés összesen: ’,osszeg:2:0);Writeln(‘Az értékcsökkenés összesen: ’,osszeg:2:0);Readln;Readln;END.END.
Feladat 2Feladat 2
• Készíts programot, ami kiszámolja Készíts programot, ami kiszámolja egy betét éves banki kamatát!egy betét éves banki kamatát!
• A betét összegét billentyűzetről kérje A betét összegét billentyűzetről kérje be!be!
• Írasd ki a havi betéteket!Írasd ki a havi betéteket!
• Számold ki az év végi betét Számold ki az év végi betét összegét!összegét!
Szükséges algoritmusokSzükséges algoritmusok
• Tömb feltöltéseTömb feltöltése
• Tömb eleminek kiírásaTömb eleminek kiírása
• Összegképzés algoritmusaÖsszegképzés algoritmusa
Az algoritmusokat lásd az előző Az algoritmusokat lásd az előző programból!programból!
Feladat 3Feladat 3
• Alakítsd át a programot, hogy a Alakítsd át a programot, hogy a kamatot is billentyűzetről kérje be!kamatot is billentyűzetről kérje be!
• Számoljon kamatos kamatot (a Számoljon kamatos kamatot (a kamatot mindig az aktuális hónapból kamatot mindig az aktuális hónapból számolja ki!)számolja ki!)
Segítség a feladat 3-hozSegítség a feladat 3-hoz
Pl: a betét=1200000Pl: a betét=1200000 a kamat=6%a kamat=6% az első havi betét= 1272000az első havi betét= 1272000
A következő havi kamatot ne 1200000-A következő havi kamatot ne 1200000-ból, hanem 1272000-ből számítsd!ból, hanem 1272000-ből számítsd!
Segítségül használhatod az Segítségül használhatod az amortizációs programot (csak nem amortizációs programot (csak nem kivonni hanem összeadni kell)kivonni hanem összeadni kell)
Feladat 4Feladat 4
• Készíts programot, ami kiszámolja Készíts programot, ami kiszámolja egy munkavállaló adóbevallását!egy munkavállaló adóbevallását!
• A program kérje be billentyűzetről a A program kérje be billentyűzetről a magánszemély éves fizetését!magánszemély éves fizetését!
• A személyi jövedelemadó kulcs: 18%A személyi jövedelemadó kulcs: 18%
Feladat 4 megoldásFeladat 4 megoldás
Procedure ado(ber:real);Procedure ado(ber:real);
BeginBegin
Ber:=ber-ber*0,18;Ber:=ber-ber*0,18;
Writeln(‘A nettó fizetés: ‘,ber:2:0);Writeln(‘A nettó fizetés: ‘,ber:2:0);
End;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őprogramFőprogram
DeklarációDeklaráció
Var ber:real;Var ber:real;
BEGINBEGIN
Writeln(‘Add meg a dolgozó fizetését’);Writeln(‘Add meg a dolgozó fizetését’);
Readln(ber);Readln(ber);
Ado(ber);Ado(ber);
Readln;Readln;
END.END.
Feladat 5Feladat 5
• Alakítsd át a programot, hogy ha az Alakítsd át a programot, hogy ha az éves fizetés 1700000 Ft alatt van, éves fizetés 1700000 Ft alatt van, akkor 18%-kal számoljon, ha akkor 18%-kal számoljon, ha 1700000 Ft fölött van, akkor 36%-kal 1700000 Ft fölött van, akkor 36%-kal számoljon!számoljon!
Feladat 5Feladat 5• Írj eljárást, ami a TB járulékot Írj eljárást, ami a TB járulékot
kiszámolja!kiszámolja!A TB járulék: 29%A TB járulék: 29%• Írj eljárást, ami kiszámolja a Írj eljárást, ami kiszámolja a
munkavállalói járulékot!munkavállalói járulékot!A munkavállalói járulék 1,5%A munkavállalói járulék 1,5%• Adja meg a program a levonások utáni Adja meg a program a levonások utáni
éves bért! (vonja le a program az adót, éves bért! (vonja le a program az adót, a TB-t és a munkavállalói járulékot, a TB-t és a munkavállalói járulékot, majd a maradékot írja ki a képernyőre)majd a maradékot írja ki a képernyőre)
Feladat 6Feladat 6
• Készíts programot, ami egy Készíts programot, ami egy számítógép bolt alkatrészeit és azok számítógép bolt alkatrészeit és azok árait tartja nyilván!árait tartja nyilván!
• Számolja ki, mennyibe kerül egy Számolja ki, mennyibe kerül egy komplett számítógép!komplett számítógép!
• Mutassa meg melyik a legdrágább és Mutassa meg melyik a legdrágább és legolcsóbb alkatrész! legolcsóbb alkatrész!
Szükséges algoritmusokSzükséges algoritmusok
• Tömb feltöltéseTömb feltöltése
• Tömb kiírásaTömb kiírása
• ÖsszegképzésÖsszegképzés
• Minimum kiválasztásMinimum kiválasztás
• Maximum kiválasztásMaximum kiválasztás
Deklaráció Deklaráció
Type tombtip1=array[1..5] of string;Type tombtip1=array[1..5] of string;
tombtip2=array[1..5] of integer;tombtip2=array[1..5] of integer;
Var t1:tombtip1;Var t1:tombtip1;
t2:tombtip2;t2:tombtip2;
Az első tömb az alkatrészekNevé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éseTömb feltöltéseProcedure feltolt(var t1:tombtip1;var Procedure feltolt(var t1:tombtip1;var
t2:tombtip2);t2:tombtip2);Var i:integer;Var i:integer;BeginBeginFor i:=1 to 5 doFor i:=1 to 5 do
beginbeginwriteln(‘Az alkatrész neve?’);writeln(‘Az alkatrész neve?’);readln(t1[i]);readln(t1[i]);writeln(‘Az alkatrész ára?’);writeln(‘Az alkatrész ára?’);readln(t2[i]);readln(t2[i]);
End;End;
Az alkatrész neve a t1 i-dikváltozóba kerül!
Az alkatrész ára a t2 i-dikváltozóba kerül!
Párhuzamosan halad a név és az ár feltöltése, azért mert egy ciklusban töltődikfel!
Tömb elemeinek kiírásaTömb elemeinek kiírása
Procedure Procedure kiir(t1:tombtip1;t2:tombtip2);kiir(t1:tombtip1;t2:tombtip2);
Var i:integer;Var i:integer;
BeginBegin
For i:=1 to 5 doFor i:=1 to 5 do
writeln(t1[i],’: ‘,t2[i]);writeln(t1[i],’: ‘,t2[i]);
End;End;
Összegképzés Összegképzés Procedure osszeg(t2:tombtip2);Procedure osszeg(t2:tombtip2);
Var i:integer;Var i:integer;
osszeg:longint;osszeg:longint;
BeginBegin
Osszeg:=t2[1];Osszeg:=t2[1];
For i:=2 to 5 doFor i:=2 to 5 do
osszeg:=osszeg+t2[i];osszeg:=osszeg+t2[i];
Writeln(‘Egy számítógép ’,osszeg,’ Ft-be kerül);Writeln(‘Egy számítógép ’,osszeg,’ Ft-be kerül);
End; End;
Minimum kiválasztásMinimum kiválasztásProcedure mini(t1:tombtip1;t2:tombtip2);Procedure mini(t1:tombtip1;t2:tombtip2);Var i,min:integer;Var i,min:integer; nev:string;nev:string;BeginBeginMin:=t2[1];Min:=t2[1];Nev:=t1[1];Nev:=t1[1];For i:=2 to 5 doFor i:=2 to 5 do
if min<t2[i] thenif min<t2[i] thenbeginbegin
min:=t2[i];min:=t2[i];nev:=t1[i];nev:=t1[i];
end;end;writeln=(‘A legolcsóbb alkatrész: ‘,nev,’: ‘,min);writeln=(‘A legolcsóbb alkatrész: ‘,nev,’: ‘,min);End; End;
Ha kisebb, akkor bekerül a „min” változóba!
Ha változik „min” változó,akkor veleváltozzon a „nev” is!
Maximum kiválasztásMaximum kiválasztás
• Az algoritmus ugyanaz csak a reláció Az algoritmus ugyanaz csak a reláció fordul meg, illetve a kiírásnál a fordul meg, illetve a kiírásnál a magyarázó szöveg más!magyarázó szöveg más!
Feladat 7Feladat 7• Készíts programot, ami az otthoni Készíts programot, ami az otthoni
könyveidet, vagy CD-t, vagy DVD-t tartja könyveidet, vagy CD-t, vagy DVD-t tartja nyilván!nyilván!
• A program mondja meg melyik a A program mondja meg melyik a legdrágább, melyik legolcsóbb CD-d, legdrágább, melyik legolcsóbb CD-d, mennyit ér a gyűjteményed!mennyit ér a gyűjteményed!
• A program rendezze a gyűjteményedet A program rendezze a gyűjteményedet ABC sorrendbe!ABC sorrendbe!
• A program rendezze ár szerint növekvő A program rendezze ár szerint növekvő sorrendbe!sorrendbe!
Szükséges algoritmusokSzükséges algoritmusok
• Tömb feltöltéseTömb feltöltése
• Tömb kiírásaTömb kiírása
• Minimum és maximum kiválasztásMinimum és maximum kiválasztás
• ÖsszegképzésÖsszegképzés
• RendezésRendezés
(A rendező algoritmust alkalmazhatod (A rendező algoritmust alkalmazhatod a szöveg típusú tömbnél is!)a szöveg típusú tömbnél is!)
Rendezés Rendezés Procedure rendez(var t1:tombtip1);Procedure rendez(var t1:tombtip1);Var i,j:inetger;Var i,j:inetger;
cs:”olyan típus amilyen a tömb”);cs:”olyan típus amilyen a tömb”);BeginBeginFor i:=1 to n-1 doFor i:=1 to n-1 do
for j:=i+1 to n dofor j:=i+1 to n doif t[i]>t[j] thenif t[i]>t[j] then
beginbegincs:=t[i];cs:=t[i];t[i]:=t[j];t[i]:=t[j];t[j]:=cs;t[j]:=cs;
end;end;End;End;
A feltétel, ami megvizsgálja,hogy melyik a nagyobb!
Csere algoritmusa!
Gondolkodj!Gondolkodj!
• Ellenőrizd, hogy a t1 rendezésével a Ellenőrizd, hogy a t1 rendezésével a t2 változik-e!t2 változik-e!
• Hogyan lehet megoldani azt a Hogyan lehet megoldani azt a problémát, hogy a t1 rendezésével a problémát, hogy a t1 rendezésével a t2 is ugyanúgy rendeződjön! Illetve t2 is ugyanúgy rendeződjön! Illetve fordítva!fordítva!
Nem jut több az eszembeNem jut több az eszembe
Jó munkát kívánok!Jó munkát kívánok!