![]() |
||
Nagrywarki |
Pliki |
Dyski twarde |
Recenzje |
Księgarnia |
Biosy |
Artykuły |
Nagrywanie od A do Z |
Słownik |
FAQ
|
||
|
Off topic Forum poświęcone wszelkim innym tematom. |
![]() |
|
Opcje związane z dyskusją | Tryby wyświetlania |
![]() |
#1 |
Banned
Data rejestracji: 27.08.2003
Lokalizacja: Nigdzie
Posty: 2,094
![]() ![]() |
Turbo Pascal
Właśnie się ucze programowania w tym języku. Napisałem "coś", tylko nie wiem czy dobrze. W tym programie chodzi o obliczenie sumy dwóch liczb i ewentualnie o ich podzieleniu przez dwa. Oto źródło tego programu (obeznanych proszę o pomoc):
program Liczenie; uses crt; var a,b,s: real; begin clrsrc; write('Program wykonuje dodawanie i dzielenie '); writeln('Wprowadz 1 liczbe: '); read(a); writeln('Wprowadź 2 liczbe: '): read(b); writeln(Czy chcesz podzielić sume tych liczb wpisz TAK lub NIE: ') if read('TAK') THEN s:=a+b/2 ELSE read('NIE') s:=a=b end; write (s); end; begin delay(5000) end. Odpowiedź potrzebuje przed godziną 12.00 dnia 22.12.2003 |
![]() |
![]() |
#ads | |
CDRinfo.pl
Reklamowiec
Data rejestracji: 29.12.2008
Lokalizacja: Sieć globalna
Wiek: 31
Posty: 1227
|
|
![]() |
![]() |
#2 |
the one
CDRinfo VIP
Data rejestracji: 08.12.2002
Lokalizacja: Wrocław
Posty: 17,900
![]() ![]() ![]() ![]() ![]() ![]() |
Ja tam pascala ledwie liznalem jakis czas temu, ale cos w tej linijce mi sie nie podoba:
if read('TAK') THEN s:=a+b/2 ELSE read('NIE') s:=a=b Poczatek w porzadku, ale zastanawia mnie to po else. Czy nie mozna darowac sobie tego else i napisac po prostu dwa warunki. Bo z tego, co tu jest, jak dla mnie wynika, ze: jezeli wprowadzone zostanie tak, to ma cos tam zrobic, a jezeli nie, to ma zostac wprowadzone nie i wtedy zrobi cos innego. Nie wiem, moze to jest dobrze, bo z drugiej strony, jezeli nie zostanie wprowadzone tak, to bedzie czekal, az zostanie wprowadzone nie, a inne mozliwosci nie bede w ogole brane pod uwage, czyli dobrze. W kazdym razie nigdzie poza tym nie widze zadnego bledu, ale tak, jak napisalem, pascala zaledwie liznalem, wiec wcale nie musi to znaczyc, ze takiego nie ma ![]()
__________________
neverending path to perfection.. |
![]() |
![]() |
![]() |
#3 |
the one
CDRinfo VIP
Data rejestracji: 08.12.2002
Lokalizacja: Wrocław
Posty: 17,900
![]() ![]() ![]() ![]() ![]() ![]() |
a czekaj, jeszcze to mi sie teraz rzucilo w oczy: s:=a=b . Co to ma wlasciwie robic? Chodzilo Ci po prostu o sume? (to po prostu pewnie male przeoczenie).
I jeszcze to poprzednie: s:=a+b/2 . Jezeli to ma byc podzielenie sumy, to chyba trzeba jeszcze jakis nawias dodac (jakkolwiek to sie w Pascalu robilo). Nie pamietam, jak Pascal traktowal kolejnosc dzialan, ale chyba jednak miala ona w nim jakies znaczenie.
__________________
neverending path to perfection.. |
![]() |
![]() |
![]() |
#4 |
Recydywista - Wielokrotny
Zlotowicz
CDRinfo VIP Data rejestracji: 17.01.2003
Lokalizacja: Wawa
Posty: 5,265
![]() ![]() |
if read('TAK') THEN s:=a+b/2 ELSE read('NIE') s:=a=b
tej linijki bym tak nie zapisal: 1) s:=a=b s przyjmie wart logiczna: czy a=b 2) s:=a+b/2 s bedzie wynosilo a + polowa b Poza tym ja bym jednak zrobil oddzielnie read(c) c jako string (i chyba lepiej dla swietego spokoju uzywac readln) czyli ===== readl(c); IF c=tak THEN s:=(a+b)/2 ELSE IF c=nie THEN s:=a+b ELSE begin writeln('BLEDNY WPIS'); s:=0 end; ===== begin ... end; write (s); end; begin delay(5000) end. Za duzo endow, poza tym lepiej chyba zrobic: ===== writeln(s); readkey; end. ===== wogole to bym zrobil troche inaczej: program Liczenie; uses crt; var a,b,s: real; var c: string[3]; (nie pamietam juz dobrze czy tak nalezy) begin clrsrc; writeln('Program wykonuje dodawanie i dzielenie '); writeln('Wprowadz 1 liczbe: '); read(a); writeln('Wprowadź 2 liczbe: '); read(b); writeln('Czy chcesz podzielić sume tych liczb wpisz TAK lub NIE:'); readl(c); IF c='TAK' THEN begin s:=(a+b)/2; writeln(c) end ELSE IF c='NIE' THEN begin s:=a+b; writeln(c) end ELSE writeln('BLEDNY WPIS'); readkey end. Chyba tak PS. - PASCAL SUX ![]() |
![]() |
![]() |
![]() |
#5 |
Recydywista - Wielokrotny
Zlotowicz
CDRinfo VIP Data rejestracji: 17.01.2003
Lokalizacja: Wawa
Posty: 5,265
![]() ![]() |
Przemyslalem to jeszcze. Rozsadniej bedzie zrobic:
var c: char; potem writeln('Jezeli chcesz otrzymac srednia arytmetyczna tych liczb to nacisnij t, a jezeli chcesz otrzymac ich sume to nacisnij n:'); c:=readkey; IF (c='T') or (c='t') THEN begin s:=(a+b)/2; writeln(c) end ELSE IF (c='N') or (c='n') THEN begin s:=a+b; writeln(c) end ELSE writeln('BLEDNY WPIS'); writeln('Nacisnij dowolny klawisz zeby zakonczyc'); readkey end. |
![]() |
![]() |
![]() |
#6 |
Samiec - twój wróg!
Data rejestracji: 21.06.2003
Lokalizacja: Lublin
Posty: 330
![]() |
blagam, uzywajcie komentarzy w swoich kodach koledzy programisci
![]() ...a i wciecia sie na pewno przydadza Kod:
program Liczenie; uses crt; var a, b, suma : Real; odp : String; begin clrsrc; // czyszczenie ekranu WriteLn('Program wykonuje dodawanie i dzielenie.'); // info // wczytanie 1. liczby write('Wprowadz 1 liczbe: '); ReadLn(a); // wczytanie 2. liczby write('Wprowadź 2 liczbe: '): ReadLn(b); // spytanie o dzielenie Write(Czy chcesz podzielić sume tych liczb (wpisz TAK lub NIE): '); ReadLn(odp); suma := a+b; // obliczenie sumy if (odp = 'TAK') then WriteLn('wynik: ', suma/2) // wyswietlenie wyniku else // odp = 'NIE' WriteLn('wynik: ', suma); // wyswietlenie wyniku // nie wiem po co, ale czekamy 5 sek. Delay(5000) end. |
![]() |
![]() |
![]() |
#7 |
Banned
Data rejestracji: 27.08.2003
Lokalizacja: Nigdzie
Posty: 2,094
![]() ![]() |
Dzięki ale rąbnołeś się w jednym miejscu brakuje apostrofa ale i tak jest dobrze. Dzięki Ci bardzo cinma. A znasz funkcje która spytałaby by użytkownika "Jeśli chcesz wyjść naciśnij W a jeśli chcesz wykonać jakieś działanie naciśnij T"
|
![]() |
![]() |
![]() |
#8 |
Recydywista - Wielokrotny
Zlotowicz
CDRinfo VIP Data rejestracji: 17.01.2003
Lokalizacja: Wawa
Posty: 5,265
![]() ![]() |
masz mnostwo mozliwosci - albo nasz program zrobisz jako funkcje ktorej wykonanie uzaleznisz od instr warunkowej, albo napiszesz po prostu to wszystko w jednej z opcji ifa a druga spowoduje tylko np. writeln(dowidzenia) albo uzyjesz bardzo niemile widzianej instrukcji goto za ktora przynajmniej powinienes zostac upomniany.
Oba programy przesledzilem i jakos braku apostrofa nie zauwazylem. |
![]() |
![]() |
![]() |
#9 | |
Samiec - twój wróg!
Data rejestracji: 21.06.2003
Lokalizacja: Lublin
Posty: 330
![]() |
Cytat:
ale ogolnie to mozna zapisac tak: Kod:
program // deklaracja typow // deklaracja zmiennych var odp : Char; begin // tu moze byc jakis kod // pytamy o akcje Write('Co chcesz zrobic? '); ReadLn(odp); while (UpCase(odp) <> 'W') do begin // dopoki uzytkownik nie wpisal 'w' lub 'W' case UpCase(odp) of // tutaj lista mozliwosci 'A' : ProceduraA; // wywolanie procedury A 'B' : ProceduraB; // wywolanie procedury B 'C' : ProceduraC; // wywolanie procedury C else // podano inna wartosc WriteLn('Podales ', odp, ', nie ma takiej mozliwosci.'); end; // case // pytamy o akcje Write('Co chcesz zrobic? '); ReadLn(odp) end; // while WriteLn('No to konczymy.'); // tu moze byc jakis kod, ktory wykona sie przed zakonczeniem programu end. Kod:
function CoRobimy : Integer; // funkcja, ktora wyswietla 'menu', pyta uzytkownika // o akcje i zwraca wartosc odpowiedzi var odp : Integer; begin // pytamy o akcje WriteLn('1. procedura pierwsza'); WriteLn('2. procedura druga'); WriteLn('3. procedura trzecia'); WriteLn('0. koniec'); Write('Co chcesz zrobic? (wpisz 1, 2, 3 lob 0) '); // wczytujemy odpowiedz ReadLn(odp); // zwracamy odpowiedz Result := odp end; // CoRobimy a potem w programie: // potrzebne doklaracje var akcja : Integer; begin // jakis kod akcja := CoRobimy; // wczytujemy odpowiedz while ( akcja <> 0 ) do begin case akcja of 1 : Procedura1; 2 : Procedura2; 3 : Procedura3; else WriteLn('Nie ma takiej akcji.') end; akcja := CoRobimy; // wczytujemy odpowiedz end; // while // jakis kod na koniec end.
__________________
"Chciałam powiedzieć tak, że 90% oprogramowania w Europie rzeczywiście pisanych jest w Microsoft Office, natomiast ok. 5% w Linuksie." Podsekretarz Stanu w Ministerstwie Edukacji Narodowej i Sportu Hanna Kuzińska Ostatnio zmieniany przez cinma : 22.12.2003 o godz. 14:39 |
|
![]() |
![]() |
![]() |
|
|