DZWONEK

Są tacy, którzy czytają te wiadomości przed tobą.
Subskrybuj, aby otrzymywać świeże artykuły.
E-mail
Imię
Nazwisko
Jak chcesz przeczytać Dzwon
Bez spamu

Opis i zastosowanie

Typ wyliczony jest zdefiniowany jako zestaw identyfikatorów, z punktu widzenia języka, pełniący tę samą rolę co zwykłe nazwane stałe, ale powiązany z tym typem. Klasyczny opis typu wyliczenia w Pascal jest następujący:

Rodzaj Cardsuit \u003d (trefl, karo, kier, pik);

To tutaj deklarujesz typ danych Kombinezonu (kolor karty), którego wartości mogą być dowolnymi z czterech wymienionych stałych. Wpisz zmienną  Carduit może przyjąć jedną z wartości trefl, karo, karo, pik, możliwe jest porównanie wartości typu wyliczenia dla równości lub nierówności, a także użycie ich w operatorach selekcji (w przypadku Pascala) jako wartości identyfikujących opcje.

Korzystanie z wyliczeń pozwala to zrobić kody źródłowe  programy bardziej czytelne, ponieważ pozwalają na zastąpienie „magicznych liczb”, które kodują niektóre wartości czytelnymi nazwami.

Na podstawie wyliczeń w niektórych językach można tworzyć typy zestawów. W takich przypadkach zestaw jest rozumiany (i opisany) jako zestaw nieuporządkowany unikalne wartości  typ wyliczenia.

Wymieniony typ może być wykorzystywany w deklaracjach zmiennych i formalnych parametrach funkcji (procedury, metody). Wyliczone wartości typów mogą być przypisane do odpowiednich zmiennych i przekazane przez parametry odpowiednich typów w funkcji. Ponadto zawsze jest obsługiwane porównanie wyliczonych wartości typów dla równości i nierówności. Niektóre języki obsługują również inne operacje porównania dla typów wyliczonych. Wynik porównania dwóch wyliczonych wartości w takich przypadkach jest z reguły określony przez sekwencję tych wartości w deklaracji typu - wartość występująca wcześniej w deklaracji typu jest uważana za „mniejszą” niż wartość, która występuje później. Czasami typ wyliczony lub pewien zakres wartości typu wyliczonego może być również użyty jako typ indeksu dla tablicy. W takim przypadku dla każdej wartości wybranego zakresu w tablicy jest jeden element, a faktyczna kolejność elementów odpowiada kolejności wartości w deklaracji typu.

Realizacja

Zazwyczaj podczas kompilacji wartości wyliczania są reprezentowane za pomocą liczb całkowitych. W zależności od konkretnego języka programowania, taka reprezentacja może być albo całkowicie ukryta przed programistą, albo dostępna dla niego za pomocą różnych „manewrów ronda” (na przykład, wymuszając konwersję wartości typu wyliczenia na wartość typu „liczba całkowita”), lub nawet kontrolowana przez programistę ( w takich przypadkach programista może wyraźnie wskazać, które liczby będą kodować wszystkie lub niektóre wartości typu wyliczenia). Wszystkie opcje mają swoje pozytywne i negatywne strony. Z jednej strony możliwość użycia wartości liczbowych stałych, które składają się na wyliczenie typu, szczególnie jeśli jest nadużywana, sprawia, że \u200b\u200bużycie tych typów jest bez znaczenia i stwarza ryzyko błędów (przy użyciu wartości liczbowych, dla których typ nie ma odpowiednich stałych). Z drugiej strony, wyraźne zarządzanie wartością daje pewne dodatkowe funkcje. Na przykład pozwala na użycie typów wyliczenia podczas organizowania interfejsu z modułami napisanymi w innych językach, jeśli używają lub zwracają wartości zakodowane liczbami całkowitymi z pewnego określonego zestawu.

Inną możliwością, jaką wyliczają typy na poziomie implementacji języka, jest oszczędzanie pamięci. Przy małym typie wyliczenia wystarczy kilka bitów, aby zapisać wartość tego typu (powyższy typ Cardsuit wymaga tylko dwóch bitów na wartość, podczas gdy standardowa liczba całkowita w większości używanych architektur zajmuje 32 bity - 16 razy więcej), a kompilator może użyć ten fakt uszczelnia przechowywanie danych w pamięci. Może to być szczególnie ważne, jeśli kilka wartości typów wyliczenia jest przechowywanych w jednym rekordzie - kompresja rekordów podczas przetwarzania dużych ich ilości może zwolnić dużo pamięci. To prawda, że \u200b\u200bnależy zauważyć, że kompilatory zwykle nie zdają sobie sprawy z tej funkcji, przynajmniej ostatnio, gdy pamięć komputera stała się znacznie tańsza.

Krytyka

Typ wyliczenia jest tradycyjny dla rozwiniętych języków programowania, jest dość szeroko stosowany i często jest brany za pewnik. Jednak ten typ nie jest również pozbawiony krytyki ze strony teoretyków i praktyków programowania. Podczas opracowywania języka programowania Oberon wyliczone typy zostały uwzględnione na liście funkcji, które zostały usunięte z tego języka. Nicklaus Wirth, programista języka, wskazał następujące powody:

Z drugiej strony, na przykład w Javie, która początkowo nie zawierała typu wyliczanego, ten typ został następnie wprowadzony ze względu nie tylko na wygodę, ale także na niezawodność: problem użycia nazwanych stałych zamiast wyliczeń polega na tym, że kompilator nie ma kontroli nad wyjątkowością wartości stałe oraz możliwość losowego przypisania do zmiennych wartości, które nie odpowiadają żadnej z tych stałych.

Opis przelewów w różnych językach

Ada

Enum carduit (KLUBY, DIAMENTY, SERCE, ŁYŻKI);

Dynamiczne języki słabego pisania o składni podobnej do C (np. Perl lub JavaScript) z reguły nie zawierają wyliczeń.

C ++

C #

Enum Cardsuit (trefl, karo, pik, kier);

Jawa

Enum Cardsuit (trefl, karo, pik, kier)

Haskell

W niektórych językach programowania (na przykład w języku Haskell) za pomocą typów algebraicznych można emulować wyliczenia. Na przykład typ logiczny jest kodowany w ten sposób, zawierający dwa identyfikatory reprezentujące wartości prawdy:

Data Bool \u003d False | Prawdziwe

Notatki


Fundacja Wikimedia. 2010 r.

Wikipedia

Z przyczyn technicznych Bool zostaje przekierowany tutaj. Możesz przeczytać o Bool tutaj: stdbool.h. Logiczny, boolowski (angielski typ logiczny lub logiczny typ danych) to prymitywny typ danych w informatyce, który może mieć dwie możliwe ... Wikipedia

W teorii programowania każdy typ, którego wartości są wartościami niektórych innych typów, które są „zawinięte” przez konstruktorów typu algebraicznego. Innymi słowy, algebraiczny typ danych ma zestaw konstruktorów typów, z których każdy ... ... Wikipedia

Liczba całkowita, typ danych całkowitych (ang. Integer), w informatyce jeden z najprostszych i najczęstszych typów danych w językach programowania. Służy do reprezentowania liczb całkowitych. Wiele liczb tego typu to ... ... Wikipedia

Prymitywny (wbudowany, podstawowy) typ to typ danych dostarczany przez język programowania jako podstawowa wbudowana jednostka języka. W zależności od języka i jego implementacji zestaw tych typów może się znacznie różnić. Jest ustalone ... ... Wikipedia

Istnieją inne znaczenia tego terminu, patrz Zestaw (znaczenia). Mnogość rodzaju i struktury danych w informatyce jest realizacją matematycznego obiektu wielości. Wiele typów danych pozwala przechowywać ograniczoną liczbę wartości ... ... Wikipedia

Niektóre języki programowania zapewniają specjalny typ danych dla liczb zespolonych. Obecność wbudowanego typu upraszcza przechowywanie złożonych ilości i obliczeń na nich. Spis treści 1 Arytmetyka nad kompleksem 2 Obsługa w językach ... Wikipedia

Aby poprawić ten artykuł na temat technologia informacyjna  pożądane?: Znajdź i uporządkuj w formie przypisów linki do wiarygodnych źródeł potwierdzających, co zostało napisane. Umieszczając przypisy, dokładniej ... Wikipedia

Zmiennenazywane ilościami, których wartości może się różnićpodczas wykonywania programu. Każda zmienna jest zdefiniowana przez swoją unikalną nazwę, zbudowaną zgodnie z zasadami określonymi na początku rozdziału. Maksymalna możliwa długość nazwy zależy od implementacji Pascala; teoretycznie możesz podać nazwy zmiennych o długości do 63 znaków, co jest mało istotne - zwykle nazwy nie przekraczają 5-10 znaków.

Ponieważ wszelkie dane w pamięci komputera są przechowywane w postaci liczbowej i w systemie liczb binarnych, oprócz nazwy należy przypisać zmienną i typdefiniowanie zakres wartościpobrane przez zmienną oraz metoda jego przetworzeniasamochodem. Wyjaśnijmy, co zostało powiedziane przez przykład. Jak można zobaczyć w dodatku 1, łacińska wielka litera „A” ma kod dziesiętny 65 lub 01000001 w postaci binarnej. Brak dalszych informacji na temat rodzajkomputer nie byłby w stanie zdecydować, czym dokładnie są te dane - liczba 65, kod znaku „A” lub coś innego. W dowolnym języku programowania, w tym Pascal, istnieje standardowy zestaw typów, do których można przypisać tę lub inną kolekcję komórek pamięci. Informacje o typach danych Pascala są wygodnie umieszczone w tabelach. Rzędy tego stołu zostaną posortowane według pierwszeństwo typu, od „najmniejszej”, wymagającej reprezentacji najmniejszej liczby bajtów, a zatem reprezentującej najmniejszy zakres możliwych wartości, do „najstarszej”, reprezentującej największy zakres wartości. Tabela nie pokazuje wszystkich możliwych, ale tylko główne typy danych Pascal.

Słowo kluczowe Pascal

Wpisz nazwę i opis

Ilość pamięci w bajtach

Zakres możliwych wartości

Boolean: przechowuje jedną zmienną logiczną

Znak: przechowuje kod jednego znaku z zestawu kodów ASCII

od 0 do 255 włącznie (2 8 \u003d 256)

Liczba całkowita

Liczba całkowita bez znaku

± 2 16 - zakres jest dwa razy większy, ponieważ szesnasty bit nie jest zajęty znakiem liczby

Długa liczba całkowita: reprezentuje duże wartości całkowite

Liczba rzeczywista z dokładnością odwzorowania do 11-12 znaków w części ułamkowej

~ 2.9*10 -39 - 1.7*10 38

Liczba rzeczywista z dokładnością do 15-16 znaków w części ułamkowej

~ 5*10 -324 – 1.7*10 308

Sekwencja znaków typu Chardlin od 1 do 255

2-256 (dane linii + 1 bajt do przechowywania jego długości)

Dowolne wiersze tekstu zawierające znaki do wydrukowania

Teoretycznie, aby zapisać zmienną typu Boolean, wystarczy 1 bit, ale minimalna adresowalna jednostka pamięci to 1 bajt (patrz Załącznik 1). W tym samym dodatku określ, w jaki sposób ilość pamięci w bajtach przydzielonych zmiennej ma wpływ na prezentowany jej zakres wartości.

Typy całkowite i typy są nazywane zbiorczo porządkowy, podkreślając, że typy te mają skończony zestaw wartości, które można uporządkować lub wymienić. Przypomnij sobie, że rzeczywiste wartości są przechowywane w pamięci komputera inaczej niż liczby całkowite - mianowicie jako połączenie mantysy i porządku.

Oczywiście wybór właściwych typów danych spoczywa całkowicie na programatorze. Na przykład, jeśli jakiś licznik w twoim programie może przyjmować wartości całkowite od 1 do 100000, błędem byłoby opisanie go jako zmiennej typu Integer - w końcu 2 15 \u003d 32768 i kiedy licznik osiągnie tę wartość, rozładować sięjego wartość, która staje się równa -32768. W tym przypadku uzasadnione byłoby opisanie licznika jako zmiennej typu Longint.

Zmienne są opisane w programie przez operatora następującej postaci:

var List1: Type1;

List2: Type2;

ListN: TypeN;

Tutaj lista- zestaw nazw zmiennych oddzielonych przecinkami (lub jedną zmienną), oraz typ- dowolny z typów danych omówionych powyżej. Na przykład konstrukcja

opisuje 2 rzeczywiste zmienne o nazwach t i r, a także zmienną całkowitą o nazwie i. Słowo kluczowevar można powielić, ale zwykle nie ma takiej potrzeby. Skrót var pochodzi od angielskiego słowa „Variable” (zmienna).

Lekcja wyjaśni algorytm tworzenia typów danych użytkownika w Pascal (typ). Przykłady zostaną przeanalizowane.

Typy danych Pascala są podzielone na proste i złożone.

Proste typy obejmują  standardowe, wyliczone i ograniczone.

Do złożonych typów  - tablice, zestawy, rekordy, pliki. Elementy typów złożonych mogą być typami prostymi i złożonymi. Dowiemy się więcej o złożonych typach danych później.

Jednym z najczęstszych typów jest typ standardowy porządkowy.
Zwykły typ standardowy  oznacza skończony liniowy zestaw wartości. Jest to zwykle określane jako typy całkowite, bajty, znaki i logiczne.

Nowe (niestandardowe) typy danych  potrzebne przede wszystkim dla przejrzystości i wygody:

Przykład:  Określono macierz 10 x 50. Wykonaj opis macierzy, używając niestandardowego typu danych

procedura p (a: tablica liczb całkowitych);

Ale powinien utworzyć typ danych  i napisz to w ten sposób:

1 2   typ wektor \u003d tablica [1 .. 10] liczby całkowitej; procedura var p (a: wektor);

typ wektora \u003d tablica liczb całkowitych; procedura var p (a: wektor);

Przykłady opisywania tablic przy użyciu nowych typów

typ wektora \u003d tablica liczb całkowitych; matritsa \u003d tablica wektora;

  • 1   typ matritsa \u003d tablica [1 .. 8] tablicy [1 .. 10] liczby całkowitej;

    typ matritsa \u003d tablica tablicy liczb całkowitych;

  • 1   typ matritsa \u003d tablica [1 .. 8, 1 .. 10] liczby całkowitej;

    typ matritsa \u003d tablica liczb całkowitych;

  • W poniższym przykładzie zmienne do  i re  są opisane identycznie:

    1 2 3 4 5 6 typ wektor \u003d tablica [1 .. 10] liczby całkowitej; matritsa \u003d tablica [1 .. 8] wektora; var a, b: wektor; c: matritsa; d: tablica [1 .. 8] wektora;

    typ wektora \u003d tablica liczb całkowitych; matritsa \u003d tablica wektora; var a, b: wektor; c: matritsa; d: tablica wektora;

    Typ 1: Podano tablice a, b i c. Znajdź średnią arytmetyczną minimalnych elementów tablicy (użyj tworzenia tablicy i).
      Opisując procedury, użyj typy niestandardowe  dane

    Typ wyliczony i typ przedziału w Pascal

    Typ wyliczony

    W programie można używać zmiennych typu, które nie pasują do żadnego ze standardowych typów.

    Tak więc typ można określić, wyliczając wartości, gdy są deklarowane; zmienna tego typu  może przyjąć dowolną z tych wartości.

    Te wartości nie mogą być łańcuchami, nie można ich wydrukować ani wprowadzić do komputera  za pomocą operatorów odczytu i zapisu.

    Rozważ przykład tworzenia wyliczonego typu w Pascal:

      wpisz pt \u003d (słowo 1, słowo 2, ... słowo N); var w: pt;

    wpisz pt \u003d (słowo 1, słowo 2, ... słowo N); var w: pt;

  • pt - identyfikator typu (dowolny),
  • word1, word2 ... - określone wartości, które może przyjąć zmienna w należąca do typu pt
  • wartości tego typu są uważane za uporządkowane, tj. opis typu jednocześnie wprowadza zamawianie słowo 1.
  • Rodzaj interwału

    Rodzaj interwału  definiuje określony podzbiór wartości, które może przyjąć dana zmienna. Utworzony przez ustawienie najmniejszej i największej wartości typ porządkowy . Jako stałe (wartości minimalne i maksymalne), wartości dowolnych proste typy  z wyjątkiem prawdziwych typów.

    Rozważ przykład deklaracji typu interwałowego:

      a: min .. max;
  • za  - zmienna przedziałowa
  • min  - dolna linia
  • max  - górna granica podzbioru
  • granice zasięgu są oddzielone dwoma punktami
  • granica minzawsze powinno być mniej max
  • stałe mini maxmusi należeć do tego samego typu. Określają podstawowy typ zmiennej. za.
  • Typy udostępnione i wyliczone

    Zmienna typu interwału może być ustawiona za pomocą podstawy na typ wyliczony z podstawy. Rozważ przykład:

    Przykład:  Jeśli zmienna b  może przyjąć jedną z wartości czerwony, żółty, zielony, następnie tę zmienną można opisać następująco: b: czerwony..zielony; typ podstawowy dla b  jest typem kolor:

    typ koloru \u003d (czerwony, żółty, zielony, niebieski); var b: czerwony .. zielony; początek b: \u003d czerwony; writeln (b); b: \u003d żółty; writeln (b); b: \u003d zielony; writeln (b); koniec.

    typ koloru \u003d (czerwony, żółty, zielony, niebieski); var b: czerwony..zielony; początek b: \u003d czerwony; writeln (b); b: \u003d żółty; writeln (b); b: \u003d zielony; writeln (b); koniec.

    W ten przykład  typ koloru - jest podstawą. Zmienna b typu interwału jest definiowana przy użyciu podstawowego typu wyliczanego.

    Przykład:  Wiadomo, ile dni w każdym miesiącu roku. Ile dni w lecie?
    31,28,31,30,31,30,31,31,30,31,30,31

    Jedna z opcji rozwiązania tego problemu wygląda następująco:

      Pokaż rozwiązanie:

      1 2 3 4 5 6 7 8   const dni: tablica [1 .. 12] bajtu \u003d (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31); var s, i: liczba całkowita; początek s: \u003d 0; dla i: \u003d 6 do 8 do s: \u003d s + dni [i]; (miesiące letnie - 6, 7, 8)  koniec zapisu (ów).

      const dni: tablica bajtów \u003d (31,28,31,30,31,30,31,31,30,31,30,31); var s, i: liczba całkowita; początek s: \u003d 0; dla i: \u003d 6 do 8 do s: \u003d s + dni [i]; (miesiące letnie - 6, 7, 8) koniec zapisu (ów).

      Kod ta decyzja  nie ma najlepszej widoczności, ponadto musisz samodzielnie obliczyć liczbę miesięcy początku i końca lata (6 i 8).
        Wygoda i widoczność takich programów można poprawić w następujący sposób:

      Pokaż rozwiązanie:

      1 2 3 4 5 6 7 8 9   TYP mes \u003d (styczeń, luty, marzec, kwiecień, maj, czerwiec, lipiec, sierpień, wrzesień, październik, listopad, grudzień); CONST dni: tablica [styczeń .. grudzień] Byte \u003d (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31); VAR s: Integer; i: mes; (zmienna licznika pętli i jest ustawiona na mes, a nie Integer)  POCZĄTEK s: \u003d 0; dla i: \u003d od czerwca do sierpnia do s: \u003d s + dni [i]; WriteLn (s) END.

      TYP mes \u003d (styczeń, luty, marzec, kwiecień, maj, czerwiec, lipiec, sierpień, wrzesień, październik, listopad, grudzień); CONST dni: tablica bajtów \u003d (31,28,31,30,31,30,31,31,30,31,30,31); VAR s: Integer; i: mes; (zmienna licznika pętli i jest ustawiona na mes, a nie Integer) BEGIN s: \u003d 0; dla i: \u003d od czerwca do sierpnia do s: \u003d s + dni [i]; WriteLn (s) END.

    Typ 2:  Określ według nazwy dnia tygodnia, czy jest to dzień wolny od pracy, czy dzień roboczy.

  • Zdefiniuj typ wyliczeniowy z wartościami dni tygodnia ( pon, wt, poślubić, czw, pt, sob, słońce).
  • W programie przypisz wartość do zmiennej (na podstawie wartości typu, na przykład pon).
  • Sprawdź zmienną: jeśli wartością jest sobota lub niedziela - przekaż komunikat "Wynik!"Inaczej "Pracujemy!".
  • Typ 3:  W zależności od miesiąca roku wyślij wiadomość "ozięble"  - jeśli miesiąc zimowy, oraz "ciepło"  - jeśli lato.

  • Zdefiniuj typ wyliczony z nazwami miesięcy roku.
  • Zadeklaruj zmienną tego typu.
  • W programie przypisz wartość zmiennej (na podstawie wartości typu).
  • Sprawdź zmienną: jeśli wartość odnosi się do miesiąca zimowego, podaj komunikat "ozięble"  Inaczej - "ciepło".
  • Wdrażaj na kilka sposobów.
  • Writeln (pribitie) end.

    var otpravlenie, pribitie: byte; rozpocząć otpravlenie: \u003d 22; pribitie: \u003d otpravlenie + 10; writeln (pribitie) end.

    zamiast odpowiedzi „8” program wydrukuje odpowiedź „32”.
      Wprowadzenie typu ograniczonego zakresu pozwala uniknąć błędnego wyniku, ale kompilator nadal zgłasza błąd:

    1 2 3 4 5 6   var otpravlenie, pribitie: 0 .. 24; rozpocząć otpravlenie: \u003d 22; pribitie: \u003d otpravlenie + 10; writeln (pribitiedeva); var a: znak; rozpocznij a: \u003d lev; Jeśli<= strelets then writeln ("огонь" ) ; if (a>\u003d vesi) i (a<= bliznetsi) then writeln ("воздух" ) ; if (a>\u003d rak) i (a<= ribi) then writeln ("вода" ) ; if (a>\u003d kozerog) i (a<= deva) then writeln ("земля" ) ; end .

    typ znak \u003d (piekarnik, lew, streliki, vesi, vodoley, bliznetsi, rak, skorpion, ribi, kozerog, telets, deva); var a: znak; rozpocznij a: \u003d lev; Jeśli<=strelets then writeln("огонь"); if (a>\u003d vesi) i (a<=bliznetsi) then writeln ("воздух"); if (a>\u003d rak) i (a<=ribi) then writeln ("вода"); if (a>\u003d kozerog) i (a<=deva) then writeln ("земля"); end.

    Typ 5:  W zależności od nazwy kwiatu należy podać, której pory roku dotyczy:

  • Wiosna: przebiśnieg, irys, żonkile
  • Lato: rumianek, mniszek lekarski, mak
  • Jesień: aster, chryzantema, floks
  • Opisując zmienną, musisz określić jej typ. Typ zmiennej opisuje zestaw wartości, które może przyjąć, i działania, które można na nim wykonać. Opis typu definiuje identyfikator, który określa typ.

    Proste typy są podzielone na standardowe (porządkowe) i wyliczone (ograniczone).

    Typy standardowe

    Turbo Pascal ma cztery wbudowane standardowe typy: liczba całkowita (liczba całkowita), rzeczywista (rzeczywista), boolean (logiczna) i char (znak).

    Typ całkowity

    Turbo Pascal ma pięć wbudowanych typów liczb całkowitych: shortint (short integer), integer (integer), longint (long integer), byte (długość bajtu) i word (długość słowa). Każdy typ oznacza określony podzbiór liczb całkowitych, jak pokazano w poniższej tabeli.

    Wbudowane typy liczb całkowitych.

    Zasięg

    Format

    8 bitów ze znakiem

    16 bitów ze znakiem

    2147483648 +2147483647

    32 bity ze znakiem

    8 niepodpisanych bitów

    16 niepodpisanych bitów

    Operacje arytmetyczne na operandach typu całkowitego są przeprowadzane zgodnie z następującymi zasadami:

    1. Typ stałej całkowitej jest wbudowanym typem całkowitym o najmniejszym zakresie, w tym wartość tej stałej całkowitej.
    2. W przypadku operacji binarnej (operacji wykorzystującej dwa operandy) oba operandy są konwertowane na typ wspólny przed wykonaniem na nich akcji. Typowym typem jest osadzona liczba całkowita z najmniejszym zakresem obejmującym wszystkie możliwe wartości obu typów. Na przykład typowym typem liczby całkowitej i długości bajtu liczb całkowitych jest liczba całkowita, a typowym typem liczby całkowitej i długości słowa liczby całkowitej jest długa liczba całkowita. Akcja jest wykonywana zgodnie z dokładnością typu ogólnego, a typem wyniku jest typ ogólny.
    3. Wyrażenie po prawej stronie w operatorze przypisania jest obliczane niezależnie od wielkości zmiennej po lewej stronie.

    Operacje wykonywane na liczbach całkowitych:

    „+” - dodanie

    „-” - odejmowanie

    „*” - mnożenie

    SQR - kwadrat

    DIV - po podziale odrzuca część ułamkową

    MOD - zdobycie całej reszty po podziale

    ABS - moduł liczbowy

    RANDOM (X) - uzyskanie losowej liczby od 0 do X

    Odp .: \u003d 100; b: \u003d 60; a wynik DIV b - 1 i wynik MOD b - 40

    Zmienne typu liczb całkowitych są opisane w następujący sposób:

    var lista zmiennych: typ;

    Na przykład: var a, p, n: integer;

    Prawdziwy typ

    Typ rzeczywisty jest podzbiorem liczb rzeczywistych, które mogą być reprezentowane w formacie zmiennoprzecinkowym ze stałą liczbą cyfr. Zapis wartości w formacie zmiennoprzecinkowym zwykle obejmuje trzy wartości - m, b i e - takie, że m * b e, gdzie b wynosi zawsze 10, a mi e są wartościami całkowitymi z zakresu typu rzeczywistego. Te wartości m i e dodatkowo określają zasięg i dokładność rodzaju materiału.

    Istnieje pięć rodzajów rodzajów materiałów: real, single, duble, exnende, comp. Typy rzeczywiste różnią się zakresem i dokładnością związanych z nimi wartości.

    Zakres i cyfry dziesiętne dla typów rzeczywistych

    Zasięg

    Ryciny

    2,9 x 10-39 do 1,7 x 10 38

    1,5 x 10–45 do 3,4 x 10 38

    5,0x10E-324 do 1,7x10E 308

    3,4x10E-493 do 1,1x10E 403

    2E 63 do 2E 63

    Operacje wykonywane na liczbach rzeczywistych:

    • Wszystkie operacje dotyczą liczb całkowitych.
    • SQRT (x) jest pierwiastkiem kwadratowym z x.
    • SIN (X), COS (X), ARCTAN (X).
    • LN (X) jest logarytmem naturalnym.
    • EXP (X) - wykładnik X (e x).
    • EXP (X * LN (A)) - potęgowanie (A x).
    • Funkcje konwersji typu:
      • TRUNC (X) - odrzuca część ułamkową;
      • Zaokrąglanie ZAOKR (X).
    • Niektóre zasady operacji arytmetycznych:
      • Jeśli w operacji arytmetycznej napotkane zostaną liczby takie jak liczba rzeczywista i liczba całkowita, wynik będzie typu rzeczywisty.
      • Wszystkie składniki wyrażenia są zapisane w jednym wierszu.
      • Używane są tylko nawiasy.
      • Nie można wstawić dwóch znaków arytmetycznych z rzędu.

    Zmienne typu rzeczywistego opisano następująco:

       var lista zmiennych: typ;

    Na przykład:

       var d, g, k: real;

    Rodzaj znaków (char)

    Typ char to dowolny znak zawarty w apostrofach. Aby przedstawić apostrof jako zmienną symboliczną, musisz zawrzeć go w apostrofie: ’’ ’’ ’.

    Każdy znak ma swój kod i numer. Numery seryjne cyfr 0,1..9 są sortowane w porządku rosnącym. Numery sekwencji liter są również sortowane w kolejności rosnącej, ale niekoniecznie muszą następować po sobie.

    Znaki porównania dotyczą danych znakowych:

    > , < , >=, <=, <> .

    Na przykład: „A”< ‘W’

    Funkcje mające zastosowanie do zmiennych znakowych:

    1. ORD (X) - określa numer seryjny znaku X. ord („a”) \u003d 97;
    2. CHR (X) - identyfikuje znak po numerze. chr (97) \u003d ’a’;
    3. PRED (X) - wydaje znak przed X. pred („B”) \u003d „A”;
    4. SUCC (X) - zwraca znak następujący po znaku X. succ („A”) \u003d „B”;

    Typ wyliczony

    Wyliczony typ danych ma taką nazwę, ponieważ jest określony jako wyliczenie stałych w ściśle określonej kolejności i ściśle określonej ilości. Typ wyliczony składa się z listy stałych. Zmienne tego typu mogą przyjmować wartość dowolnej z tych stałych. Opis wyliczonego typu to:

       Rodzaj<имя типа>\u003d (lista stałych); Var<имя переменной>:<имя типа>;

    gdzie<список констант>  - jest to specjalny rodzaj stałych, określonych przecinkiem i posiadających własny numer seryjny, zaczynając od 0.

    Na przykład:

       wpisz kierunek \u003d (północ, południe, zachód, wschód); miesiąc \u003d (czerwiec, lipiec, sierpień, styczeń); pojemność \u003d (wiadro, beczka, kanister, zbiornik); var rotacja: kierunek; wyjazd: miesiąc; objętość: pojemność; var turn: (północ, południe, zachód, wschód); Wyjazd: (czerwiec, lipiec, sierpień, styczeń); objętość: (wiadro, beczka, kanister, zbiornik);

    Możesz wykonać następujące operatory przypisania:

    Skręć: \u003d południe; Wyjazd: \u003d sierpień; objętość: \u003d zbiornik;

    ale nie możesz wykonywać mieszanych zadań:

    Wylot: \u003d południe; Tom: \u003d sierpień;

    Następujące funkcje mają zastosowanie do wyliczanych zmiennych typu:

    1. ORD - numer seryjny

    2. PRED - poprzedni element

    3. SUCC - kolejny element.

       PRED (beczka) \u003d wiadro; SUCC (południe) \u003d zachód; ORD (lipiec) \u003d 1;

    Wyliczone zmienne typu można porównać, ponieważ są uporządkowane i ponumerowane. Więc wyrażenia: północ< юг, июнь < январь имеют значения TRUE, а юг>zachód i czołg<бочка значение FАLSE.

    Typ ograniczony

    Jeśli zmienna nie akceptuje wszystkich wartości swojego typu, ale tylko w pewnym zakresie, wówczas można ją uznać za zmienną typu ograniczonego. Każdy ograniczony typ jest określony przez nałożenie ograniczenia na typy podstawowe.

    Jest to opisane następująco:

       Rodzaj<имя типа>\u003d stała1 .. stała2

    Należy przestrzegać następujących zasad:

    1. Obie stałe stałe muszą być tego samego typu.
    2. Jako typ podstawowy możesz użyć dowolnego typu prostego oprócz prawdziwego.
    3. Wartość początkowa podczas definiowania typu ograniczonego nie może być większa niż wartość końcowa.
    indeks typu \u003d 0,63; litera \u003d ’a’ .. ’z’; var char1, char2: letter; a, g: indeks;

    Możesz to natychmiast opisać w sekcji opisów zmiennych:

       var a, g: 0,63; char1, char2: ’a’ .. ’z’.

    Który zestaw wartości jest ograniczoną listą identyfikatorów.

    Encyklopedyczny YouTube

    • 1 / 5

      Typ wyliczony jest zdefiniowany jako zestaw identyfikatorów, z punktu widzenia języka, pełniący tę samą rolę co zwykłe nazwane stałe, ale powiązany z tym typem. Klasyczny opis typu wyliczenia w Pascal jest następujący:

      typ Cardsuit \u003d (trefl, karo, kier, pik);

      To tutaj deklarujesz typ danych Kombinezonu (kolor karty), którego wartości mogą być dowolnymi z czterech wymienionych stałych. Zmienna typu Cardsuit może przyjmować jedną z wartości trefl, karo, kier, pik. Dozwolone jest porównanie wartości typu wyliczenia dla równości lub nierówności, a także użycie ich w operatorach selekcji (w przypadku Pascala) jako wartości identyfikujących opcje.

      Korzystanie z wyliczeń pozwala uczynić kody źródłowe programów bardziej czytelnymi, ponieważ pozwalają one zastąpić „magiczne liczby” kodujące niektóre wartości czytelnymi nazwami.

      Na podstawie wyliczeń w niektórych językach można tworzyć typy zestawów. W takich przypadkach zestaw jest rozumiany (i opisany) jako nieuporządkowany zestaw unikalnych wartości typu wyliczenia.

      Wymieniony typ może być wykorzystywany w deklaracjach zmiennych i formalnych parametrach funkcji (procedury, metody). Wyliczone wartości typów mogą być przypisane do odpowiednich zmiennych i przekazane przez parametry odpowiednich typów w funkcji. Ponadto zawsze jest obsługiwane porównanie wyliczonych wartości typów dla równości i nierówności. Niektóre języki obsługują również inne operacje porównania dla typów wyliczonych. Wynik porównania dwóch wyliczonych wartości w takich przypadkach jest z reguły określony przez sekwencję tych wartości w deklaracji typu - wartość występująca wcześniej w deklaracji typu jest uważana za „mniejszą” niż wartość, która występuje później. Czasami typ wyliczony lub pewien zakres wartości typu wyliczonego może być również użyty jako typ indeksu dla tablicy. W takim przypadku dla każdej wartości wybranego zakresu w tablicy jest jeden element, a faktyczna kolejność elementów odpowiada kolejności wartości w deklaracji typu.

      Realizacja

      Zazwyczaj podczas kompilacji wartości wyliczania są reprezentowane za pomocą liczb całkowitych. W zależności od konkretnego języka programowania, taka reprezentacja może być albo całkowicie ukryta przed programistą, albo dostępna dla niego za pomocą pewnego rodzaju „manewrów ronda” (na przykład, wymuszając konwersję wartości typu wyliczenia na wartość typu „liczba całkowita”), lub nawet kontrolowana przez programistę ( w takich przypadkach programista ma możliwość wyraźnego wskazania, które liczby będą kodować wszystkie lub niektóre wartości typu wyliczenia). Wszystkie opcje mają swoje pozytywne i negatywne strony. Z jednej strony możliwość użycia wartości liczbowych stałych, które składają się na wyliczenie typu, szczególnie jeśli jest nadużywana, sprawia, że \u200b\u200bużycie tych typów jest bez znaczenia i stwarza ryzyko błędów (przy użyciu wartości liczbowych, dla których typ nie ma odpowiednich stałych). Z drugiej strony, wyraźne zarządzanie wartością zapewnia pewne dodatkowe możliwości. Na przykład pozwala używać typów wyliczania podczas organizowania interfejsu z modułami napisanymi w innych językach, jeśli używają lub zwracają wartości zakodowane w liczbach całkowitych z określonego predefiniowanego zestawu.

      Inną możliwością, jaką wyliczają typy na poziomie implementacji języka, jest oszczędzanie pamięci. Przy małym typie wyliczenia wystarczy kilka bitów, aby zapisać wartość tego typu (powyższy typ Cardsuit wymaga tylko dwóch bitów na wartość, podczas gdy standardowa liczba całkowita w większości używanych architektur zajmuje 32 bity - 16 razy więcej), a kompilator może użyć ten fakt uszczelnia przechowywanie danych w pamięci. Może to być szczególnie ważne, jeśli kilka wartości typów wyliczenia jest przechowywanych w jednym rekordzie - kompresja rekordów podczas przetwarzania dużych ich ilości może zwolnić dużo pamięci. To prawda, że \u200b\u200bnależy zauważyć, że kompilatory zwykle nie zdają sobie sprawy z tej funkcji, przynajmniej ostatnio, gdy pamięć komputera stała się znacznie tańsza.

      Krytyka

      Typ wyliczenia jest tradycyjny dla rozwiniętych języków programowania, jest dość szeroko stosowany i często jest brany za pewnik. Jednak ten typ nie jest również pozbawiony krytyki ze strony teoretyków i praktyków programowania. Podczas opracowywania języka programowania Oberon wyliczone typy zostały uwzględnione na liście funkcji, które zostały usunięte z tego języka. Nicklaus Wirth, programista języka, wskazał następujące powody:

      Z drugiej strony, na przykład w Javie, która początkowo nie zawierała typu wyliczanego, ten typ został następnie wprowadzony ze względu nie tylko na wygodę, ale także na niezawodność: problem użycia nazwanych stałych zamiast wyliczeń polega na tym, że kompilator nie ma kontroli nad wyjątkowością wartości stałe oraz możliwość losowego przypisania do zmiennych wartości, które nie odpowiadają żadnej z tych stałych.

      Opis przelewów w różnych językach

      Enum carduit (KLUBY, DIAMENTY, SERCE, ŁYŻKI);

      Dynamiczne języki słabego pisania o składni podobnej do C (takie jak perl lub JavaScript) z reguły nie zawierają wyliczeń.

    DZWONEK

    Są tacy, którzy czytają te wiadomości przed tobą.
    Subskrybuj, aby otrzymywać świeże artykuły.
    E-mail
    Imię
    Nazwisko
    Jak chcesz przeczytać Dzwon
    Bez spamu