Oryginalna strona colobot.cba.pl umarła, gdy cba.pl przestało oferować darmowy hosting. To jest statyczny mirror, pobrany w 2018. ~krzys_h
 
Polski Portal COLOBOTa
COLOBOT Polish Portal

Turbo Pascal, Delphi Pascal - BasicCalc By cezar.512

Raptor - 04-03-2011, 14:51
Temat postu: BasicCalc By cezar.512
Oto kolejny, niezbyt oryginalny program, który powstał na potrzeby dostania piątki na informatyce.

Więc tak. Ostatnio przerabialiśmy algorytmikę i padło tam zagadnienie Pascal. Od razu przypomniałem sobie, co wiem na temat tego środowiska i że ono w ogóle istnieje. I tak oto, dzięki Pannie B. zmotywowałem głowę swą, by nauczyć się tego języka. Jak już nieco poznałem się na środowisku, postanowiłem napisać program według scenariusza Panny B.: „Stwórz program, który pyta się o dwie liczby, a następnie podaje wynik mnożenia tych liczb”. Pomyślałem sobie: „To takie proste, że nawet na dwóję moja praca nie zasługuje. Zrobię więc cały kalkulator!”.

Niestety moja obecna wiedza na temat Pascal jest dość uboga, więc na razie wygląda on tak:
BasicCalc 1.0:
Kod:
USES CRT;

VAR
a,b,choose:longint;

LABEL start;

BEGIN
write('BasicCalc 1.0 By cezar.512.');
readln;
start:
clrscr;

writeln('Wybierz typ dziaˆania, kt˘ry chcesz wykona†:');
writeln;
writeln('  1. Dodawanie (+)...');
writeln('  2. Odejmowanie (-)...');
writeln('  3. Mnoľenie (*)...');
writeln('  4. Dzielenie (/)...');
writeln('  0. Wyj˜cie.');
read(choose);
clrscr;

if choose=1 then
   BEGIN
   writeln('Podaj pierwszĄ liczb© caˆkowitĄ:');
   read(a);
   writeln;
   writeln('Podaj drugĄ liczb© caˆkowitĄ:');
   read(b);
   writeln;

   writeln('Wynik dodawania liczb ',a,' i ',b,' to ',a+b,'.');
   writeln(a,'+',b,'=',a+b);
   writeln;

   writeln('Wybierz, czy chcesz wyj˜†:');
   writeln;
   writeln('  1. Kontynuuj...');
   writeln('  0. Wyjd«.');
   read(choose);

   if choose=1 then goto start;
   if choose=0 then halt;
   END;

if choose=2 then
   BEGIN
   writeln('Podaj pierwszĄ liczb© caˆkowitĄ:');
   read(a);
   writeln;
   writeln('Podaj drugĄ liczb© caˆkowitĄ:');
   read(b);
   writeln;

   writeln('Wynik odejmowania liczb ',a,' i ',b,' to ',a-b,'.');
   writeln(a,'-',b,'=',a-b);
   writeln;

   writeln('Wybierz, czy chcesz wyj˜†:');
   writeln;
   writeln('  1. Kontynuuj...');
   writeln('  0. Wyjd«.');
   read(choose);

   if choose=1 then goto start;
   if choose=0 then halt;
   END;

if choose=3 then
   BEGIN
   writeln('Podaj pierwszĄ liczb© caˆkowitĄ:');
   read(a);
   writeln;
   writeln('Podaj drugĄ liczb© caˆkowitĄ:');
   read(b);
   writeln;

   writeln('Wynik mnoľenia liczby ',a,' przez ',b,' to ',a*b,'.');
   writeln(a,'*',b,'=',a*b);
   writeln;

   writeln('Wybierz, czy chcesz wyj˜†:');
   writeln;
   writeln('  1. Kontynuuj...');
   writeln('  0. Wyjd«.');
   read(choose);

   if choose=1 then goto start;
   if choose=0 then halt;
   END;

if choose=4 then
   BEGIN
   writeln('Podaj pierwszĄ liczb© caˆkowitĄ:');
   read(a);
   writeln;
   writeln('Podaj drugĄ liczb© caˆkowitĄ:');
   read(b);

   writeln('Wynik dzielenia liczby ',a,' przez ',b,' to ',a/b,'.');
   writeln(a,'/',b,'=',a/b);
   writeln;

   writeln('Wybierz, czy chcesz wyj˜†:');
   writeln;
   writeln('  1. Kontynuuj...');
   writeln('  0. Wyjd«.');
   read(choose);

   if choose=1 then goto start;
   if choose=0 then halt;
   END;

if choose=0 then
   BEGIN
   write('Koniec programu. Autor - cezar.512.');
   delay(2000);
   END;
END.

Mimo oczywistego dostania piątki (dziś!), chcę dalej rozwijać ten program ze względów nauki (no bo do czego innego jest on teraz przydatny? Zresztą calc.exe w Windows jest lepszy).
Czekam więc na opinie.

Simbax - 04-03-2011, 15:54

Boże, program zapchany tym samym kodem w kilku miejscach... To jest strata miejsca i czasu.

Najpierw zapytaj użytkownika o dwie liczby. Później mu każ wybierać rodzaj działania. Popatrz jaka to oszczędność. Zamiast w czterech różnych miejscach wstawiać ten sam kod wstawiasz go raz. Tak samo kod na wyjście. Umieść go na końcu programu! Po wykonaniu działania automatycznie program przechodzi dalej.

BTW Zmotywowałeś mnie do ponownej nauki Pascal-a :P Jak się nie potrafię wsiąść za C++, to co mi szkodzi :) Właściwie to jedyne czego muszę się jeszcze nauczyć to obsługi myszki :>

Raptor - 05-03-2011, 22:33

Spojrzałem jeszcze raz na kod swojego programu, pomyślałem logicznie (Niebywałe! Miałem wenę ;-) ) i faktycznie! Za dużo tego kodu. Przez chwilę myślałem, że nie mam wystarczająco dużo wiedzy, by to zoptymalizować, aż tu nagle zjawiła się Myśl, która mną wzdrygnęła! Tak więc oto narodziła się wersja 1.1 mego programu:

BasicCalc 1.1:
Kod:
USES CRT;

VAR
a,b,choose:longint;

LABEL start;

BEGIN
write('BasicCalc 1.1 By cezar.512.');
readln;

start:
clrscr;
writeln('Podaj pierwszĄ liczb© cakowitĄ:');
read(a);
writeln;

writeln('Wybierz typ dziaania, kt˘ry chcesz wykona†:');
writeln;
writeln('  1. Dodawanie (+)...');
writeln('  2. Odejmowanie (-)...');
writeln('  3. Mnoľenie (*)...');
writeln('  4. Dzielenie (/)...');
read(choose);
writeln;

writeln('Podaj drugĄ liczb© cakowitĄ:');
read(b);
clrscr;

if choose=1 then
   BEGIN
   writeln('Wynik dodawania liczb ',a,' i ',b,' to ',a+b,'.');
   writeln(a,'+',b,'=',a+b);
   END;

if choose=2 then
   BEGIN
   writeln('Wynik odejmowania liczb ',a,' i ',b,' to ',a-b,'.');
   writeln(a,'-',b,'=',a-b);
   END;

if choose=3 then
   BEGIN
   writeln('Wynik mnoľenia liczby ',a,' przez ',b,' to ',a*b,'.');
   writeln(a,'*',b,'=',a*b);
   END;

if choose=4 then
   BEGIN
   writeln('Wynik dzielenia liczby ',a,' przez ',b,' to ',a/b,'.');
   writeln(a,'/',b,'=',a/b);
   END;

writeln;
writeln('Wybierz, czy chcesz wyj†:');
writeln;
writeln('  1. Kontynuuj...');
writeln('  0. Wyjd«.');
read(choose);

if choose=1 then goto start;
if choose=0 then
   BEGIN
   clrscr;
   write('Koniec programu. Autor - cezar.512.');
   delay(2000);
   END;
END.

Mam nadzieję, że się chociaż trochę podoba. Ale krytyki nie mam jeszcze dość...

DemoLisH - 10-03-2011, 17:06

wygląda jak połączenie vb z delphi ;p

Powered by phpBB modified by Przemo & WRIM © 2003 phpBB Group