Typy danych w Pascalu - pytanie


(Quentin) #1

Witam.

Według gazetki (KŚ Ekspert), to są najpopularniejsze typy danych dla zmiennych:

Byte , wartość od 0 do 255, zajmuje Bajtów 1

Word , wartość od 0 do 65535, zajmuje Bajtów 2

Integer , wartość od -2(do 31 potęgi) do 2(do 31 potęgi)-1, zajmuje Bajtów 4

Real , wartość od 1,8*10 (do 308 potęgi) do 1,8*10(do 308 potęgi), zajmuje Bajtów 8

String[X], ciąg maksymalnie X znaków, zajmuje Bajtów X

Kazali napisać taki o to kod programu:

21175042vr3.png

I tu moje pytania:

  1. Dlaczego do zmiennych x,y został przypisany typ danych Integer skoro żadna z liczb do nich przypisana nie przekracza nawet 255 więc równie dobrze mógłby zostać dobrany typ Byte (zaoszczędziło by to 3 Bajty pamięci) lub typ Word ?

  2. Wartości w typie Byte nie mogą przekraczać 255, odnosi się to do wszystkich (tzn. wszystkie wartości nie mogą przekraczać razem 255), czy do każdej kolejno wartości (tzn. jedna wartość nie może przekroczyć 255) ?

3.

Czyli w tym przypadku co powinienem napisać w nawiasach kwadratowych po String ?

Z góry bardzo dziękuję za pomoc.

Pozdrawiam,

Quentin.


(floyd) #2

1) Dlaczego?(bo tak zaprojektował autor). Mogłoby być tak jak ty proponujesz, ale przy zmianie wartości tych zmiennych należałoby ciągle pamiętać o zmianie deklarcji zmiennych. Dodatkowo w tym przypadku zmienne te określają współrzędne ekranu i dla nich jest wymagany taki typ.

Przy deklaracji zmiennych bierzemy pod uwagę, że są to właśnie zmienne i w jakich granicach będą się zmieniać w naszym programie oraz jakiego będą typu. Czasmi określony typ zmiennych zależy od wymagań samego kompilatora.

2)Każda wartość<=255

3) Zmienna napis ma 5 znaków czyli [5] lub więcej.


(Ryan) #3
  1. Bo prototyp GotoXY wymaga Integera. Wymaga Integera, bo potencjalnie może istnieć tryb ekranowy, który wymaga współrzędnych większych od 255.

  2. Poczytaj co to znaczy bajt i dlaczego zmienne mają określony rozmiar. Co najważniejsze - nie ucz się z KŚ, bo nawet w przytoczonych przez Ciebie opisach zmiennych są błędy.

  3. A ile znaków ma najdłuższy, przypisany do zmiennej napis ciąg? Ile znaków ma "Ekspert" a ile "Kurs Pascala"?


(Quentin) #4

Aha, dzięki czyli mam podać w nawiasie ilość znaków napis. Co do tego KŚ to rzeczywiście prawda :frowning:


(Ryan) #5

Możesz, nie musisz. Jeśli nie wiesz jaki będzie ciąg - lepiej mieć za duży bufor niż za mały.


(Quentin) #6

OK - jeszcze jedno:

" Integer , wartość od -2(do 31 potęgi) do 2(do 31 potęgi)-1, zajmuje Bajtów 4"

Dlaczego jest wartość od -2147483648 do -2147483648-1 - tak pisało w gazetce. Czyżby znowu błąd :x ?


(floyd) #7

2 do potęgi31=2147483648

znak potęgowania="^"

2^31=2147483648

-2^31=-2147483648


(Airborn) #8

mi się zdaje, że pytanie dotyczy tej minus jedynki :wink:

Quentin integer zapisywany jest na 32bitach, jeden bit używany na znak liczby, stąd 2^31, jedynka która jest odejmowana od zakresu używana jest dla zera


(Sawyer47) #9

Tu jest to w miarę łatwo wyjaśnione:

http://wazniak.mimuw.edu.pl/index.php?t ... acja_liczb

i

http://pl.wikipedia.org/wiki/Kod_uzupe% ... dw%C3%B3ch


(Ryan) #10

Za takie stwierdzenie można gola na uczelni zarobić. :wink: W systemie U2 nie można powiedzieć, że jeden bit odpowiada za znak liczby (w U1 można).