Skocz do zawartości


Zdjęcie

Problemy z Turbo Pascalem


  • Zaloguj się, aby dodać odpowiedź
9 odpowiedzi w tym temacie

#1 wheatus

wheatus

    Obserwator

  • 6 postów

Napisano 03 02 2013 - 23:01

Dzisiaj rozpocząłem kurs Turbo Pascala i już w drugiej lekcji natrafiłem na problem. Jak wpisuje kod:
VAR
imie:string;

BEGIN
write('Jak masz na imię?');
read(imie);
write('Witaj ');
write(imie);
write('. Życzę miłego dnia!!!');
readln;
END.

Wyskakuje mi okienko z Jak masz na imię?, wpisuje swoje imię i zamiast Życzę miłego dnia, nic się nie dzieje a jak wcisnę enter to mi się wyłącza. Ktoś pomoże początkującemu?

  • 0

#2 bipiw

bipiw

    Zaawansowany użytkownik

  • 1 180 postów

Napisano 03 02 2013 - 23:11

readln(imie);
to Ci rozwiąże problem.
Chyba, że koniecznie chcesz mieć read to wtedy na końcu zamiast readln; daj readkey;

Użytkownik bipiw edytował ten post 03 02 2013 - 23:28

  • 1

#3 wheatus

wheatus

    Obserwator

  • 6 postów

Napisano 04 02 2013 - 11:52

Nadal nie dziala. Otwieram program wyskakuje "Jak masz na imię?" i wpisuje swoje imię . To powitanie ma się pojawić zaraz po wpisaniu imienia, czy muszę coś nacisnąć? Może ja coś robię źle. Uczę się z tej strony: http://turbopascal.skryptoteka.pl/3.html
  • 0

#4 pawel315

pawel315

    Uzależniony od forum

  • 1 553 postów

Napisano 04 02 2013 - 12:33

Napisałem ten kod ( przypomiałeś mi pascala ) zrobiłem Ci gotowca, ale mam nadzieję, że wyciągniesz wnioski
Kod wygląda tak:

var
imie:string;
s:Integer;

begin
write('Jak masz na imie ');
readln(imie);
write('Witaj ');
writeln(imie);
writeln('Zycze milego dnia');
read(s);
end.

z czego to read(s) czeka na naciśniecie dowolnego klawisz, a następnie enter, aby zakończyć program.
Gdy napiszesz writeln to po napisaniu tekstu kursor przejdzie do nowej linii, tak samo jest z readln.
Po za tym w twoim kursie jest dalej wszystko opisane ;)

Użytkownik pawel315 edytował ten post 04 02 2013 - 12:43

  • 1

#5 wheatus

wheatus

    Obserwator

  • 6 postów

Napisano 04 02 2013 - 12:56

Teraz już działa, wielkie dzięki. Idę się uczyć dalej.

Użytkownik wheatus edytował ten post 04 02 2013 - 12:58

  • 0

#6 bipiw

bipiw

    Zaawansowany użytkownik

  • 1 180 postów

Napisano 04 02 2013 - 14:24

Wszystko ok tylko nie potrzebna jest ta dodatkowa zmienna s(zaśmiecanie pamięci->jak pisać to porządnie). Wcześniej ten ostatni readln; nie dawał efektu czekania na wciśnięcie czegoś ponieważ funkcja read wczytywała imie(ale użytkownik po wpisaniu imienia wciska enter i ten enter zostawał w buforze), a następnie readln widziało ten nieszczęsny enter i wypisywało jak trzeba tylko, że kończyło program. Dlatego dobrą praktyką jest wczytywanie zmiennych przez readln zamiast read:) U mnie to działa jak trzeba:
VAR
imie:string;
BEGIN
write('Jak masz na imię?');

readln(imie);

write('Witaj ');
write(imie);
write('. Życzę miłego dnia!!!');
readln;
END.

Użytkownik bipiw edytował ten post 04 02 2013 - 14:25

  • 1

#7 wheatus

wheatus

    Obserwator

  • 6 postów

Napisano 05 02 2013 - 19:05

To znowu ja. Chcę napisać program, który najpierw wyświetla kilka zdań, potem liczy iloczyn 2 liczb podanych przez użytkowników, a na koniec na środku ekranu ma się pojawić napis "Do Widzenia".
Napisałem takie coś:
begin
writeln('Pierwsze zdanie');
writeln('Drugie zdanie');
writeln('Trzecie zdanie');
readl;
end.
var
liczba1,liczba2:longint;
begin
writeln('Podaj pierwszą liczbę:');
readln(liczba1);
writeln('Podaj drugą liczbę:');
readln(liczba2);
writeln('Ich iloczyn wynosi:',liczba1*liczba2);
readln;
end.
uses crt
begin
clrscr;
gotyxy(30,30);
write('Do Widzenia');
readln;
end.

I mam dwa problemy:
Po wyświetleniu "Trzecie zdanie" i wcisnięciu enter program się zamyka. Co robię źle?
Jakie są współrzędne środka ekranu?

Użytkownik wheatus edytował ten post 05 02 2013 - 19:07

  • 0

#8 bipiw

bipiw

    Zaawansowany użytkownik

  • 1 180 postów

Napisano 06 02 2013 - 00:35

Ponieważ napisałeś tutaj trzy programy. Znacznik end. kończy działanie programu i kropka:) musisz zrobić wszystko co chcesz w jednym.
uses crt;
var
liczba1,liczba2:longint;
begin
writeln('Pierwsze zdanie');
writeln('Drugie zdanie');
writeln('Trzecie zdanie');
readln;
writeln('Podaj pierwszą liczbę:');
readln(liczba1);
writeln('Podaj drugą liczbę:');
readln(liczba2);
writeln('Ich iloczyn wynosi:',liczba1*liczba2);
readln;
clrscr;
gotoxy(30,30);
write('Do Widzenia');
readln;
end.
(tego nie testowałem ale myśle że o coś w tym stylu chodzi)

Użytkownik bipiw edytował ten post 06 02 2013 - 00:53

  • 1

#9 wheatus

wheatus

    Obserwator

  • 6 postów

Napisano 06 02 2013 - 21:52

Po wpisaniu kodu powyżej podczas kompilacji wyskakuje błąd: "Error 3: unknown identifier"
  • 0

#10 bipiw

bipiw

    Zaawansowany użytkownik

  • 1 180 postów

Napisano 06 02 2013 - 22:31

U mnie chodzi dobrze. Poszukaj literówek u siebie(bo tutaj jest dobrze->skopiowane żywcem do pliku *.pas ->nie wyrzuca błędów),a Ty widziałem, że wcześniej parę strzeliłeś np. gotyxy albo readl; :P

Użytkownik bipiw edytował ten post 06 02 2013 - 22:35

  • 0

Zobacz więcej tematów z tagiem: Turbo Pascal



Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych