Jump to content

Archived

This topic is now archived and is closed to further replies.

kotek900i

Pierwszy Program

Recommended Posts

Zapewne w każdy pamięta swój pierwszy program Pascalu. Dla mnie nastała ta chwila dość nie dawno, zaś ostatnio zrodził się pierwszy programik. Mimo dumy, chciałam go rozbudować. Niestety mimo wielu prób, okazały się one nieudolne.

 

Program albo nie widzi 3 zmiennej (w ogóle jej nie odczytuje), albo nie zezwala na konstrukcję

(...) end;

end.

 

Walczyłam z tym 4 dni, lecz nie udało mi się odkryć powodu. Mam nadzieję, że pomożecie Laikowi w skorygowaniu minionego błędu. Bądź naprowadzicie mnie na tyle bym samodzielnie go rozwiązała (UWAGA jestem dość wielkim Laikiem, ale czytałam poradniki odnośnie Pascal'a).

 

Program Kalkulator;

uses crt;

var a, b: longint;

var d: string;

begin

repeat

clrscr;

write('Podaj liczbę: ');

write('a= ');

read(a);

write('Podaj liczbę: ');

write('b= ');

read(b);

writeln('Suma podanych liczb wynosi: ',a+b);

writeln('Różnica podanych liczb wynosi: ',a-b);

writeln('Iloczyn podanych liczb wynosi: ',a*b);

if b=0 then writeln('Dzielenie przez 0 nie istnieje') else writeln('Iloraz podanych liczb wynosi: ',a/b);

write('Czy chcesz powtórzyć liczenie? Wpisz Tak lub Nie ');

read(d);

readln;

if d='Tak' then until else end;

end.

Share this post


Link to post
Share on other sites

Uwierz nie czytałaś poradników...

 

if d='Tak' then until else end;

 

Co to jest? :D:D:D

 

write('Czy chcesz powtórzyć liczenie? Wpisz Tak lub Nie ');
readln(d);
until d = 'nie'

Share this post


Link to post
Share on other sites

Taką konstrukcję też próbowałam, przed tą podaną wyżej. Niestety w żadnej ani w moim powyższym poście, ani twoim, ani jeszcze:

write('Czy chcesz powtórzyć liczenie? Wpisz Tak lub Nie ');

readln(d);

 

until d = 'tak'

 

write('Czy chcesz powtórzyć liczenie? Wpisz Tak lub Nie ');

read(d);

until d = 'tak'

 

write('Czy chcesz powtórzyć liczenie? Wpisz Tak lub Nie ');

read(d);

until d = 'nie'

 

zmienna d nie jest widziana przez program, albo pętla jest powtarzana bez końca - wtedy program "niby" nie widzi żadnych błędów.

Share this post


Link to post
Share on other sites

Przede wszystkim, czy to Twoj pierwszy program czy nie. Gdy oczekujesz skutecznej pomocy i chcesz być traktowany poważnie. To naucz się porządnie formatować kod. Jeśli nie dajesz z tym rady sam to skorzystaj z gotowych rozwiązań. Jak JEDI Code Formatter, dodatek GExperts Alternative do Delphi z wbudowanym formatterem. Albo najprosciej skorzystać tego dostępnego z pod Lazarusem.

Share this post


Link to post
Share on other sites

A propos Lazarusa i formatowania kodu... niedawno nieco przy tym grzebałem i ku mojemu zdziwieniu przy zaznaczeniu wielu linijek kodu, klawisz tabulacji zastępował ten kod, zamiast zrobić równe wcięcie dla każdej zaznaczonej linijki, jest jakaś równie prosta/intuicyjna metoda na to? Tab (wcięcie w prawo), Shift+Tab (wcięcie w lewo) w innych używanych przeze mnie edytorach działają.

Share this post


Link to post
Share on other sites

Masz poprawiony program:

 

Program Kalkulator;
uses crt;
var a, b: longint;
d: string;
begin
 repeat
clrscr;
write('Podaj liczbę: ');
write('a= ');
readln(a);
write('Podaj liczbę: ');
write('b= ');
readln(b);
writeln('Suma podanych liczb wynosi: ',a+b);
writeln('Różnica podanych liczb wynosi: ',a-b);
writeln('Iloczyn podanych liczb wynosi: ',a*b);
if (b=0) then
begin
 	writeln('Dzielenie przez 0 nie istnieje');
end else
begin
 	writeln('Iloraz podanych liczb wynosi: ',a/b);
end;
write('Czy chcesz powtórzyć liczenie? Wpisz Tak lub Nie ');
readln(d);
until d='Nie';
end.

 

Wszystkie zmienne wczytuj przez readln(), funkcja read() powoduje kłopoty (sam miałem z tym problem, pisząc jeden z pierwszych programów w TP). Sprawdzane w Turbo Pascalu oraz Delphi 2 i 7.

 

Pozdrawiam!

Share this post


Link to post
Share on other sites

@Avatar: ależ to logicznie. A kiedyś było inaczej? Przecież zaznaczenie treści w większości edytorów i naciśnięcie jakiegoś klawisza poza funkcyjnymi combo, powoduje nadpisanie treści. Także nie rozumiem zdziwienia. Chcesz sformatować kod pod Lazarusem. To używaj domyślnej kombinacji Ctrl+D lub takiej na jaką ją przestawiłeś w ustawieniach IDE. Ewentualnie wybierając ostatnią pozycję z menu "Źródło", rozwijając submenu Jedi i wybierając z niego pierwszą pozycję. A może kwestia wstawiania tabów po zaznaczeniu i wciśnięciu TAB'a, to kwestia jakichś ustawień edytora. Które nie są domyślne. Ale nie wiem gdzie to zmienić, o ile się da w ogóle.

Share this post


Link to post
Share on other sites
Przecież zaznaczenie treści w większości edytorów i naciśnięcie jakiegoś klawisza poza funkcyjnymi combo, powoduje nadpisanie treści. Także nie rozumiem zdziwienia.

Zwykłe edytory tekstu mogą działać tak jak piszesz. Ale od edytora w środowisku programistycznym wymagałbym jednak innego działania. Kiedyś nie było takiego kolorowania składni jak teraz. Kiedyś nie było podpowiadania (code completion). Ale czy to znaczy, że współczesne edytory tego nie mają mieć? Wszystkie powinny się rozwijać.

 

No nic... Po prostu jak widziałem, że wieloliniowe wcięcia wykonywane TABem są obecne we wszystkich innych środowiskach programistycznych używanych przeze mnie (Eclipse, Code::Blocks, Geany IDE, Visual Studio), to brak tego w Lazarusie mnie zdziwił. Praca w Lazarusowym edytorze wydawała mi się dość toporna.

 

Tutaj pytający pisze, że w Delphi są do tego jakieś kombinacje klawiszy: http://stackoverflow...ual-studio-2010 - Lazarus też je ma? Na razie nie mam dostępu do Lazarusa. Nie będę go instalował tylko po to, żeby sprawdzić te kombinacje.

 

ależ to logicznie. A kiedyś było inaczej? Przecież zaznaczenie treści w większości edytorów i naciśnięcie jakiegoś klawisza poza funkcyjnymi combo, powoduje nadpisanie treści.

Wymieniłem wyżej trochę popularnych edytorów i w żadnym z nich, to co napisałeś się nie sprawdza (czyli TAB na zaznaczeniu wielolinijkowym zwiększa wcięcie, a nie zastępuje tekstu).

Share this post


Link to post
Share on other sites

@xevil21 dziękuję za pomoc :)

Błąd udało mi się wyłapać też w innym programie, który pisałam. W tym pierwszym "Kalkulatorze' nic nie pomogło, więc przepisałam to jeszcze raz w nowym i zadziałało. Teraz już znacznie zgrabniej mi to idzie.

 

@olesio tak, to był mój pierwszy programik. Mimo wielu prób kompilacji - różnymi kompilatorami, wszystkie wyrzucały błąd i nie poprawiały. Nawet podany przez Ciebie JEDI. Problem w programie nie rozwiązał się, zaś po napisaniu go jeszcze raz takiego samego wszystko pięknie się kompilowało. Uznam, że Pascal źle mnie ocenił i nie chciał współpracować. ;)

Share this post


Link to post
Share on other sites

@kotek900i: ale ja miałem na myśli program "JEDI Code Formatter". Dzięki niemu ładnie byś sformatował sobie ten kod, bez męczenia się samodzielnie. Nie ma on wpływu na poprawność kodu tylko na jego czytelnośc. Ale skoro i tak działa już Tobie ok, to najważniejsze.

Share this post


Link to post
Share on other sites

Taki mały oftop @olesio czemu cały czas mówisz do kobiety jak do faceta? :P

 

Pytasz o to w czasach genderów?!

Share this post


Link to post
Share on other sites

Sorry, ale nie zwróciłem uwagi. Zresztą nick kotek, to chyba TEN kotek. Dopiero teraz dostrzegłem podaną poniżej avatara płeć.

Share this post


Link to post
Share on other sites

Pomijając już, że olałeś moją poprzednią wiadomość... We wcześniejszym poscie zamiast Jason, zwróciłeś się do mnie "@Avatar" :P

Share this post


Link to post
Share on other sites

No nie ogarniam tego forum to fakt. Kurde nie patrzylem kto co pisze dokładnie, pisało coś 'avatar" pomyslałem a cholera taki nick to skopiuje i wkleje. A co tam :P Ludzie olewają na innych forach tagowanie, tutaj olewają formatowanie kodu, szukanie w google, A to i ja czasami mogę być na bakier z wyglądem forum. Tyle ode mnie w kwestii "usprawiedliwienia". Chociaż tylko winny się tłumaczy, a co ja się będę tłumaczył więcej, jeśli jestem aktualnietylko po siedmiu piwach. A wcześniej jak myliłem płci czy nicki to byłem trzeżwy.

Share this post


Link to post
Share on other sites

×
×
  • Create New...