Forum CDRinfo.pl

Forum CDRinfo.pl (https://forum.cdrinfo.pl/)
-   Komputery - oprogramowanie i sprzęt (https://forum.cdrinfo.pl/f113/)
-   -   Pascal...pytanie (https://forum.cdrinfo.pl/f113/pascal-pytanie-43359/)

ksviper 03.12.2007 19:01

Ilość załączników: 2
nie wiem czy o to Ci biegało, ale działa
Twój problem polegał na tym, iż zwykłe okno dosowskie ma tylko 25 wierszy i wszystkie indeksy gotoxy powyżej max wierszy były obcinane do tego maksimum
Załącznik 43903

edit:
nie usuwałem z kodu readkeyów aby było łatwiej testować :)

edit:
poprawiłem i teraz wyświetla wszystkie znaki z tablicy ASCII :)
Załącznik 43904

ksviper 03.12.2007 08:53

w domu lukn***281; na to, bo w pracy nie b***281;d***281; mia***322; zbyt wiele czasu

Berion 03.12.2007 01:53

A przepraszam, nie zrozumia***322;em Ciebie.

O jeden wiersz nie zupe***322;nie. Podczas gdy tabela jest rysowana do 13 wierszy jest ok. Kiedy zaczynaj***261; by***263; rysowane kolejne, nadpisuj***261; stare na pocz***261;tku. Nie wiem jak to wyja***347;ni***263;. Zmniejsz liczb***281; wierszy w kodzie (na pocz***261;tku ***378;r***243;d***322;a) to chyba zczaisz o co mi chodzi ;].

Te ***347;miecie to kolejne koordynaty i kolejne znaki jak i ich warto***347;ci w ASCII, kt***243;re si***281; napa***263;ka***322;y w jednym wierszu, z racji faktu, ***380;e s***261; "wk***322;adane" od (0,0), a tabela "posz***322;a" dalej.

ksviper 02.12.2007 23:49

ten screen widzia***322;em, chcia***322;em zobaczy***263; poprawy uk***322;ad
wg. mnie najlepiej jakby wy***347;wietla***322;o ka***380;dy znak o jedno pole wy***380;ej, tylko nie wiem co to s***261; za ***347;miecie w ostatnim wierszu

Berion 02.12.2007 23:46

Post nr. 21 ;)

http://forum.cdrinfo.pl/attachment.p...2&d=1196536483

Co***347; takiego tylko, tak aby nie ogranicza***322;a si***281; w wy***347;wietlaniu do bodaj***380;e 13 wierszy. W og***243;le nie rozumiem tego czemu tak robi. Powinien normalnie wy***347;wietli***263; ca***322;o***347;***263;, w***243;wczas wszystkie warto***347;ci i znaki "trafi***322;yby" w ramk***281;.

ksviper 02.12.2007 22:45

@Berion: mo***380;esz narysowa***263; jak dok***322;adnie ma wygl***261;da***263; ta tabela po wygenerowaniu
albo za***322;***261;cz plik tekstowy

Berion 02.12.2007 22:02

Cytat:

Napisany przez pawelblu (Post 866201)
Ten kod jest straszny. Dopisz w komentarzach co mają robić poszczególne fragmenty. [...]

To nie mój kod tylko nauczyciela :szczerb:

Co wg. Ciebie jest w nim takiego, cytuję: "straszne"? Co to znaczy, że kod jest ładny/uporządkowany? Czy nie jest tak, że każdy programista ma "swój własny porządek"?

pawelblu 02.12.2007 20:18

Cytat:

Napisany przez Berion (Post 866144)
Za odpowiedzi wszystkim dziękuję. Goto wykreślam ze słownika ;]

//nikt nie wie co jest zrąbane w rysowaniu tych tabelek? Zlitujcie się nad moją biedną duszą... :szczerb:

Ten kod jest straszny. Dopisz w komentarzach co mają robić poszczególne fragmenty.

Cytat:

Napisany przez sobrus (Post 866169)
@pawełblu
nie mówie jak to wygląda w sprzętowej realizacji na procesorze tylko z punktu widzenia algorytmiki.

Algorytmika nie ma z tym nic wspólnego. Dziedzinami które wykluczają używanie goto są głównie: Inżynieria oprogramowania (czyli styl pisania kodu) oraz semantyka i weryfikacja (czyli sprawdzanie czy to co jest napisane działa tak jak trzeba).

sobrus 02.12.2007 18:46

@pawe***322;blu
nie m***243;wie jak to wygl***261;da w sprz***281;towej realizacji na procesorze tylko z punktu widzenia algorytmiki. Oczywi***347;cie ***380;e while jest t***322;umaczony na instrukcje testu i skoku (a tak***380;e na ca***322;***261; mas***281; innych typu wrzucenie zmiennej do rejestru) bo taka jest budowa obecnych procesor***243;w. Dlatego w asseblerze oczywi***347;cie etykiety s***261;.

Kiedy***347; na wyk***322;adzie by***322;a maszyna kt***243;ra mia***322;a kilka strasznie prymitywnych instrukcji typu skok, zwi***281;kszenie warto***347;ci o 1 itp.
I by***322;a ca***322;kowicie r***243;wnowa***380;na wszystkim obecnym komputerom. Tylko ***380;e zrobienie na niej czegokolwiek na poziomie 3+5 to by***322;a masakra. Ale kompilator pewnie zrobi***263; by si***281; da***322;o :P

Berion 02.12.2007 16:23

Za odpowiedzi wszystkim dzi***281;kuj***281;. Goto wykre***347;lam ze s***322;ownika ;]

//nikt nie wie co jest zr***261;bane w rysowaniu tych tabelek? Zlitujcie si***281; nad moj***261; biedn***261; dusz***261;... :szczerb:

pawelblu 02.12.2007 14:39

Cytat:

Napisany przez Berion (Post 865973)
Wszyscy mi tak m***243;wi***261;, tylko ni cholery nie wiem dlaczego? Jest jaka***347; lepsza alternatywa? :hmm:

Programy w kt***243;rych u***380;yto instrukcji goto s***261; nieweryfikowalne formalnie. Gdy masz zwyk***322;e p***281;tle mo***380;na np. policzy***263; niezmiennik p***281;tli.

Nieformalnie te***380; jest gorzej - du***380;o gorsza czytelno***347;***263;. Pami***281;taj ***380;e z za***322;o***380;enia oprogramowania nie pisze jedna osoba. Natomiast je***380;eli chodzi o optymalno***347;***263; to dobre zrobienie goto jest bardziej efektywne od zwyk***322;ych p***281;tli, ale trudno jest zrobi***263; dobre i przemy***347;lane labele i instrukcje goto, cho***263; mo***380;na. Tak jest np. w niekt***243;rych fragmentach kodu w j***261;drze linuxa (albo by***322;o, przynajmniej w 2.4).

Cytat:

Napisany przez sobrus (Post 866107)
Z teoretycznego punktu widzenia dawno jest udowodnione ***380;e wszystko da si***281; napisa***263; trzema typami instrukcji - sekwencji ( ; ), iteracji (while) i selekcji (if). Reszta to tylko dodatki.

Hehehe. No nie do ko***324;ca, a raczej nie w t***261; stron***281;. Prawda wygl***261;da tak ***380;e np. taki while jest t***322;umaczony przez kompilator na goto :D goto jest instukcj***261; procesora, while to "lukier syntaktyczny", ale taki do***347;***263; estetycznie i funkcjonalnie niezb***281;dny.

p***281;tle i ify s***261; t***322;umaczone na test rekord***243;w (inst. procesora) i odpowiedni skok do odpowiedniej etykiety (inst. procesora).

sobrus 02.12.2007 14:17

etykiety i goto to paskudny pomys***322;. ka***380;dy rozs***261;dny programista opieprzy za ich stosowanie i z***322;apie si***281; za g***322;owe jak przyjdzie mu czyta***263; taki kod...
u mnie na studiach stosowanie tego by***322;o ca***322;kowicie zabronione i te***380; na pocz***261;tku si***281; dziwi***322;em czemu bo jako dziecko stosowa***322;em goto nagminnie w basicu (C64 ;) ).

Nie spotka***322;em ani jednej rzeczy kt***243;r***261; wygodniej by***322;oby zrobi***263; przez goto. Z teoretycznego punktu widzenia dawno jest udowodnione ***380;e wszystko da si***281; napisa***263; trzema typami instrukcji - sekwencji ( ; ), iteracji (while) i selekcji (if). Reszta to tylko dodatki.

Patrix 01.12.2007 22:09

Cytat:

Napisany przez Berion (Post 865977)
Ale powiedz please, czemu etykiety to niedobry pomys***322;?

bo jest be ;)
za pomoc***261; goto nie mo***380;na skoczy***263; do innej procedury, p***281;tli...

poza tym estetyka...
tworzenie menu za pomoca goto jest kozackie... i tak wyglada...
zamiast je robic za pomoca goto/etykiet i if'ow to lepiej podzielic program na procedury i wywolywac je za pomoca case... wygl***261;da ***322;adniej i logiczniej...


napisalem Ci na kolanie menu... teraz zr***243;b to samo na goto :D teraz rozumiesz? :>
Kod:

program bleble;
uses crt;
var
zonk,zonk1:integer;

procedure aa;
        begin
                writeln('jeden');
        end;
procedure bb;
        begin
                writeln('dwa');
        end;
procedure menu;
        begin
                writeln('[1] procedura aa');
                writeln('[2] procedura bb');
                writeln('[3] wyjdz');
                read(zonk);
        end;
begin
        clrscr;
        zonk1 := 1;
        repeat
        menu;
          case zonk of
                1: aa;
                2: bb;
                3: exit;
          end;
        until zonk1 <> 1;
        readln;
end.

po pewnym czasie doszedlbys do wniosku:

jesli bedziesz miec kilkanascie etykiet to stracisz kontrole nad programem...

np.

masz w programie kolejno (gdzies tam miedzy kodem)

label zonk1;
(...)
label zonk2;
(...)
label zonk3
(...)
label zonkN

i teraz tak jak wywolasz etykiete zonk1; to wykona sie wszystko w innych etykietach nizej czy tego chcesz czy nie...
jesli wywolasz zonk2; to tez za kazdym razem wykona sie wszystko co pod nia...

wywolujac procedure case'm _wyjmujesz_ do wykonania potrzebny Ci FRAGMENT programu, tego nie uzyskasz za pomoca goto

Berion 01.12.2007 21:46

Nie pomy***347;la***322;em o tym :D

Ale powiedz please, czemu etykiety to niedobry pomys***322;?

Patrix 01.12.2007 21:39

Cytat:

Napisany przez Berion (Post 865973)
Wszyscy mi tak m***243;wi***261;, tylko ni cholery nie wiem dlaczego? Jest jaka***347; lepsza alternatywa? :hmm:


jak juz chcesz miec petle nieskonczona wracajaca do poczatku po nacisnieciu dowolnego klawisza...

Kod:

program bleble;

uses crt;

var
zonk:integer;

begin
zonk:=1;
 repeat
  clrscr;
  writeln('tutaj program...');
  readln;
 until zonk <> 1;
end.

do zonk'a wpisujesz 1,
petla repeat (powtarzaj) until (dop***243;ki) zonk <> 1 - logicznie, ze zawsze bedzie =1 wiec nie bedzie miec konca :)


Wszystkie czasy w strefie CET. Aktualna godzina: 20:28.

Powered by vBulletin® Version 3.9.0 LTS
Copyright ©2000 - 2026, vBulletin Solutions Inc.