Mért nem működik megfelelően a program pascalban?
program asd;
uses crt;
var a,b,d,e:integer;
c:char;
begin
clrscr;
writeln('Add emg az első számot');
readln(a);
writeln('Add meg a második számot');
readln(b);
writeln('Összeadni vagy kivonni akarod ' , a, '-t', ' és ' , b, '-t'?');
readln(c);
if c= '+'then writeln(a, ' ‚s ' , b, 'összege: ');
readln(d);
if d=a+b then writeln('helyes válasz');
if d<>a+b then writeln('A válasz helytelen');
if c= '-' then writeln(a, ' ‚s ', b, 'különbsége: ');
readln(e);
if e=a-b then writeln('A válasz helyes');
if e<>a-b then writeln('A válasz helytelen');
end.
Szörnyű tohuvabohu, ezenkívül a maradékos osztás jele DIV, nem pedig a MOD (az a maradék -- DIVision illetve MODulus).
Megpróbáltam a programot a te logikád szerint kifésülni (nem fogadta el a linket, megpróbálom elrontva, javítsd ki):
Szerintem undorító, de tanulságos. Tagolással, behúzással megpróbáltam értelmezhetővé tenni, de ember legyen a talpán, aki rájön a sok IF között, hogy kinek van mumpsza.
Itt egy CASE-blokkos megoldás:
Ez még mindig olyan messze van az elfogadhatótól, mint Makó Jeruzsálemtől, de finoman szólva olvashatóbb, és legalább a műveleteknél észreveszi, ha a felhasználó hülyeséget ír be.
Az ékezetes betűket engedelmeddel éktelenekre cseréltem, hogy a Windows bamba terminálja se legyen kicifrázva különleges karakterekkel.
Hadd javasoljak még egy-két dolgot: Sokfelé ágazó választásnál ne IF-et használj. Mindent ugyanúgy meg tudsz vele oldani ugyan, mint a CASE-blokkal, csak sokkal áttekinthetetlenebb (a programnak nemcsak a megírásakor, hanem a tesztelésekor és utólagos módosításakor is). Becsülendő, hogy egy szuszra minél nagyobb feladatot akarsz megoldani, de amíg a részfeladatokat nem tisztáztad, ne akarj belőlük hatalmas építményeket összerakni, mert ha külön-külön nem működnek, együtt pláne nem fognak. Kezdetben csinálj sokkal egyszerűbb, de tökéletesen működő programokat. Ezenkívül használd ki, hogy ezeket a részeket eljárásokba (PROCEDURE) és függvényekbe (FUNCTION) szervezve elkülönítheted egymástól, tehát sürgősen barátkozz meg ezeknek a használatával. Egy ilyen módon tagolt program nemcsak sokkal átláthatóbb lesz, de a részleteit is egymástól függetlenül javítgathatod. Mindezen felül pedig úgy kezeld a dolgot, mintha nem te használnád a programot, hanem valaki olyan, aki nem ismeri. Persze, hogy ez még haszontalan játszadozás, de később hátha messzebbre nézel, akkor jól jön, ha már az elején megszokod, hogy a felhasználó hülye, és minden lehetséges hibát elkövet. Mondjuk meg akarod mutatni a programodat a haverodnak, az meg az 'Add meg az első számot' kérdésre beírja, hogy '8,54' vagy 'három' vagy '95487987364581'. Ezeket a problémákat a fentebb linkelt programok sem orvosolják, csak jelzésnek szánom, hogy van még mivel kísérletezni.
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!