[[oktatas:programozás:feladatok:speciális| < Speciális]] ====== Pascal nyelvhez kapcsolódó programozási feladatok ====== * **Szerző:** Sallai András * Copyright (c) Sallai András, 2011, 2015 * Licenc: GNU Free Documentation License 1.3 * Web: https://szit.hu ===== Szintaktikai hibák ===== ==== Feladat 0001 ==== Adott az alábbi pascal program. Keresse meg a szintaktikai hibákat. program osszead, var a, b; osszeg; begin Write("Kérek egy számot"); ReadLn(a); Write("Kérek egy másik számot"); ReadLn(b); osszeg = a + b; WriteLn('Eredmény: '; osszeg); end. A hibákat mentse egy osszeaad_h.txt nevű fájlba. ==== Feladat 0002 ==== Adott az alábbi pascal program. Keresse meg a szintaktikai hibákat. program haromszog; var alap, magassag, terulet : valos; begin Write('Alap: '); ReadLn(,alap); Write('Magasság: '); ReadLn(,magassag); terulet := {alap * magassag} / 2; WriteLn(Terület, terulet); end. A hibákat mentse egy haromszog_h.txt nevű fájlba. ==== Feladat 0101 ==== Három szintaktikai hiba található az alábbi programban: uses crt; var i, n : byte; nevek : array [1..5] of string {'János', 'Dénes', 'Mihály', 'Lajos', 'Géza'}; BEGIN ClrScr(); n := 5; for i := 1 to n do begin WriteLn(nevek(i)); end; END. ==== Feladat 0102 ==== Három szintaktikai hiba található az alábbi programban: uses crt; var i, n : string; adatok ; array [1..5] of integer = (45, 23, 88, 12, 28); BEGIN ClrScr(); n := 6; for i := 1 to n do begin WriteLn(adatok[i]); end; END. ===== Szemantikai hibák ===== ==== Feladat 0501 ==== Az alábbi programnak a következőt kellene csinálni. Bekér egy sztringet és fordítva kiírja. A program azonban nem ezt csinálja. Keresse meg a programban a hibát. A javítást sztringfor.pas néven mentse, hogy mit javított írja a sztringfor.txt állományba. program sztringfor; var szoveg : string; i : integer; begin Write('Szöveg: '); ReadLn(szoveg); for i := Length(szoveg) to 1 do Write(szoveg[1]); ReadLn; end. ==== Feladat 0502 ==== A következő program kiírja a tömb elemeit. Vagyis ezt kellene tennie, de nem egészen ez történik. Mi a probléma? uses crt; var i, n : byte; fizetesek : array [1..5] of integer = (450000, 730000, 880000, 420000, 340000); BEGIN ClrScr(); n := 5; for i := 1 to n do begin WriteLn(fizetesek[i]); end; END. ===== Átláthatatlan szintaktikai ===== ==== Feladat 1001 ==== A következő programban keresse meg a szintaktikai hibákat. program téglalap; var a1, b2 : real kerulet1,kerulet2:real; begin Writeln('Első téglalap adatai'); Write('a: '); Readln(a1); Writeln('b: '); Writeln('Második téglalap adatai'); Write('a2: ');readln(a2); Write('b2: ');Readln(b2); kerulet1=(a1+b1)*2; kerulet2=(a2+b2) * 2; if keruelt1 > kerulet2 then WriteLn('Az első nagyobb téglalap'); else WriteLn('A második nagyobb téglalap');end. A talált hibákat írja a teglalapok_h.txt állományba. ===== Átláthatatlan szemantikai ===== ==== Feladat 1501 ==== A következő program feladat, hogy bekéri két kör sugarát, majd kiszámolja azok kerületét és területét. A kör kerületének képlete 2*r*pi. A kör területének képlete r^2*pi. A ^ karakter egy szám valahányadik hatványát jelöli. A r^2, az r a második hatványon. A program a végén kiírja, hogy melyik nagyobb a területe alapján. A program azonban nem ezt csinálja. Keresse meg a hibákat. program korszamitas; var s1, s2, k1, k2, t1,t2 : real; begin WriteLn('Két kör kerületének és területének számítása'); Write('Első kör sugara: '); Readln(s1); k1 := 2*s1*pi; t1 := s1 * s1 * pi; Write('Második kör sugara: '); Readln(s2); k1 := s2*s2*pi; t1 := 2 * s2 * pi; if t1 < t2 then WriteLn('Az első kör nagyobb') else WriteLn('A második kör nagyobb'); end. A talált szemantikai hibákat írja a kor_h.txt fájlba.