Het bytegegevenstype in pascal. Soorten variabelen in Pascal: beschrijving, eigenschappen, voorbeelden

Het concept van data is een van de sleutelbegrippen in programmeren en in de informatica in het algemeen. Grofweg zijn gegevens in de informatica informatie die zich gedurende een bepaalde periode in een staat van opslag, verwerking of verzending bevindt. In Turing-machines heeft informatie een type, en dit hangt op zijn beurt af van het type informatie.

Gegevenstypen in Pascal definiëren de mogelijke waarden van variabelen, constanten, uitdrukkingen en functies. Ze zijn ingebouwd en op maat gemaakt. Ingebouwde typen zijn aanvankelijk aanwezig in de programmeertaal en aangepaste typen worden door de programmeur gemaakt.

Afhankelijk van de presentatie- en verwerkingsmethode zijn de gegevenstypen:

  • eenvoudig
  • gestructureerd
  • aanwijzingen
  • voorwerpen
  • procedures

In dit artikel worden alleen de eenvoudigste gegevenstypen besproken, omdat het in de beginfase van de training gemakkelijker voor uw programma zal zijn om bijvoorbeeld bestanden en records te missen dan zonder integer- of stringvariabelen.

Type geheel getal

Dit omvat verschillende typen gehele getallen, die verschillen in het bereik van waarden, het aantal bytes dat is toegewezen om ze op te slaan en het woord waarmee het type wordt gedeclareerd.

Type Bereik Grootte in bytes
kortsluiting -128…127 1
geheel getal -32 768…32 767 2
lang -2 147 483 648…2 147 483 647 4
byte 0…255 1
woord 0…65 535 2

U kunt een integer-variabele declareren in de Var-sectie, bijvoorbeeld:

Alle rekenkundige en logische bewerkingen kunnen worden uitgevoerd op variabelen in deze categorie, met uitzondering van deling (/), waarvoor een reëel type vereist is. Sommige standaardfuncties en -procedures kunnen ook van toepassing zijn.

Echt soort

In Pascal zijn er de volgende echte gegevenstypen:

Type Bereik Geheugen, byte Aantal cijfers
Echt 2.9e-39 … 1.7e38 6 11-12
Enkel 1.5e-45 … 3.4e38 4 7-8
Dubbele 5.0e-324…1.7e308 8 15-16
Verlengd 3.4e-4932 … 1.1e493 10 19-20
Comp -9.2e63…(9.2e63)-1 8 19-20

Er kunnen meer bewerkingen en functies op worden uitgevoerd dan op gehele getallen. Deze functies retourneren bijvoorbeeld een reëel resultaat:

zonde(x) – sinus;

cos(x) – cosinus;

arctan(x) – arctangens;

ln(x) – natuurlijke logaritme;

sqrt(x) – vierkantswortel;

exp(x) – exponent;

Booleaans type

Een variabele van een Booleaans gegevenstype kan slechts twee waarden aannemen: waar en onwaar. Hier komt waar overeen met de waarde 1, en onwaar met nul. U kunt een Booleaanse variabele als volgt declareren:

Vergelijking en logische bewerkingen kunnen worden uitgevoerd op gegevens van dit type: not, en, of, xor.

Karaktertype

Een tekengegevenstype is een verzameling tekens die op een bepaalde computer worden gebruikt. Een variabele van dit type neemt de waarde van een van deze tekens aan en neemt 1 byte in beslag in het computergeheugen. Woord Char definieert een waarde van dit type. Er zijn verschillende manieren om een ​​tekenvariabele (of constante) te schrijven:

  1. als één enkel teken tussen apostrofs: ‘W’, ‘V’, ‘p’;
  2. door de tekencode op te geven, waarvan de waarde tussen 0 en 255 moet liggen.
  3. met behulp van de ^K-constructie, waarbij K de besturingstekencode is. De waarde van K moet 64 groter zijn dan de corresponderende besturingstekencode.

Relationele bewerkingen en de volgende functies zijn van toepassing op waarden van een tekengegevenstype:

Succes(x)- geeft het volgende teken terug;

Voorwaarde(x)- geeft het vorige teken terug;

Bestel(x)- retourneert de waarde van de tekencode;

Chr(x)- retourneert de waarde van een symbool door zijn code;

UpCase(x)- converteert letters van het interval ‘a’..’z’ naar hoofdletters.

Om effectief met het tekentype te werken, raad ik aan om .

Tekenreekstype

Een string in Pascal is een reeks tekens omsloten door apostrofs en wordt aangegeven met het woord Snaar. Het aantal tekens (regellengte) mag niet groter zijn dan 255. Als de lengte van de regel niet is opgegeven, wordt deze automatisch bepaald op 255 tekens. De algemene vorm van een declaratie van een stringvariabele ziet er als volgt uit:

Var<имя_переменной>:snaar[<длина строки>];

Elk teken in een regel heeft zijn eigen index (nummer). De index van de eerste byte is 0, maar slaat niet het eerste teken op, maar de lengte van de hele string, wat betekent dat een variabele van dit type 1 byte meer in beslag zal nemen dan het aantal variabelen erin. Het nummer van het eerste teken is 1, als we bijvoorbeeld de string S=‘stroka’ hebben, dan is S=s;. In een van de volgende lessen wordt het stringdatatype in meer detail besproken.

Opgesomd gegevenstype

Een opgesomd gegevenstype vertegenwoordigt een beperkt aantal identificatiegegevens. Deze identificatiegegevens staan ​​tussen haakjes en worden gescheiden door komma's.

Type Dag=(maandag, dinsdag, woensdag, donderdag, vrijdag, zaterdag, zondag);

Variabele A kan alleen de waarden aannemen die zijn opgegeven in de sectie Type. U kunt ook een variabele van het opgesomde type declareren in de Var-sectie:

Var A: (maandag, dinsdag);

Relationele operaties zijn van toepassing op dit type, en dat is vooraf bepaald op maandag

Intervalgegevenstype

Wanneer het nodig is een bereik van waarden op te geven, wordt in dergelijke situaties het intervalgegevenstype gebruikt. De voor de aangifte gebruikte constructie is m..n, Waar M is de minimale (begin)waarde, en N– maximaal (definitief); hier zijn m en n constanten, die van het type geheel getal, karakter, opsomming of boolean kunnen zijn. Waarden van het intervaltype kunnen zowel in de sectie Typen als in de sectie Variabelebeschrijving worden beschreven.

Algemeen beeld:

TYPE<имя_типа> = <мин. значение>..<макс. значение>;

Het eenvoudigste numerieke gegevenstype in Pascal zijn de integer-typen, ontworpen om gehele getallen op te slaan. Gehele getallen in Pascal worden meestal in twee typen verdeeld: ondertekend en niet-ondertekend. Getallen met teken zijn een geheel getal dat zowel positieve als negatieve getallen bevat. Getallen zonder teken zijn alleen positieve getallen.

Hieronder staan ​​twee tabellen met integer-typen. Eerst gaan we uitschrijven ondertekende gehele typen:


TypeByteBereik van waarden
kortsluiting1 -128 ... 127
kleineint2 -32768 ... 32767
geheel getal, lengte4 -2147483648 ... 2147483647
int648 -9223372036854775808 ... 9223372036854775807

En dit niet-ondertekende gehele typen:


TypeByteBereik van waarden
byte1 0 ... 255
woord2 0 ... 65535
langwoord, kardinaal4 0 ... 4294967295
uint648 0 ... 18446744073709551615

Zoals u kunt zien, bevat de eerste kolom respectievelijk de naam van het type, de tweede - het aantal bytes dat in het geheugen wordt ingenomen door getallen van dit type, en de derde - het bereik van mogelijke waarden. Er zijn twee soorten getallen met teken: geheel getal en longint (letterlijk "geheel getal" en "lang geheel getal"), die synoniem zijn. Dat wil zeggen dat u de ene of de andere naam kunt gebruiken in het beschrijvingsgedeelte.

Op dezelfde manier zijn er in de tweede tabel (niet-negatieve gehele getallen in Pascal) ook twee synoniemen van 4 bytes met gehele getallen: longword en kardinaal , dus gebruik het een of het ander.

Je kunt ook opmerken dat als we de getallen van de eerste tabel voorwaardelijk naar de rechterkant verplaatsen ten opzichte van nul (verplaats het interval naar rechts zodat het minimumaantal 0 is), we intervallen van gehele getallen uit de tweede tabel krijgen. in de overeenkomstige rijen. Dus als we in een shortint-type van 1 byte 128 toevoegen aan de linker- en rechtergrenzen, krijgen we het bytetype (0..255); als we in een 2-bytes type smallint 32768 aan de grenzen toevoegen, krijgen we het overeenkomstige 2-bytes niet-ondertekende typewoord (0..65535), enz.

Dit gebeurt allemaal omdat getallen bij integer-typen zonder teken precies in tweeën kunnen worden gedeeld: de helft van de getallen in het negatieve deel, de andere helft in het positieve deel. Waarom is dan in getallen met teken de linkerrand in absolute waarde 1 groter dan de rechterrand? – vraag je. Bij het shortint-type is het minimum bijvoorbeeld -128, terwijl het maximum slechts 127 is (modulo 1 minder). En dit komt omdat de rechterkant ook 0 bevat, en je moet dit weten en onthouden.

Dus waarom moeten gehele getallen in Pascal in zoveel typen worden verdeeld? Waarom zou je bijvoorbeeld niet rondkomen met de grootste van de gehele typen in PascalABC.Net en Free Pascal – int64 – die bijna 9 en een half quintiljoen (!) is met zowel een min als een plus? Ja, om een ​​simpele banale (?) reden: geheugen besparen. Als je twee kleine positieve getallen van één byte (0..255) moet toevoegen, en je beschrijft deze getallen als int64 (8 bytes), dan kostte dit 8 keer meer geheugen. En als het programma groot is en er veel variabelen zijn, stijgt de geheugenbesparing zeer sterk. Bovendien heeft het geen zin om typen gehele getallen met teken te gebruiken als het probleem te maken heeft met grootheden als lengte, massa, afstand, tijd, enz.

Bekijk in de sectie Abrahamyan Problem Book van de site (subsectie Integer) het gebruik van verschillende typen gehele getallen in Pascal.

De les behandelt de belangrijkste standaardgegevenstypen in Pascal, het concept van een variabele en een constante; legt uit hoe je met rekenkundige bewerkingen kunt werken

Pascal is een getypte programmeertaal. Dit betekent dat de variabelen waarin gegevens worden opgeslagen van een specifiek gegevenstype zijn. Die. Het programma moet direct aangeven welke gegevens in een bepaalde variabele kunnen worden opgeslagen: tekstgegevens, numerieke gegevens, indien numeriek, dan geheel of gedeeltelijk, enz. Dit is in de eerste plaats nodig zodat de computer ‘weet’ welke bewerkingen met deze variabelen kunnen worden uitgevoerd en hoe deze correct moeten worden uitgevoerd.

Het toevoegen van tekstgegevens, of zoals het in de programmering terecht wordt genoemd - aaneenschakeling - is bijvoorbeeld het gebruikelijke samenvoegen van tekenreeksen, terwijl het toevoegen van numerieke gegevens bitsgewijs gebeurt, daarnaast worden breuken en gehele getallen ook op een andere manier toegevoegd. Hetzelfde geldt voor andere operaties.

Laten we eens kijken naar de meest voorkomende gegevenstypen in Pascal.

Gegevenstypen van gehele getallen in Pascal

Type Bereik Vereist geheugen (bytes)
byte 0..255 1
kortsluiting -128..127 1
geheel getal -32768.. 32767 2
woord 0..65535 2
lang -2147483648..2147483647 4

Houd daar rekening mee als u programma's in Pascal schrijft geheel getal(vertaald uit het Engels als geheel) wordt het meest gebruikt, omdat er het meest vraag is naar het bereik van waarden. Als een groter bereik nodig is, gebruik dan lang(lang geheel getal, vanuit het Engels vertaald als lang geheel getal). Type byte in Pascal wordt het gebruikt als het niet nodig is om met negatieve waarden te werken, hetzelfde geldt voor type woord(alleen het waardenbereik is hier veel groter).

Voorbeelden van hoe variabelen worden beschreven (gedeclareerd) in Pascal:

programma a1; var x,y:geheel getal; (type geheel getal) mijnnaam:string; (tekenreekstype) begin x:=1; y:=x+16; mijnnaam:="Peter"; writeln("naam: ",mijnnaam, ", leeftijd: ", y) end.

Resultaat:
naam: Peter, leeftijd: 17

Opmerkingen in Pascal

Merk op hoe commentaar wordt gebruikt in Pascal. In de voorbeeldopmerkingen, d.w.z. servicetekst die “niet zichtbaar” is voor de compiler, staat tussen accolades. Meestal worden door programmeurs opmerkingen gemaakt om stukjes code uit te leggen.

Taak 3. De bevolking van Moskou bedraagt ​​a = 9.000.000 inwoners. De bevolking van Nieuw Vasyuki is b=1000 inwoners. Schrijf een programma dat het verschil in aantal inwoners tussen twee steden bepaalt. Gebruik variabelen

Echte gegevenstypen in Pascal

Reële getallen in Pascal en bij programmeren in het algemeen zijn de naam voor breuken.

Type Bereik Vereist geheugen (bytes)
echt 2,9 * 10E-39 .. 1,7 * 10E38 6
enkel 1,5*10E-45..3,4*10E38 4
dubbele 5 * 10E-324 .. 1,7 * 10E308 8
verlengd 1,9 * 10E-4951 .. 1,1 * 10E4932 10

Het echte type in Pascal is het meest gebruikte echte type.

Bovenstaande kwam aan bod eenvoudige gegevenstypen in Pascal, waaronder:

  • Ordinaal
  • Geheel
  • Logisch
  • Karakter
  • Vermeldbaar
  • Interval
  • Echt

Om de waarden van variabelen van het echte type weer te geven, wordt meestal geformatteerde uitvoer gebruikt:

  • het formaat gebruikt één getal, dat het aantal posities aangeeft dat aan dit getal is toegewezen in exponentiële vorm;
  • p:=1234,6789; Schrijven(p:6:2); (1234,68)

    Naast eenvoudige typen gebruikt de taal ook gestructureerde gegevenstypen en verwijzingen, dat het onderwerp zal zijn van volgende lessen over Pascal.

    Constanten in Pascal

    Vaak is het in een programma vooraf bekend dat een variabele een specifieke waarde zal aannemen en deze tijdens de uitvoering van het hele programma niet zal veranderen. In dit geval moet u een constante gebruiken.

    De declaratie van een constante in Pascal vindt plaats vóór de declaratie van variabelen (vóór het var-servicewoord) en ziet er als volgt uit:

    Een voorbeeld van een constante beschrijving in Pascal:

    1 2 3 4 5 6 constante x= 17;

    var mijnnaam: string ;

    begin mijnnaam: = "Peter" ;

    writeln("naam: ", mijnnaam, ", leeftijd: ", x) end.


    constante x=17; var mijnnaam:string; begin mijnnaam:="Peter"; writeln("naam: ",mijnnaam, ", leeftijd: ", x) end.

    Volgorde van operaties

    1. evaluatie van uitdrukkingen tussen haakjes;
    2. vermenigvuldigen, delen, delen, modificeren van links naar rechts;
    3. optellen en aftrekken van links naar rechts.

    Pascal standaard rekenkundige procedures en functies

    Hier is het de moeite waard om dieper in te gaan op enkele rekenkundige bewerkingen.

    • De inc-bewerking in Pascal, uitgesproken als verhoging, is een standaard Pascal-procedure die betekent dat u met één moet verhogen.
    • Voorbeeld van inc-bediening:

      x:=1; inclusief(x); (Verhoogt x met 1, d.w.z. x=2) writeln(x)

      Complexer gebruik van de inc-procedure:
      Inc(x,n) waarbij x een ordinaal type is, n een geheel getal type is; procedure inc verhoogt x met n.

    • De Dec-procedure in Pascal werkt op dezelfde manier: Dec(x) - verlaagt x met 1 (verlagen) of Dec(x,n) - verlaagt x met n.
    • De abs-operator vertegenwoordigt de modulus van een getal. Het werkt als volgt:
    • a: =- 9;

      b:=buikspieren(a) ;

    • (b=9)
    • a:=-9; b:=buikspieren(a); (b=9)
    • De div-operator in Pascal wordt vaak gebruikt, omdat een aantal taken betrekking hebben op de werking van een hele divisie.
    • Ook de rest van divisie of de mod-operator in Pascal is onmisbaar voor het oplossen van een aantal problemen.

      Opmerkelijk is de standaard oneven functie van Pascal, die bepaalt of een geheel getal oneven is. Dat wil zeggen, het retourneert waar voor oneven getallen, onwaar voor even getallen.

    • Een voorbeeld van het gebruik van de oneven functie: var x:geheel getal; begin x:=3; schrijfln(sqr(x)); (antwoord 9) einde.
    • Werking van machtsverheffen in Pascal

      ontbreekt als zodanig. Maar om een ​​getal tot een macht te verheffen, kun je de exp-functie gebruiken.

      De formule is: exp(ln(a)*n), waarbij a een getal is en n een graad (a>0).

    In de Pascal abc-compiler is machtsverheffing echter veel eenvoudiger: var x:geheel getal; begin x:=9; schrijfln(sqrt(x)); (antwoord 3) einde.
    Taak 4.

    De afmetingen van een luciferdoosje zijn bekend: hoogte - 12,41 cm, breedte - 8 cm, dikte - 5 cm. Bereken de oppervlakte van de basis van de doos en het volume ervan(S=breedte*dikte, V=oppervlak*hoogte)

    Taak 5. De dierentuin heeft drie olifanten en een flink aantal konijnen, waarbij het aantal konijnen regelmatig verandert. Een olifant zou honderd wortels per dag moeten eten, en een konijn twee. Elke ochtend vertelt de dierenverzorger aan de computer het aantal konijnen. Als reactie hierop moet de computer de begeleider het totale aantal wortels vertellen dat vandaag aan de konijnen en olifanten gevoerd moet worden. Taak 6. Dat is bekend X kg snoep kost A roebel Bepaal hoeveel het kost j kg van deze snoepjes, en ook voor hoeveel kilogram snoep je kunt kopen

    In elk programma moet u het type en type hoeveelheden bepalen dat zal worden gebruikt om het probleem op te lossen. Per type worden eenvoudige grootheden (bij het programmeren worden ze allemaal gegevens genoemd) onderverdeeld in constanten en variabelen.

    Constanten– dit zijn gegevens waarvan de waarden niet kunnen veranderen tijdens de uitvoering van het programma. Ingevoerd in een const-blok.

    Over het algemeen wordt de beschrijving van een eenvoudige, ongetypeerde constante als volgt gedaan:

    Const constante_naam = expressie;

    Getypte constanten worden beschreven als:

    Const constante_naam: type = expressie;

    Het volgende kan in expressies worden gebruikt:

    · cijfers of een reeks tekens tussen apostrofs;

    · wiskundige bewerkingen;

    · relationele en logische operaties;

    · functies abs(x), round(x), trunc(x);

    · functies chr(x), ord(x), pred(x), succ(x) en andere.

    Constant beschrijvingsformaat:

    ID=waarde;

    1. Gehele getallen - gedefinieerd door getallen geschreven in decimaal of hexadecimaal formaat, zonder komma.

    2. Real - gedefinieerd door getallen geschreven in decimaal gegevensformaat.

    3. Tekens zijn elk personal computer-symbool tussen apostrofs.

    4. Tekenreeks – gedefinieerd door een reeks willekeurige tekens tussen apostrofs.

    5. Boolean - dit is False of True.

    Het type constante is niet gespecificeerd, maar wordt automatisch bepaald tijdens het compileren: de waarden van expressies worden onmiddellijk berekend en vervolgens alleen vervangen door namen.

    Variabelen- Dit zijn gegevens die kunnen veranderen tijdens de uitvoering van het programma. Elke variabele heeft zijn eigen benoemde geheugenlocatie(s). Die. een variabele is een soort container waarin je wat gegevens kunt plaatsen en daar kunt opslaan. Variabelen hebben een naam, een type en een waarde.

    De naam van de variabele moet beginnen met een letter, mag geen spaties bevatten en kan alleen het volgende bevatten:

    · letters van het Latijnse alfabet;

    · onderstrepen.

    Voorbeelden: A, A_1, AA, i, j, x, y, enz. Onjuiste namen: Mijn 1, 1A. Variabelenamen kunnen maximaal 126 tekens lang zijn, dus probeer betekenisvolle namen van variabelen te kiezen. De compiler onderscheidt echter de eerste 63 tekens in namen. Maar er wordt geen onderscheid gemaakt tussen kleine letters en hoofdletters, zowel in de namen van variabelen als in het schrijven van service-ID's.

    Variabel type – moet worden gedefinieerd in het VAR-variabelebeschrijvingsblok. De waarde van een variabele is een constante van hetzelfde type.

    Elk programma werkt met data. Data zijn, in de brede zin van het woord, objecten die een programma verwerkt. Het type van een gegeven is zijn kenmerk. Afhankelijk van het type:

    · in welke vorm worden deze gegevens opgeslagen,

    Hoeveel geheugencellen worden toegewezen voor de opslag,

    Wat is de minimale en maximale waarde die het kan aannemen,

    · welke handelingen ermee uitgevoerd kunnen worden.

    Enkele eenvoudige Pascal-gegevenstypen:

    1. Typen gehele getallen (ShortInt, Integer, LongInt, Byte, Word).

    2. Echte typen (Real, Single, Double, Extended, Comp).

    3. Logisch (Booleaans).

    4. Karakter (Char).

    5. Stringtypen (String, String [n]).

    9. Onvoorwaardelijke operatoren in Pascal. Beschrijving en gebruik.

    Type operator

    ga naar<метка>;

    Doel – overdracht van de controle over het programma naar de operator gemarkeerd met het label<метка>. Een label kan een naam zijn (geschreven volgens de regels voor taalnamen) of een geheel getal zonder teken, beschreven in de Label label-instructie en vóór de gelabelde instructie geplaatst, maar slechts op één plaats in het programma. Een label wordt van de operator gescheiden door het symbool “:”. Een overgang naar een label kan meerdere keren in een blok voorkomen, maar het label zelf kan slechts één keer voorkomen. Als er geen controleoverdracht naar een bepaald label plaatsvindt, zal er geen fout optreden.

    De onvoorwaardelijke sprongoperator is over het algemeen niet toegestaan ​​in gestructureerd programmeren. Hoewel u hiermee de programmatekst kunt inkorten, wordt het gebruik ervan in Pascal beperkt door een aantal regels en aanbevelingen. Het is verboden om binnen een samengestelde instructie te springen, binnen of naar het begin van een subroutine, en een subroutine te verlaten naar het programma dat deze heeft aangeroepen. Het wordt niet aanbevolen om verder te gaan dan de pagina (scherm) van de programmatekst, behalve om naar de eindverklaringen van het programma te gaan. Dit alles komt door de mogelijkheid om belangrijke uitspraken over te slaan voor de juiste werking van het programma. Normaal gesproken wordt de onvoorwaardelijke sprongoperator alleen gebruikt om terug te keren naar het begin van het luslichaam als de lus is opgebouwd met behulp van voorwaardelijke en onvoorwaardelijke operatoren.

    Merk op dat de uitspraak die volgt op goto ook moet worden gemarkeerd met een ander label (als goto niet de laatste is in de groep uitspraken). Anders is er geen manier om naar de volgende goto-instructie te gaan.

    10. Filiaalexploitanten in Pascal. Beschrijving en gebruik.

    Operators waarmee u slechts één van de verschillende mogelijke opties voor het uitvoeren van een programma (vertakkingen) kunt selecteren, zijn onder meer

    Die. Met deze instructies kunt u de natuurlijke volgorde van uitvoering van programma-instructies wijzigen.

    als<условие>Dan< оператор 1 >

    anders<оператор 2> ;

    als a>=b dan Max:=a anders Max:=b;

    In een if-statement kan slechts één statement op beide takken worden uitgevoerd (then en else)!

    Een voorbeeld van een probleem bij filiaalexploitanten in Pascal. Voer twee gehele getallen in en geef de grootste ervan weer.

    Oplossingsidee: u moet het eerste getal weergeven als het groter is dan het tweede, of het tweede als het groter is dan het eerste.

    Kenmerk: de acties van de uitvoerder zijn afhankelijk van bepaalde voorwaarden (indien... anders...).

    var a, b, max: geheel getal;

    writeln("Voer twee gehele getallen in");

    als a > b dan max:=a anders max:=b;

    writeln("Maximumaantal", max);

    Moeilijke omstandigheden

    Een complexe voorwaarde is een voorwaarde die bestaat uit verschillende eenvoudige voorwaarden (relaties) die met behulp van logica met elkaar zijn verbonden

    operaties:

    Niet – NIET (negatie, inversie)

    En – En (logische vermenigvuldiging, conjunctie,

    gelijktijdige vervulling van voorwaarden)

    Of – OR (logische optelling, disjunctie,

    vervulling van ten minste één van de voorwaarden)

    Xor – exclusieve OR (alleen uitvoeren

    een van de twee voorwaarden, maar niet beide)

    Eenvoudige voorwaarden (relaties)

    < <= > >= = <>

    Uitvoeringsorder (prioriteit = anciënniteit)

    Uitdrukkingen tussen haakjes

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

    Functie - elk van de eenvoudige voorwaarden moet tussen haakjes staan.

    operator voor casusselectie

    Met de casusverklaring kunt u kiezen uit verschillende opties.

    De variantoperator bestaat

    Van een uitdrukking die een selector wordt genoemd,

    Een lijst met operators, elk gemarkeerd met een constante van hetzelfde type als de selector.

    De selector mag alleen een ordinaal gegevenstype zijn, geen longint-gegevenstype.

    De selector kan een variabele of een expressie zijn.

    De lijst met constanten kan worden gespecificeerd door een expliciete opsomming, of door een interval, of door ze te combineren. Herhaling van constanten is dat niet

    toegestaan.

    Het schakelaartype en de typen van alle constanten moeten compatibel zijn.

    Geval< выражение {селектор}>van

    <список констант 1> : < оператор 1>;

    < список констант K> : < оператор K>;

    De case-instructie wordt als volgt uitgevoerd:

    1) de waarde van de selector wordt berekend;

    2) het verkregen resultaat wordt gecontroleerd om te zien of het tot een bepaalde lijst met constanten behoort;

    3) als een dergelijke lijst wordt gevonden, worden er geen verdere controles uitgevoerd, maar komt de operator overeen

    geselecteerde tak, waarna de controle wordt overgedragen naar de instructie die volgt op het sleutelwoord end, waardoor het geheel wordt gesloten

    casusconstructie;

    4) als er geen geschikte lijst met constanten is, wordt de operator die het sleutelwoord else volgt uitgevoerd; als er geen andere vestiging is,

    dan wordt er niets gedaan.

    In een case branch-instructie kan slechts één instructie over alle vertakkingen worden uitgevoerd!

    Als u er meer dan één moet uitvoeren, moet u de begin-eind-operatorhaakjes gebruiken.

    case Index mod 4 van

    1: x:= y*y – 2*y;

    11.Optie-operator (selectie) in Pascal. Beschrijving en gebruik.

    De selectieoperator (optie, schakelaar) implementeert de keuze voor een van de mogelijke alternatieven, d.w.z. mogelijkheden om het programma voort te zetten.

    Opnameformaat:

    Case – keuze, optie;

    S – selector, uitdrukking van ordinaal type;

    Ki – selectieconstanten, een constante waarvan het type overeenkomt met het selectortype;

    OPi – elke operator, inclusief leeg;

    De selectieoperator implementeert de volgende constructie:

    De werking van de selectieoperator in Pascal: De selectorexpressie wordt geëvalueerd. De berekende waarde wordt sequentieel vergeleken met de alternatieve constanten en de besturing wordt overgedragen aan de selectieconstanteoperator, die samenvalt met de berekende selectorwaarde. De instructie wordt uitgevoerd en de controle wordt overgedragen buiten de select-instructie. Als de berekende waarde van de selector niet overeenkomt met een van de constanten, wordt de besturing overgedragen naar de Else-tak, waarvan de aanwezigheid in dit geval niet nodig is; de besturing wordt overgedragen buiten de selectieoperator.

    Blokdiagram van de selectieoperator.

    De structuur van de selectie-instructie kan worden geïmplementeerd met behulp van geneste voorwaardelijke instructies, maar dit vermindert de zichtbaarheid van het programma. Er worden niet meer dan 2-3 investeringsniveaus aanbevolen.

    12. Soorten lusoperatoren in Pascal, hun doel.

    5. Algoritmische constructies van cycli. Soorten cycli.

    Er zijn drie soorten lusalgoritmen: lus met een parameter (een rekenkundige lus genoemd), lus met een preconditie en lus met een postvoorwaarde (iteratief genoemd).

    12.13 Rekenkundige lus. In een rekenkundige cyclus wordt het aantal stappen (herhalingen) op unieke wijze bepaald door de regel voor het wijzigen van de parameter, die wordt gespecificeerd met behulp van de initiële (N) en uiteindelijke (K) waarden van de parameter en de stap (h) van zijn verandering. Dat wil zeggen, bij de eerste stap van de cyclus is de parameterwaarde N, bij de tweede - N + h, bij de derde - N + 2h, enz. Bij de laatste stap van de cyclus is de waarde van de parameter niet groter dan K, maar zodanig dat de verdere verandering ervan zal leiden tot een waarde groter dan K.

    Tegenlussen worden gebruikt wanneer een cyclisch deel van een programma een vast aantal keren moet worden herhaald. Dergelijke lussen hebben een geheel getalvariabele die de lusteller wordt genoemd.

    Als het nodig is dat een programmafragment een bepaald aantal keren wordt herhaald, wordt de volgende constructie gebruikt:

    VOOR<имя счетчика цикла> = <начальное значение>DAT<конечное значение>DOEN<оператор>;

    VOOR, TO, DO - gereserveerde woorden (Engels: voor, om, uit te voeren);

    <счетчик (параметр) цикла>- een variabele van het type INTEGER, die op een segment verandert<начального значения>, oplopend met één aan het einde van elke stap van de cyclus;

    <оператор>- elke (meestal samengestelde) operator.

    Er is een andere vorm van deze operator:

    VOOR<имя счетчика цикла>:= <начальное значение>NAAR BENEDEN<конечное значение>DOEN<оператор> :

    Het vervangen van TO door DOWNTO (Engels: omlaag naar) betekent dat de stap van het wijzigen van de cyclusparameter gelijk is aan -1, d.w.z. dat de teller stap voor stap met één afneemt.

    12.14 Lus met voorwaarde. Het aantal cyclusstappen is niet vooraf bepaald en hangt af van de invoergegevens van de taak. In deze cyclische structuur wordt eerst de waarde van een voorwaardelijke uitdrukking (condition) gecontroleerd voordat de volgende stap van de lus wordt uitgevoerd. Als de voorwaardelijke expressie waar is, wordt de hoofdtekst van de lus uitgevoerd. Waarna de controle weer wordt overgedragen aan het controleren van de toestand, enz. Deze acties worden herhaald totdat de voorwaardelijke expressie FALSE oplevert. De eerste keer dat niet aan de voorwaarde wordt voldaan, eindigt de cyclus.

    Deze meest gebruikte herhalingsoperator is:

    TERWIJL<условие>DOEN<оператор>;

    WHILE, DO - gereserveerde woorden (Engels: bye, do);

    <условие>- expressie van logisch type;

    <оператор>- een willekeurige (mogelijk samengestelde) operator.

    Een speciaal kenmerk van een lus met een preconditie is dat als de voorwaardelijke expressie aanvankelijk onwaar is, de body van de lus nooit zal worden uitgevoerd.

    Lussen met precondities worden gebruikt wanneer de uitvoering van de lus is gekoppeld aan een logische voorwaarde. Een lusinstructie met een preconditie bestaat uit twee delen: de lusuitvoeringsvoorwaarde en de lusbody.

    12.15 Lus met postvoorwaarde (iteratieve lus). Net als bij een lus met een voorwaarde, is bij een cyclisch ontwerp met een postvoorwaarde het aantal herhalingen van het luslichaam niet vooraf bepaald; het hangt af van de invoergegevens van de taak. In tegenstelling tot een lus met een preconditie wordt de body van een lus met een postconditie altijd minimaal één keer uitgevoerd, waarna de voorwaarde wordt gecontroleerd. In dit ontwerp wordt de hoofdtekst van de lus uitgevoerd zolang de waarde van de voorwaardelijke expressie onwaar is. Zodra het waar wordt, stopt de uitvoering van de opdracht.

    Deze operator ziet er als volgt uit:

    HERHALEN<тело цикла>TOT<условие>:

    REPEAT, TOT - gereserveerde woorden (Engels: herhaal tot niet);

    <условие>- een expressie van een logisch type, als de waarde waar is, wordt de lus afgesloten.

    Opgemerkt moet worden dat in deze constructie de reeks instructies die het lichaam van de lus definiëren, niet tussen operatorhaakjes BEGIN ... END staat, aangezien dit het paar REPEAT ... UNTIL is.

    Postcondition-lussen zijn vergelijkbaar met precondition-lussen, maar ze plaatsen de voorwaarde na de hoofdtekst van de lus.

    In tegenstelling tot een lus met een preconditie, die kan eindigen zonder ooit de hoofdtekst van de lus uit te voeren (als de uitvoeringsvoorwaarde de eerste keer door de lus onwaar is), moet de hoofdtekst van een lus met een postvoorwaarde minstens één keer worden uitgevoerd, waarna de toestand wordt gecontroleerd.

    Eén van de luslichaamoperatoren moet de waarde van de lusuitvoeringsvoorwaarde beïnvloeden, anders wordt de lus een oneindig aantal keren herhaald.

    Als de voorwaarde waar is, wordt de lus verlaten, anders worden de lusinstructies herhaald.

    16. Array- dit is een reeks elementen van hetzelfde type, verenigd door een gemeenschappelijke naam en die een bepaald geheugengebied in de computer innemen. Het aantal elementen in een array is altijd eindig. Over het algemeen is een array een gestructureerd gegevenstype dat bestaat uit een vast aantal elementen van hetzelfde type. Arrays kregen de naam regulier type (of rijen) omdat ze elementen van hetzelfde type (logisch homogeen) combineren, geordend (gereguleerd) door indices die de positie van elk element in de array bepalen. Elk type gegevens kan worden gebruikt als elementen van een array, dus het is volkomen legitiem om arrays met records, arrays met pointers, arrays met strings, arrays, enz. te hebben. Elementen van een array kunnen gegevens van elk type zijn, inclusief gestructureerde gegevens. Het type array-elementen wordt base genoemd. Een kenmerk van de Pascal-taal is dat het aantal array-elementen vaststaat tijdens de beschrijving en niet verandert tijdens de uitvoering van het programma. De elementen waaruit de array bestaat, zijn zo geordend dat elk element een overeenkomstige reeks getallen (indices) heeft die de locatie in de totale reeks bepalen. Elk afzonderlijk element is toegankelijk door de elementen van de array te indexeren. Indexen zijn uitdrukkingen van elk scalair type (meestal geheel getal), behalve reëel. Het indextype bepaalt de grenzen voor het wijzigen van indexwaarden. De term array of wordt gebruikt om een ​​array te beschrijven.

    Een array is een verzameling gegevens die soortgelijke functies vervult en met één naam wordt aangeduid. Als aan elk element van een array slechts één serienummer is toegewezen, wordt zo'n array lineair of eendimensionaal genoemd.

    17. Eendimensionale array– dit is een vast aantal elementen van hetzelfde type, verenigd door één naam, en elk element heeft zijn eigen unieke nummer, en de elementnummers zijn opeenvolgend.

    Om dergelijke objecten bij het programmeren te beschrijven, moet u eerst het overeenkomstige type in het gedeelte Typebeschrijving invoeren.

    Het arraytype wordt als volgt beschreven:

    Typenaam = Array [index(s) type] Van elementtype;

    Variabelenaam: typenaam;

    Een arrayvariabele kan onmiddellijk worden beschreven in de sectie Var-variabelebeschrijving:

    Var Variabelenaam: array [type index(en)] Van elementtype;

    Array is een servicewoord (uit het Engels vertaald als “array”);

    Of is een dienstwoord (uit het Engels vertaald als “van”).

    Indextype – elk ordinaal type, behalve de typen integer en longint.

    Het type van de elementen zelf kan van alles zijn, behalve het bestandstype.

    Het aantal elementen in een array wordt de dimensie genoemd. Het is eenvoudig te berekenen dat bij de laatste methode om een ​​reeks indexen te beschrijven, de array-dimensie gelijk is aan: maximale indexwaarde – minimale indexwaarde + 1.

    Bijvoorbeeld:

    mas = array van echt;

    Array X is eendimensionaal en bestaat uit twintig elementen van het echte type. De array-elementen worden achtereenvolgens in het computergeheugen opgeslagen.

    Wanneer variabelen worden gebruikt om een ​​index aan te duiden, moeten hun waarden worden bepaald op het moment van gebruik, en in het geval van rekenkundige uitdrukkingen mag hun resultaat de grenzen van de minimum- en maximumwaarden van de array-indexen niet overschrijden.

    Indexen van array-elementen kunnen beginnen met elk geheel getal, inclusief negatieve, bijvoorbeeld:

    Type bb = Array [-5..3] van Boolean;

    Arrays van dit type bevatten 9 logische variabelen, genummerd van -5 tot 3.

    18. Tweedimensionale array in Pascal wordt behandeld als een eendimensionale array waarvan het elementtype ook een array is (array van arrays). De positie van elementen in tweedimensionale Pascal-arrays wordt beschreven door twee indices. Ze kunnen worden gepresenteerd in de vorm van een rechthoekige tafel of matrix.

    Beschouw een tweedimensionale Pascal-array met een afmeting van 3*3, dat wil zeggen dat deze drie lijnen zal hebben, en elke lijn zal drie elementen hebben:

    Elk element heeft zijn eigen nummer, net als eendimensionale arrays, maar nu bestaat het nummer al uit twee cijfers: het nummer van de rij waarin het element zich bevindt, en het kolomnummer. Het elementnummer wordt dus bepaald door het snijpunt van een rij en een kolom. Een 21 is bijvoorbeeld het element dat in de tweede rij en eerste kolom verschijnt.

    Beschrijving van een tweedimensionale Pascal-array.

    Er zijn verschillende manieren om een ​​tweedimensionale Pascal-array te declareren.

    We weten al hoe we eendimensionale arrays moeten beschrijven, waarvan de elementen van elk type kunnen zijn, en daarom kunnen de elementen zelf arrays zijn. Beschouw de volgende beschrijving van typen en variabelen:

    Basisbewerkingen met tweedimensionale Pascal-arrays

    Alles wat is gezegd over basisbewerkingen met eendimensionale arrays geldt ook voor matrices. De enige actie die kan worden uitgevoerd op hele matrices van hetzelfde type is toewijzing. Dat wil zeggen, als ons programma bijvoorbeeld twee matrices van hetzelfde type beschrijft:

    matrix= array van gehele getallen;

    dan kunt u tijdens de uitvoering van het programma matrix a de waarde van matrix b toekennen (a:= b). Alle andere acties worden element voor element uitgevoerd en alle geldige bewerkingen die zijn gedefinieerd voor het gegevenstype van de array-elementen kunnen op de elementen worden uitgevoerd. Dit betekent dat als een array uit gehele getallen bestaat, bewerkingen die voor gehele getallen zijn gedefinieerd, kunnen worden uitgevoerd op de elementen ervan, maar als de array uit tekens bestaat, kunnen bewerkingen die zijn gedefinieerd voor het werken met tekens daarop worden toegepast.

    21. Technologieën voor het werken met tekstdocumenten. Teksteditors en -verwerkers: doel en mogelijkheden.

    Meer geavanceerde teksteditors (bijvoorbeeld Microsoft Word en OpenOffice.org Writer), die ook wel tekstverwerkers worden genoemd, hebben een breed scala aan mogelijkheden voor het maken van documenten (lijsten en tabellen invoegen, hulpmiddelen voor spellingcontrole, opslaan van correcties, enz.).

    Ter voorbereiding op de publicatie van boeken, tijdschriften en kranten tijdens het publicatie-opmaakproces worden krachtige tekstverwerkingsprogramma's gebruikt - desktop publishing-systemen (bijvoorbeeld Adobe PageMaker, Microsoft Office Publisher).

    Om webpagina's en websites voor te bereiden voor publicatie op internet, worden gespecialiseerde toepassingen (bijvoorbeeld Microsoft FrontPage) gebruikt.

    Teksteditors zijn programma's voor het maken, bewerken, opmaken, opslaan en afdrukken van documenten. Een modern document kan naast tekst ook andere objecten bevatten (tabellen, diagrammen, afbeeldingen, enz.).

    Bewerken is een transformatie waarbij de inhoud van een document wordt toegevoegd, verwijderd, verplaatst of gecorrigeerd. Het bewerken van een document gebeurt meestal door tekens of stukjes tekst toe te voegen, te verwijderen of te verplaatsen.

    Opmaak is het ontwerp van tekst. Naast teksttekens bevat opgemaakte tekst speciale onzichtbare codes die het programma vertellen hoe deze op het scherm moet worden weergegeven en op een printer moet worden afgedrukt: welk lettertype moet worden gebruikt, wat de stijl en grootte van de tekens moeten zijn, hoe alinea's en koppen moeten worden weergegeven. moet worden geformatteerd.

    Opgemaakte en niet-opgemaakte teksten zijn enigszins verschillend van aard. Dit verschil moet begrepen worden. Bij opgemaakte tekst is alles belangrijk: de grootte van de letters, hun afbeelding en waar de ene regel eindigt en de andere begint. Dat wil zeggen dat opgemaakte tekst onlosmakelijk verbonden is met de parameters van het vel papier waarop deze is afgedrukt.

    Bij het ontwerpen van tekstdocumenten moet u vaak niet-tekstuele elementen of objecten aan het document toevoegen. Met geavanceerde teksteditors kunt u dit doen - ze hebben ruime mogelijkheden voor het invoegen van afbeeldingen, diagrammen, formules, enzovoort in de tekst.

    Papieren en elektronische documenten. Documenten kunnen op papier of elektronisch zijn. Papieren documenten worden gemaakt en opgemaakt om de best mogelijke presentatie te bieden wanneer ze op een printer worden afgedrukt. Elektronische documenten worden gemaakt en opgemaakt voor de beste presentatie op een computerscherm. De geleidelijke vervanging van de papieren documentstroom door elektronische is een van de trends in de ontwikkeling van de informatietechnologie. Het terugdringen van het papierverbruik heeft een gunstig effect op het behoud van natuurlijke hulpbronnen en het terugdringen van de milieuvervuiling.

    De opmaak van papieren en elektronische documenten kan aanzienlijk verschillen. Voor papieren documenten wordt de zogenaamde absolute opmaak geaccepteerd. Een afgedrukt document wordt altijd opgemaakt zodat het op een afgedrukt vel van een bekend formaat (formaat) past. De breedte van een documentregel is bijvoorbeeld afhankelijk van de breedte van het vel papier. Als een document is ontworpen om op vellen van groot formaat af te drukken, kan het niet op kleine vellen papier worden afgedrukt - een deel van het document past er niet op. Kortom, voor het opmaken van een afgedrukt document is het altijd nodig dat u eerst een vel papier selecteert en dit vervolgens aan dit vel koppelt. Voor een gedrukt document kunt u altijd nauwkeurig de lettergroottes, marges, afstanden tussen regels of alinea's, enz. aangeven (in welke maateenheid dan ook).

    Voor elektronische documenten is zogenaamde relatieve opmaak gebruikelijk. De auteur van het document kan niet vooraf voorspellen op welke computer of schermgrootte het document zal worden bekeken. Bovendien zou het, zelfs als de schermformaten vooraf bekend waren, nog steeds onmogelijk zijn om te voorspellen hoe groot het venster zal zijn waarin de lezer het document zal zien. Daarom worden elektronische documenten zo gemaakt dat ze zich direct aanpassen aan de huidige venstergrootte en -indeling.

    De auteur van een elektronisch document weet ook niet welke lettertypen beschikbaar zijn op de computer van de toekomstige lezer en kan daarom niet strikt aangeven in welk lettertype de tekst en kopjes moeten worden weergegeven. Maar het kan opmaak instellen waardoor koppen op elke computer groter lijken dan tekst.

    Relatieve opmaak wordt gebruikt om elektronische internetdocumenten (zogenaamde webpagina's) te maken, en absolute opmaak wordt gebruikt om afgedrukte documenten in tekstverwerkers te maken.

    22. Belangrijkste structurele elementen van een tekstdocument. Lettertypen, stijlen, formaten.

    Lettertype (teken)-opmaak.

    Symbolen zijn letters, cijfers, spaties, leestekens en speciale tekens. Symbolen kunnen worden opgemaakt (hun uiterlijk wijzigen). Tot de belangrijkste eigenschappen van symbolen behoren de volgende: lettertype, grootte, stijl en kleur.

    Een lettertype is een complete set tekens van een bepaalde stijl. Elk lettertype heeft een eigen naam, bijvoorbeeld Times New Roman, Arial, Comic Sans MS. De lettereenheid is het punt (1 pt = 0,367 mm). Lettergroottes kunnen binnen ruime grenzen worden gewijzigd. Naast de normale (normale) tekenstijl worden meestal vet, cursief en vet cursief gebruikt.

    Afhankelijk van de manier waarop ze op een computer worden weergegeven, zijn er verschillen tussen raster- en vectorlettertypen. Raster grafische methoden worden gebruikt om rasterlettertypen weer te geven; tekens zijn groepen pixels. Bitmaplettertypen kunnen alleen op basis van bepaalde factoren worden geschaald.

    In vectorlettertypen worden tekens beschreven door wiskundige formules en kunnen ze willekeurig worden geschaald. Van de vectorlettertypen worden TrueType-lettertypen het meest gebruikt.

    U kunt ook aanvullende opties voor tekenopmaak instellen: tekens onderstrepen met verschillende lijntypen, de weergave van tekens wijzigen (superscript, subscript, doorhalen), de afstand tussen tekens wijzigen.

    Als u een document in kleur wilt afdrukken, kunt u verschillende kleuren instellen voor verschillende groepen tekens.

    Om de spelling en syntaxis te controleren, worden speciale softwaremodules gebruikt, die meestal in tekstverwerkers en publicatiesystemen zijn opgenomen. Dergelijke systemen bevatten woordenboeken en grammaticaregels voor meerdere talen, waardoor fouten in meertalige documenten kunnen worden gecorrigeerd.

    24. Database is een informatiemodel waarmee u gegevens over een groep objecten met dezelfde set eigenschappen ordentelijk kunt opslaan.

    Er zijn verschillende soorten databases: tabellarisch (relationeel), hiërarchisch en netwerkdatabases.

    Databases in tabelvorm.

    Een database in tabelvorm bevat een lijst met objecten van hetzelfde type, dat wil zeggen objecten met dezelfde set eigenschappen. Het is handig om een ​​dergelijke database weer te geven in de vorm van een tweedimensionale tabel.

    In relationele databases worden alle gegevens gepresenteerd in de vorm van eenvoudige tabellen, verdeeld in rijen en kolommen, op het kruispunt waarvan de gegevens zich bevinden. Query's op dergelijke tabellen retourneren tabellen die zelf het onderwerp kunnen zijn van verdere query's. Elke database kan meerdere tabellen bevatten.

    Het belangrijkste voordeel van tabellen is hun duidelijkheid. Bijna dagelijks hebben we te maken met tabelgegevens. Kijk bijvoorbeeld eens in je agenda: het lesrooster wordt daar weergegeven in de vorm van een tabel. Als we op het station aankomen, bekijken we het treinschema. Op wat voor soort lijkt het? Dit is een tafel! Er is ook een voetbalkampioenschapstafel. En het dagboek van de leraar, waarin hij je cijfers geeft, is ook een tabel.

    In het kort kunnen de kenmerken van een relationele database als volgt worden geformuleerd:

    1. Gegevens worden opgeslagen in tabellen die bestaan ​​uit kolommen (“attributen”, “velden”) en rijen (“records”);

    2. Op het snijpunt van elke kolom en rij staat precies één waarde;

    3.Elke kolom heeft zijn eigen naam, die als naam dient, en alle waarden in één kolom zijn van hetzelfde type.

    4. Query's naar de database retourneren resultaten in de vorm van tabellen, die ook als query-objecten kunnen fungeren.

    5. Rijen in een relationele database zijn ongeordend: de volgorde wordt bepaald op het moment dat het antwoord op de vraag wordt gegenereerd.

    6. Meestal wordt informatie in databases niet in één tabel opgeslagen, maar in verschillende onderling verbonden tabellen.

    In relationele databases wordt een tabelrij aangeroepen opname, en de kolom is veld. Elk tabelveld heeft een naam.

    Velden- dit zijn verschillende kenmerken (ook wel attributen genoemd) van een object. Veldwaarden op één regel verwijzen naar één object.

    Primaire sleutel in een database wordt een veld (of een set velden) aangeroepen waarvan de waarde niet in verschillende records wordt herhaald.

    Aan elk veld is nog een zeer belangrijke eigenschap gekoppeld: veldtype. Een veldtype definieert de set waarden die een bepaald veld in verschillende records kan aannemen.

    Er worden vier hoofdveldtypen gebruikt in relationele databases:

    Numeriek;

    Symbolisch;

    Logisch.

    25. Databasebeheersystemen en principes voor het werken ermee. Gegevens in de database zoeken, verwijderen en sorteren. Zoekvoorwaarden (logische expressies); volgorde- en sorteersleutels.

    Databasebeheersystemen (DBMS).

    Voor het maken van databases en het uitvoeren van zoek- en sorteerbewerkingen worden speciale programma's gebruikt: databasebeheersystemen (DBMS).

    Het is dus noodzakelijk om onderscheid te maken tussen databases (DB's) zelf - geordende gegevenssets, en databasebeheersystemen (DBMS) - programma's die de opslag en verwerking van gegevens beheren. De Access-toepassing, opgenomen in de Microsoft Office-kantoorsuite, is bijvoorbeeld een DBMS waarmee de gebruiker tabellarische databases kan maken en verwerken.

    Een relationele database is in wezen een tweedimensionale tabel. Een record wordt hier opgevat als een rij van een tweedimensionale tabel, waarvan de elementen de kolommen van de tabel vormen. Afhankelijk van het gegevenstype kunnen de kolommen numeriek, tekst of datum zijn. De tabelrijen zijn genummerd.

    Werken met een DBMS begint met het creëren van een databasestructuur, d.w.z. met het definiëren van:

    aantal kolommen;

    kolomnamen;

    kolomtypen (tekst/nummer/datum);

    kolombreedtes.

    Belangrijkste functies van het DBMS:

    Gegevens beheren in extern geheugen (op schijven);

    Gegevens beheren in RAM;

    Het registreren van wijzigingen en het herstellen van de database na storingen;

    Ondersteuning van databasetalen (datadefinitietaal, datamanipulatietaal).

    In DBMS-opdrachten wordt de selectievoorwaarde geschreven in de vorm van een logische expressie.

    Een logische uitdrukking wordt, net als een wiskundige uitdrukking, uitgevoerd (geëvalueerd), maar het resultaat is geen getal, maar een logische waarde: waar of onwaar.

    Een uitdrukking die uit één logische waarde of één relatie bestaat, wordt een eenvoudige logische uitdrukking genoemd.

    Vaak zijn er problemen waarbij geen sprake is van individuele omstandigheden, maar van een reeks onderling verbonden omstandigheden (relaties). U moet bijvoorbeeld studenten selecteren met een gewicht van meer dan 60 en een lengte van minder dan 168.

    Een expressie die logische bewerkingen bevat, wordt een complexe logische expressie genoemd.

    Het combineren van twee (of meer) uitspraken tot één met behulp van het voegwoord ‘en’ wordt de bewerking van logische vermenigvuldiging of conjunctie genoemd.

    Als resultaat van logische vermenigvuldiging (conjunctie) wordt waarheid verkregen als alle logische uitdrukkingen waar zijn.

    Het combineren van twee (of meer) uitspraken met behulp van het voegwoord ‘of’ wordt de bewerking van logische optelling of disjunctie genoemd.

    Als resultaat van logische optelling (disjunctie) wordt waarheid verkregen als ten minste één logische uitdrukking waar is.

    Het koppelen van het deeltje ‘niet’ aan een uitspraak wordt de werking van logische negatie of inversie genoemd.

    27. Spreadsheets, doel en basisfuncties.

    Spreadsheet is een numeriek gegevensverwerkingsprogramma dat gegevens in rechthoekige tabellen opslaat en verwerkt.

    Een spreadsheet bestaat uit kolommen en rijen. Kolomkoppen worden aangegeven met letters of combinaties van letters (A, G, AB, enz.), Rijkoppen worden aangegeven met cijfers (1, 16, 278, enz.). Een cel is het snijpunt van een kolom en een rij.

    Elke tabelcel heeft zijn eigen adres. Een celadres in een spreadsheet bestaat uit een kolomkop en een rijkop, bijvoorbeeld: A1, F123, R1. De cel waarmee bepaalde acties worden uitgevoerd, wordt gemarkeerd met een kader en wordt actief genoemd.

    Gegevenstypen. Met spreadsheets kunt u met drie hoofdtypen gegevens werken: getallen, tekst en formules.

    Getallen in Excel-spreadsheets kunnen in een normaal numeriek of wetenschappelijk formaat worden geschreven, bijvoorbeeld: 195.2 of 1.952E + 02. Standaard worden getallen in een cel rechts uitgelijnd. Dit wordt verklaard door het feit dat het bij het plaatsen van getallen onder elkaar (in een tabelkolom) handig is om cijfers uit te lijnen (eenheden onder eenheden, tientallen onder tientallen, enz.).

    De formule moet beginnen met een gelijkteken en kan getallen, celnamen, functies (wiskunde, statistisch, financieel, datum en tijd, enz.) en wiskundige symbolen bevatten. De formule “=A1+B2” zorgt bijvoorbeeld voor de optelling van getallen die zijn opgeslagen in de cellen A1 en B2, en de formule “=A1*B” vermenigvuldigt het getal dat is opgeslagen in cel A1 met 5. Wanneer u een formule in een cel invoert , het is niet de formule zelf die wordt weergegeven en het resultaat van berekeningen met deze formule. Als de initiële waarden in de formule veranderen, wordt het resultaat onmiddellijk opnieuw berekend.

    Absolute en relatieve verbanden. Formules gebruiken verwijzingen naar celadressen. Er zijn twee hoofdtypen koppelingen: relatief en absoluut. De verschillen daartussen verschijnen wanneer u een formule van de actieve cel naar een andere cel kopieert.

    Een relatieve verwijzing in een formule wordt gebruikt om een ​​celadres op te geven dat wordt berekend ten opzichte van de cel waarin de formule zich bevindt. Wanneer u een formule uit de actieve cel verplaatst of kopieert, worden relatieve verwijzingen automatisch bijgewerkt op basis van de nieuwe positie van de formule. Relatieve links hebben de volgende vorm: A1, BZ.

    Als het dollarteken voor een letter staat (bijvoorbeeld: $A1), dan is de kolomcoördinaat absoluut en de rijcoördinaat relatief. Als het dollarsymbool voor een getal staat (bijvoorbeeld A$1), dan is de kolomcoördinaat daarentegen relatief en de rijcoördinaat absoluut. Dergelijke links worden gemengd genoemd.

    Laat bijvoorbeeld de formule =A$1+$J31 in cel C1 worden geschreven, die bij kopiëren naar cel D2 de vorm =B$1+$B2 aanneemt. Relatieve links veranderden bij het kopiëren, maar absolute links niet.

    Gegevens sorteren en zoeken. Met spreadsheets kunt u gegevens sorteren. Gegevens in spreadsheets worden in oplopende of aflopende volgorde gesorteerd. Bij het sorteren worden gegevens in een bepaalde volgorde gerangschikt. U kunt geneste sorteringen uitvoeren, d.w.z. gegevens op meerdere kolommen sorteren, en een sorteervolgorde aan de kolommen toewijzen.

    In spreadsheets kunt u naar gegevens zoeken in overeenstemming met gespecificeerde voorwaarden - filters. Filters worden gedefinieerd met behulp van zoektermen (groter dan, kleiner dan, gelijk aan, enz.) en waarden (100, 10, enz.). Bijvoorbeeld meer dan 100. Als resultaat van de zoekopdracht worden die cellen gevonden die gegevens bevatten die overeenkomen met het opgegeven filter.

    Het maken van diagrammen en grafieken. Met spreadsheets kunt u numerieke gegevens presenteren in de vorm van diagrammen of grafieken. Grafieken zijn er in verschillende typen (staaf, taart, enz.); De keuze voor het diagramtype hangt af van de aard van de gegevens.

    28. Technologie van informatieverwerking in spreadsheets (ET). Spreadsheet-structuur.

    Een spreadsheet is een numeriek gegevensverwerkingsprogramma dat gegevens in rechthoekige tabellen opslaat en verwerkt. Een spreadsheet bestaat uit kolommen en rijen. Kolomkoppen worden aangegeven met letters of combinaties van letters (A, G, AB, enz.), Rijkoppen worden aangegeven met cijfers (1, 16, 278, enz.). Een cel is het snijpunt van een kolom en een rij. Elke tabelcel heeft zijn eigen adres. Een celadres in een spreadsheet bestaat uit een kolomkop en een rijkop, bijvoorbeeld: Al, B5, E7. De cel waarmee bepaalde acties worden uitgevoerd, wordt gemarkeerd met een kader en wordt actief genoemd. De spreadsheets waarmee de gebruiker in de applicatie werkt, worden werkbladen genoemd. U kunt gegevens op meerdere werkbladen tegelijk invoeren en wijzigen, en berekeningen uitvoeren op basis van gegevens uit meerdere werkbladen. Spreadsheetdocumenten kunnen meerdere werkbladen bevatten en worden werkmappen genoemd.

    29. Gegevenstypen in spreadsheets (ET): getallen, formules, tekst. Regels voor het schrijven van formules.

    Gegevenstypen.

    Met spreadsheets kunt u met drie hoofdtypen gegevens werken: getallen, tekst en formules.

    Getallen in Excel-spreadsheets kunnen in een normaal numeriek of exponentieel formaat worden geschreven, bijvoorbeeld: 195,2 of 1,952Ё + 02. Standaard worden getallen in een cel rechts uitgelijnd. Dit wordt verklaard door het feit dat het bij het plaatsen van getallen onder elkaar (in een tabelkolom) handig is om cijfers uit te lijnen (eenheden onder eenheden, tientallen onder tientallen, enz.).

    Tekst in Excel-spreadsheets is een reeks tekens bestaande uit letters, cijfers en spaties. De invoer “32 MB” is bijvoorbeeld tekst. Standaard wordt tekst links uitgelijnd in een cel. Dit komt door de traditionele manier van schrijven (van links naar rechts).

    De formule moet beginnen met een gelijkteken en kan getallen, celnamen, functies (wiskunde, statistisch, financieel, datum en tijd, enz.) en symbolen van wiskundige bewerkingen bevatten. De formule “=A1+B2” zorgt bijvoorbeeld voor de optelling van getallen die zijn opgeslagen in de cellen A1 en B2, en de formule “=A1*5” vermenigvuldigt het getal dat is opgeslagen in cel A1 met 5. Wanneer u een formule in een cel invoert , het is niet de formule zelf die wordt weergegeven en het resultaat van berekeningen met deze formule. Als de initiële waarden in de formule veranderen, wordt het resultaat onmiddellijk opnieuw berekend.

    Regels voor het schrijven van formules in spreadsheets

    1. Formules bevatten getallen, celnamen, bewerkingstekens, haakjes en functienamen

    2. Rekenkundige bewerkingen en hun tekens:

    Naam van de bewerking Symbool Toetsencombinatie

    toevoeging + (Shift + +=)of (+) op het extra toetsenbord

    aftrekken – (-)

    vermenigvuldiging * (Shift + 8) of (*) op een extra toetsenbord

    divisie / (Shift + | \) of (/) op een extra toetsenbord

    machtsverheffing ^ (Shift + 6) in het Engels

    3. De formule wordt op een regel geschreven, de symbolen worden opeenvolgend op een rij gezet, alle bedieningstekens worden ingevoerd; haakjes worden gebruikt.

    4. Bewerkingen tussen haakjes worden eerst uitgevoerd; als er geen haakjes zijn, wordt de volgorde van uitvoering bepaald door de prioriteit van de bewerkingen. In aflopende volgorde van prioriteit worden de bewerkingen in de volgende volgorde gerangschikt:

    1. machtsverheffen

    2. vermenigvuldigen, delen

    3. optellen, aftrekken

    Bewerkingen met dezelfde prioriteit worden uitgevoerd in de volgorde waarin ze van links naar rechts worden geschreven.

    5. Formules kunnen worden ingevoerd in de berekeningsweergavemodus, d.w.z. De gebruiker begint een formule in de huidige cel te schrijven met het =-teken, en nadat hij op de Enter-toets heeft gedrukt, wordt het resultaat van de berekening met behulp van de formule in de cel weergegeven.

    6. Formules kunnen worden ingevoerd in de formuleweergavemodus, d.w.z. de gebruiker schrijft een formule in de huidige cel zonder het =-teken en de formule wordt in de cel weergegeven nadat op de Enter-toets is gedrukt.

    30. Basis ingebouwde functies. Absolute en relatieve koppelingen in spreadsheets (ET).

    Een relatieve verwijzing in een formule wordt gebruikt om een ​​celadres op te geven dat wordt berekend ten opzichte van de cel waarin de formule zich bevindt. Wanneer u een formule uit de actieve cel verplaatst of kopieert, worden relatieve verwijzingen automatisch bijgewerkt op basis van de nieuwe positie van de formule. Relatieve links hebben de volgende vorm: A1, ВЗ.

    Een absolute verwijzing in een formule wordt gebruikt om een ​​vast celadres op te geven. Wanneer u een formule verplaatst of kopieert, veranderen absolute verwijzingen niet. In absolute verwijzingen wordt de onveranderlijke celadreswaarde voorafgegaan door een dollarteken (bijvoorbeeld $A$1).

    Als het dollarteken voor een letter staat (bijvoorbeeld: $A1), dan is de kolomcoördinaat absoluut en de rijcoördinaat relatief. Als het dollarsymbool voor een getal staat (bijvoorbeeld A$1), dan is de kolomcoördinaat daarentegen relatief en de rijcoördinaat absoluut. Dergelijke links worden gemengd genoemd. Laat bijvoorbeeld de formule =A$1+$B1 in cel C1 worden geschreven, die bij kopiëren naar cel D2 de vorm =B$1+$B2 aanneemt. Relatieve links veranderden bij het kopiëren, maar absolute links niet.

    Federaal Agentschap voor Onderwijs

    Abstract

    "GEGEVENSTYPEN IN PASCAL"

    1. Gegevenstypen

    Alle gegevens, d.w.z. constanten, variabelen, eigenschappen, functiewaarden of uitdrukkingen worden gekenmerkt door hun typen. Een type definieert de set geldige waarden die een object kan hebben, evenals de set geldige bewerkingen die erop kunnen worden toegepast. Bovendien bepaalt het type ook het formaat van de interne weergave van gegevens in het pc-geheugen.

    Over het algemeen wordt de Object Pascal-taal gekenmerkt door een vertakte structuur van gegevenstypen (Fig. 1.1). De taal biedt een mechanisme voor het maken van nieuwe typen, waardoor het totale aantal typen dat in een programma wordt gebruikt zo groot kan zijn als gewenst.

    De gegevens die in het programma worden verwerkt, zijn onderverdeeld in variabelen, constanten en letterlijke waarden:

    Constanten vertegenwoordigen gegevens waarvan de waarden zijn ingesteld in de constante declaratiesectie en veranderen niet tijdens de uitvoering van het programma.

    Variabelen worden gedeclareerd in de sectie voor het declareren van variabelen, maar in tegenstelling tot constanten ontvangen ze hun waarden tijdens de uitvoering van het programma, en deze waarden kunnen worden gewijzigd. Constanten en variabelen kunnen bij naam worden genoemd.

    Letterlijk heeft geen identificatie en wordt rechtstreeks weergegeven door de waarde in de programmatekst.

    Type definieert de reeks waarden die gegevenselementen kunnen aannemen en de reeks bewerkingen die daarop zijn toegestaan.

    Dit en de vier daaropvolgende hoofdstukken geven gedetailleerde beschrijvingen van elk type.

    1.1 Eenvoudige typen

    Eenvoudige typen omvatten ordinale, reële en datetime-typen.

    Ordinale typen verschillen doordat elk van hen een eindig aantal mogelijke waarden heeft. Deze waarden kunnen op een bepaalde manier worden geordend (vandaar de naam van de typen) en daarom kan elk van hen worden geassocieerd met een geheel getal: het rangtelwoord van de waarde.

    Echte typen Strikt genomen hebben ze ook een eindig aantal waarden, dat wordt bepaald door het formaat van de interne representatie van een reëel getal. Het aantal mogelijke waarden van reële typen is echter zo groot dat het niet mogelijk is om aan elk ervan een geheel getal (het getal ervan) te koppelen.

    Datum-tijdtype ontworpen om datum en tijd op te slaan. In feite gebruikt het voor deze doeleinden het echte formaat.

    1.1.1 Ordinale typen

    Ordinale typen omvatten (zie figuur 1.1) de typen integer, logisch, karakter, opgesomd en bereik. De functie Ord(x) kan op elk van deze worden toegepast, wat de ordinale waarde van de uitdrukking X retourneert.


    Rijst. 1.1 - Gegevenstypestructuur

    Voor geheel typen, retourneert de functie ord(x) de waarde van x zelf, d.w.z. Ord(X) = x voor x behorend tot een willekeurige geheel type. Ord(x) toepassen op logisch , symbolisch en optelbaar types geeft een positief geheel getal in het bereik 0 tot 1 ( Booleaans type), van 0 tot 255 ( symbolisch), van 0 tot 65535 ( optelbaar). Type-bereik behoudt alle eigenschappen van het basisordinale type, dus het resultaat van het toepassen van de ord(x)-functie erop hangt af van de eigenschappen van dit type.

    U kunt ook functies toepassen op ordinale typen:

    voor(x)- retourneert de vorige waarde van het rangtelwoordtype (de waarde die overeenkomt met het rangtelwoord ord(x) -1, d.w.z. ord(pred(x)) = ord(x) - 1;

    succ(x)- geeft de volgende waarde van het rangtelwoordtype terug, die overeenkomt met het rangtelwoord ord(x) +1, d.w.z. ord(Succ(x)) = ord(x) + 1.

    Bijvoorbeeld als een programma een variabele definieert

    dan zal de functie PRED(c) het karakter "4" teruggeven, en de functie SUCC(c) zal het karakter "6" teruggeven.

    Als we ons een ordinaal type voorstellen als een geordende reeks waarden die van links naar rechts toenemen en een bepaald segment op de getallenas bezetten, dan is de functie pred(x) niet gedefinieerd voor het linkeruiteinde, en succ (x) is niet gedefinieerd voor het rechteruiteinde van dit segment.

    Typen gehele getallen . Het bereik van mogelijke waarden van integer-typen hangt af van hun interne representatie, die één, twee, vier of acht bytes kan zijn. In tabel 1.1 toont de namen van integer-typen, de lengte van hun interne representatie in bytes en het bereik van mogelijke waarden.

    Tabel 1.1 - Typen gehele getallen

    Naam Lengte, bytes Bereik van waarden
    Kardinaal 4 0. .. 2 147 483 647
    Byte 1 0...255
    Kortsluiter 1 -128...+127
    Kleinint 2 -32 768...+32 767
    Woord 2 0...65 535
    Geheel getal 4
    Lang 4 -2 147 483 648...+2 147 483 647
    Int64 8 -9*1018...+9*1018
    LangWoord 4 0. . .4 294 967 295

    Soorten LangWoord En Int64 werden voor het eerst geïntroduceerd in versie 4, en de typen Kleinint En Kardinaal niet beschikbaar in Delphi 1. Type geheel getal voor deze versie duurt het 2 bytes en heeft het een waardebereik van -32768 tot +32767, d.w.z. hetzelfde als Kleinint .

    Wanneer u procedures en functies met integer-parameters gebruikt, moet u zich laten leiden door het “nesten” van typen, d.w.z. waar het ook gebruikt kan worden woord, toegestaan ​​om te gebruiken Byte(maar niet andersom), in Lang“komt binnen” Kleinint, die op zijn beurt omvat Kortsluiter .

    De lijst met procedures en functies die van toepassing zijn op typen gehele getallen wordt gegeven in de tabel. 1.2. De letters b, s, w, i, l duiden uitdrukkingen van het volgende type aan: Byte , Shortint, Word, Integer en Longint ,

    x is een uitdrukking van elk van deze typen; de letters vb, vs, vw, vi, vl, vx duiden variabelen van de overeenkomstige typen aan. Een optionele parameter wordt tussen vierkante haakjes aangegeven.

    Tabel 1.2 - Standaardprocedures en functies van toepassing op gehele typen

    Hoger beroep Resultaattype Actie
    buikspieren(x) Taak 6. Retourneert module x
    chr(b) Char Retourneert een teken op basis van zijn code
    dec(vx[,i]) - Verlaagt de waarde van vx met i, en bij afwezigheid van i - met 1
    inc(vx[,i]) - Verhoogt de waarde van vx met i, en bij afwezigheid van i - met 1
    Hallo(w) Byte Retourneert de hoogste buiging van het argument
    Hallo (ik) Dezelfde Retourneert de derde byte
    Lo(ik) Retourneert de lage byte van het argument
    Laag) Dezelfde
    vreemd(l) Booleaans Retourneert True als het argument een oneven getal is
    Willekeurig(w) Hetzelfde als parameter Retourneert een pseudowillekeurig getal dat uniform is verdeeld in het bereik 0...(w-l)
    sqr(x) X Geeft het kwadraat van het argument terug
    ruil(ik) Geheel getal Wisselt bytes in een woord
    ruil(w) Woord Dezelfde

    Bij het werken met gehele getallen komt het resultaattype overeen met het type operanden, en als de operanden van verschillende typen gehele getallen zijn, een gemeenschappelijk type dat beide operanden omvat. Bijvoorbeeld bij het werken met kortsluiting En woord het gebruikelijke type zal zijn geheel getal. In de standaardinstelling produceert de Delphi-compiler geen code om te controleren of een waarde buiten bereik valt, wat tot misverstanden kan leiden.

    Booleaanse typen . Logische typen omvatten Booleaans, ByteBool, Bool, wordBool En LangeBool. In standaard Pascal is alleen het type gedefinieerd Booleaans, zijn andere logische typen geïntroduceerd in Object Pascal voor compatibiliteit met Windows: types Booleaans En ByteBool elk neemt één byte in beslag, Boel En WoordBool- elk 2 bytes, LangeBool- 4 bytes. Booleaanse waarden kunnen een van de vooraf gedeclareerde constanten False of True zijn.

    Omdat het Booleaanse type een ordinaal type is, kan het worden gebruikt in een lusinstructie van een telbaar type. In Delphi 32 voor Booleaans betekenis

    Ord (True) = +1, terwijl voor andere typen ( Bool, WoordBool enz.)

    Ord(True) = -1, dus dit soort operatoren moeten met voorzichtigheid worden gebruikt! Voor de Delphi 6-versie is bijvoorbeeld de uitvoerbare instructie showMessage(" --- ") in de volgende lus voor zal nooit worden uitgevoerd:

    voor L:= Onwaar naar Waar doen

    Toon bericht("--);

    Als we de lusparameter type L in het vorige voorbeeld vervangen door Booleaans, de lus wordt uitgevoerd en het bericht verschijnt twee keer op het scherm. [Voor Delphi versies 1 en 2 ord (True) =+1 voor elk booleaans type.]

    Karaktertype . De waarde van een tekentype is de verzameling van alle pc-tekens. Aan elk teken wordt een geheel getal in het bereik 0...255 toegewezen. Dit getal dient als de code voor de interne representatie van het symbool; het wordt geretourneerd door de ord-functie.

    Voor het coderen in Windows wordt gebruik gemaakt van de ANSI-code (genoemd naar het American National Standard Institute, het Amerikaanse standaardisatie-instituut dat deze code heeft voorgesteld). De eerste helft van pc-tekens met codes 0...127 komt overeen met Tabel 1.3. De tweede helft van de tekens met codes 128...255 varieert voor verschillende lettertypen. Standaard Windows-lettertypen Arial Cyr, Courier New Cyr en Times New Roman gebruiken de laatste 64 codes (van 192 tot 256) om Cyrillische tekens weer te geven (zonder de letters “ё” en “Ё”): “A”... “Z” zijn gecodeerde waarden 192..223, “a”... “i” - 224...255. De symbolen “Ё” en “е” hebben respectievelijk de codes 168 en 184.

    Tabel 1.3 - Tekencodering volgens de ANSI-standaard

    Code Symbool Code. Symbool Code. Symbool Code Symbool
    0 NUL 32 BL 64 @ 96 "
    1 ZO 33 ! 65 A 97 A
    2 STX 34 66 IN 98 B
    3 ETX 35 # 67 MET 99 Met
    4 EOT 36 $ 68 D 100 D
    5 ENQ 37 % 69 E 101 e
    6 ACK 38 & 70 F 102 F
    7 BEL 39 " 71 G 103 D
    8" B.S. 40 ( 72 N 104 H
    9 HT 41 ) 73 I 105 i
    10 LF 42 * 74 J 106 J
    11 V.T 43 + 75 NAAR 107 j
    12 FF 44 F 76 L 108 1
    13 CR 45 - 77 M 109 M
    14 DUS 46 78 N 110 N
    15 SI. 47 / 79 0 111 O
    16 DEL 48 0 80 R 112 P
    17 DC1 49 1 81 Q 113 Q
    18 DC2 50 2 82 R 114 R
    19 DC3 51 3 83 S 115 S
    20 gelijkstroom 4 52 4 84 T 116 T
    21 N.A.K. 53 5 85 U 117 u
    22 SYN 54 6 86 V 118 v
    23 ETB 55 7 87 W 119 W
    24 KAN 56 8 88 X 120 Taak 6.
    25 E.M. 57 9 89 Y 121 U
    26 SUB 58 : 90 Z .122 z
    27 ESC 59 ; 91 T 123 {
    28 FS 60 < 92 \ 124 1
    29 G.S. 61 = 93 ] 125 }
    30 R.S. 62 > 94 L 126 ~
    31 ONS 63 F 95 127 R

    Tekens met codes 0...31 verwijzen naar servicecodes. Als deze codes worden gebruikt in de tekentekst van het programma, worden ze beschouwd als witruimte.

    Typen verkoold relationele bewerkingen zijn van toepassing, evenals ingebouwde functies:

    Char (c)- type functie verkoold; converteert een expressie naar type Byte in een symbool en retourneert het met zijn waarde;

    UpCase(CH)- type functie verkoold; retourneert een hoofdletter als сн een kleine Latijnse letter is; anders wordt het symbool сн zelf geretourneerd (voor Cyrillisch wordt het oorspronkelijke teken geretourneerd).

    Enum-type . Een opgesomd type wordt gespecificeerd door een opsomming van de waarden die het kan ontvangen. Elke waarde wordt benoemd door een identificatie en bevindt zich in een lijst omgeven door haakjes, bijvoorbeeld:

    kleuren = (rood, wit, blauw);

    Het gebruik van opgesomde typen maakt programma's visueler.

    De overeenkomst tussen de waarden van een opgesomd type en de rangtelwoorden van deze waarden wordt vastgesteld door de opsommingsvolgorde: de eerste waarde in de lijst krijgt het rangtelwoord 0, de tweede - 1, enz. De maximale capaciteit van een opgesomd type is 65536 waarden, dus in feite specificeert het opgesomde type een subset van het hele type woord en kan worden beschouwd als een compacte declaratie van een groep geheeltallige constanten met waarden 0, 1, enz.

    Het gebruik van opgesomde typen verhoogt de betrouwbaarheid van programma's doordat u de waarden kunt controleren die overeenkomstige variabelen ontvangen. Object Pascal maakt de omgekeerde conversie mogelijk: elke uitdrukking van het type Woord kan worden geconverteerd naar een waarde van een opgesomd type, tenzij de waarde van de gehele expressie de kardinaliteit van dat type overschrijdt. Deze conversie wordt bereikt door een automatisch gedeclareerde functie te gebruiken met de naam van het opgesomde type.

    Type-bereik . Een bereiktype is een subset van het basistype, dat elk ordinaal type kan zijn, behalve een bereiktype.

    Een bereiktype wordt gedefinieerd door de grenzen van zijn waarden binnen het basistype:

    <мин.знач.>..<макс.знач.>

    Hier<мин. знач. >- minimumwaarde van het typebereik;<макс. знач. >- de maximale waarde ervan.

    Het bereiktype hoeft niet te worden beschreven in de typesectie, maar kan direct worden opgegeven bij het declareren van de variabele.

    Bij het bepalen van een bereiktype moet u de volgende regels volgen:

    twee “..”-tekens worden als één teken behandeld, dus spaties ertussen zijn niet toegestaan; de linkerrand van het bereik mag de rechterrand niet overschrijden.

    Een bereiktype erft alle eigenschappen van zijn basistype, maar met de beperkingen van zijn lagere vermogen. In het bijzonder als er een variabele is gedefinieerd.

    De standaardbibliotheek Object Pascal bevat twee functies die het werken met bereiktypen ondersteunen:

    Hoog(x)- retourneert de maximale waarde van het bereiktype waartoe variabele x behoort;

    Laag(x)- retourneert de minimumwaarde van het bereiktype.

    1.1.2 Echte typen

    In tegenstelling tot ordinale typen, waarvan de waarden altijd worden toegewezen aan een reeks gehele getallen en daarom absoluut exact worden weergegeven op pc, definiëren de waarden van reële typen een willekeurig getal alleen met enige eindige precisie, afhankelijk van het interne formaat van het reële getal .

    Tabel 1.4 - Reële typen

    In eerdere versies van het type Delphi 1...3 Echt besloeg 6 bytes en had een bereik van waarden van 2,9*10-39 tot 1,7*1038. In versie 4 en 5 is dit type gelijk aan type Dubbele. Gebruik indien nodig (om compatibiliteitsredenen) 6-byte Echt, moet u een compilerrichtlijn opgeven (SREALCOMPATIBILITY ON).

    Zoals uit de tabel blijkt. 1.4 beslaat een reëel getal in Object Pascal 4 tot 10 aaneengesloten bytes en heeft het de volgende structuur in het pc-geheugen.

    Hier is s het tekencijfer van het getal; e - exponentieel deel; bevat binaire volgorde; m is de mantisse van het getal.

    Mantisse m heeft een lengte van 23 (voor enkel) tot 63 (voor Verlengd) binaire bits, wat een nauwkeurigheid van 7...8 garandeert enkel en 19...20 voor Verlengd decimale cijfers. De komma (komma) wordt geïmpliceerd vóór het linker (meest significante) cijfer van de mantisse, maar wanneer op een getal wordt gewerkt, wordt de positie ervan naar links of rechts verschoven in overeenstemming met de binaire volgorde van het getal dat is opgeslagen in het exponentiële deel Daarom worden bewerkingen op reële getallen drijvende-kommaberekeningen (komma's) genoemd.

    Merk op dat de rekenkundige coprocessor getallen altijd in het formaat verwerkt Verlengd, en de drie andere reële typen worden in dit geval verkregen door de resultaten eenvoudigweg af te korten tot de vereiste grootte en worden voornamelijk gebruikt om geheugen te besparen.

    Typen nemen een bijzondere positie in Object Pascal in comp En Munteenheid, die worden behandeld als reële getallen met fractionele delen van een vaste lengte: in comp het fractionele deel heeft een lengte van 0 cijfers, d.w.z. het is eenvoudigweg afwezig, in munteenheid de lengte van het gebroken deel is 4 decimalen. In feite definiëren beide typen een groot geheel getal met teken dat 19...20 significante decimale cijfers opslaat (intern bezetten ze 8 aaneengesloten bytes). Tegelijkertijd in uitdrukkingen comp En munteenheid zijn volledig compatibel met alle andere reële typen: alle reële bewerkingen worden erop gedefinieerd, ze kunnen worden gebruikt als argumenten voor wiskundige functies, enz. Het meest geschikte toepassingsgebied voor deze typen zijn boekhoudkundige berekeningen.

    1.1.3 Datum-tijdtype

    Het datetime-type wordt gedefinieerd door een standaard-ID TDatumTijd en is ontworpen om tegelijkertijd zowel datum als tijd op te slaan. In de interne representatie beslaat het 8 bytes en dergelijke munteenheid is een reëel getal met een vast fractioneel deel: het gehele deel van het getal slaat de datum op, en het fractionele deel slaat de tijd op. De datum wordt gedefinieerd als het aantal dagen dat is verstreken sinds 30 december 1899, en de tijd als het deel van een dag dat is verstreken sinds 0 uur. De waarde 36444.837 komt dus overeen met de datum 11-10-1999 en de tijd 20:05. Het aantal dagen kan negatief zijn, maar waarden kleiner dan -693594 (overeenkomend met de datum 00.00.0000 uit de geboorte van Christus) worden genegeerd door functies voor het converteren van een datum naar een stringtype.

    Bovenstaand gegevenstype TDatumTijd dezelfde bewerkingen worden gedefinieerd als voor reële getallen, en uitdrukkingen van dit type kunnen constanten en variabelen van het type geheel getal en reëel omvatten.

    Omdat het soort TDatumTijd compatibel met het formaat van reële getallen, kunt u eenvoudig een datum bepalen die enkele dagen voor of achter ligt op een bepaalde datum: om dit te doen, volstaat het om respectievelijk het gewenste gehele getal op te tellen of af te trekken van de gegeven datum.

    1.2 Gestructureerde typen

    Elk van de gestructureerde typen (en in Object Pascal zijn er vier: arrays, records, sets en bestanden) wordt gekenmerkt door de veelheid aan elementen die dit type vormen. Elk element kan op zijn beurt tot een gestructureerd type behoren, waardoor we kunnen praten over mogelijke nesting van typen. Object Pascal maakt willekeurige nestdiepte van typen mogelijk, maar de totale lengte van elk van deze in de interne representatie mag niet groter zijn dan 2 GB.

    Voor compatibiliteit met standaard Pascal staat Object Pascal toe dat een gereserveerd woord vóór een gestructureerde typedeclaratie wordt geplaatst verpakt het instrueren van de compiler om waar mogelijk het geheugen op te slaan dat is toegewezen aan objecten van een gestructureerd type; maar de compiler negeert deze instructie feitelijk: het “inpakken” van gegevens in Object Pascal gebeurt waar mogelijk automatisch.

    1.2.1 Arrays

    Arrays in Object Pascal zijn in veel opzichten vergelijkbaar met vergelijkbare gegevenstypen in andere programmeertalen. Een onderscheidend kenmerk van arrays is dat al hun componenten gegevens van hetzelfde type zijn (mogelijk gestructureerd). Deze componenten kunnen eenvoudig worden georganiseerd en elk ervan is eenvoudig toegankelijk door het serienummer op te geven.

    De beschrijving van het arraytype wordt als volgt gespecificeerd:

    <имя типа>= reeks[<сп.инд.типов>] van<тип>;

    Hier<имя типа>- correcte identificatie; reeks, van- gereserveerde woorden (array, van);<сп.инд.типов>- een lijst met een of meer indextypen, gescheiden door komma's; vierkante haken die de lijst omlijsten zijn een syntaxisvereiste;<тип>- elk type object Pascal.

    Alle ordinale typen met een capaciteit van niet meer dan 2 GB kunnen worden gebruikt als indextypen in Object Pascal (d.w.z. behalve LangWoord En Int64)

    De nestdiepte van gestructureerde typen in het algemeen, en bijgevolg van arrays, is willekeurig. Het aantal elementen in de lijst met indextypen (arraygrootte) is dus niet beperkt. De totale lengte van de interne representatie van elke array mag niet groter zijn dan 2 GB. In pc-geheugen volgen array-elementen elkaar op zo'n manier dat bij het verplaatsen van lage naar hoge adressen de meest rechtse index van de array het snelst verandert.

    In Object Pascal kunt u één toewijzingsoperator gebruiken om alle elementen van de ene array over te dragen naar een andere array van hetzelfde type.

    1.2.2 Registratie

    Dossier is een gegevensstructuur die bestaat uit een vast aantal componenten die velden van een record worden genoemd. In tegenstelling tot een array kunnen de componenten (velden) van een record van verschillende typen zijn. Om het mogelijk te maken naar een of ander onderdeel van een record te verwijzen, zijn de velden benoemd.

    De structuur van een berichttypedeclaratie is:

    <имятипа>= opnemen<сп.полей>einde;

    Hier<имя типа>- correcte identificatie; opnemen/einde- gereserveerde woorden (record, einde);<сп.полей>- lijst met velden; is een reeks secties van een record, gescheiden door een puntkomma.

    Elke sectie van een record bestaat uit een of meer veldidentificaties, gescheiden door komma's.

    Aanbod geval...van, waarmee het variantgedeelte wordt geopend, lijkt oppervlakkig op de overeenkomstige selectieoperator, maar speelt in feite alleen de rol van een soort servicewoord dat het begin van het variantgedeelte aangeeft. Daarom moet je aan het einde van het variantgedeelte niet zetten einde als een koppel geval...van. (Aangezien het variantgedeelte altijd het laatste in de plaat is, wordt het nog steeds gevolgd door het einde, maar alleen als paar om op te nemen). Zinselectiesleutel geval...van wordt effectief genegeerd door de compiler: de enige vereiste daarvoor in Object Pascal is dat de sleutel een standaard of vooraf gedeclareerd ordinaal type definieert.

    Veldnamen moeten uniek zijn binnen de record waarin ze worden gedeclareerd. Als de records echter recordvelden bevatten, dat wil zeggen dat ze in elkaar zijn genest, kunnen de namen op verschillende nestniveaus worden herhaald.

    1.2.3 Sets

    Stelt in - dit zijn sets van hetzelfde type objecten die logisch met elkaar verbonden zijn. De aard van de relaties tussen objecten wordt alleen geïmpliceerd door de programmeur en wordt op geen enkele manier gecontroleerd door Object Pascal. Het aantal elementen in een set kan variëren van 0 tot 256 (een set die geen elementen bevat, wordt leeg genoemd). Het is de wisselvalligheid van het aantal elementen waardoor sets verschillen van arrays en records.

    Twee sets worden als gelijkwaardig beschouwd als en slechts als al hun elementen hetzelfde zijn en de volgorde van de elementen in de set onverschillig is. Als alle elementen van de ene set ook in een andere set zijn opgenomen, zeggen ze dat de eerste set in de tweede is opgenomen. Een lege set is opgenomen in elke andere set.

    De omschrijving van het settype is:

    <имя типа>= set van<базовый тип>;

    Hier<имя типа>- correcte identificatie; ingesteld, van- gereserveerde woorden (set, van);<базовый тип>- het basistype van set-elementen, dat elk ordinaal type kan zijn, behalve Woord, geheel getal, longint, int64 .

    Om een ​​set te definiëren wordt de zogenaamde setconstructor gebruikt: een lijst met specificaties van de elementen van de set, gescheiden door komma's; de lijst is omgeven door vierkante haken. Elementspecificaties kunnen constanten of uitdrukkingen van een basistype zijn, of een bereiktype van hetzelfde basistype.

    De interne structuur van de set is zodanig dat aan elk van de elementen één binair cijfer (één bit) wordt toegewezen; als een element in een set is opgenomen, heeft de overeenkomstige bit de waarde 1, anders - 0. Tegelijkertijd is de minimale geheugeneenheid één byte met 8 bits, dus heeft de compiler één byte aan de sets toegewezen, en Als resultaat werd de capaciteit van elk van hen gelijk aan 8 elementen. De maximale capaciteit van de set is 256 elementen. Voor dergelijke sets wijst de compiler 16 aangrenzende bytes toe.

    En nog een experiment: verander het bereik van het basistype naar 1..256. Hoewel de capaciteit van dit type 256 elementen is, zal de compiler bij het compileren van een programma de fout melden: Sets kunnen maximaal 256 elementen bevatten, omdat de nummering van set-elementen vanaf nul begint, ongeacht de ondergrens die in het programma is aangegeven. De compiler staat het gebruik als basistype toe van een geheel getalbereiktype met een minimumgrens van 0 en een maximum van 255, of elk opgesomd type met niet meer dan 256 elementen (de maximale kardinaliteit van een opgesomd type is 65536 elementen).

    1.3 Snaren

    De volgende typen worden gebruikt voor tekstverwerking in Object Pascal:

    korte snaar korteString of tekenreeks [n], waar n<= 255;

    lange snaar snaar ;

    brede lijn BredeString ;

    nul-terminale tekenreeks pchar .

    Wat deze typen gemeen hebben is dat elke string wordt behandeld als een eendimensionale reeks karakters, waarbij het aantal karakters kan veranderen in een lopend programma: voor string [n] verandert de stringlengte van 0 in n, voor snaar En pchar- van 0 tot 2 GB.

    Standaard Pascal gebruikt alleen korte snaren Tekenreeks [n]. In het geheugen wordt aan zo'n string n+i bytes toegewezen, de eerste byte bevat de huidige lengte van de string en de karakters zelf bevinden zich vanaf de 2e byte. Omdat de lengte van de string in dit geval één byte bedraagt, mag de maximale lengte van een korte string niet groter zijn dan 255 tekens. Het standaardtype wordt gebruikt om een ​​korte string met maximale lengte te declareren KorteString(equivalent Snaar).

    Windows maakt veel gebruik van null-terminalstrings, dit zijn tekenreeksen die worden gescheiden door het teken #o. De maximale lengte van zo'n string wordt alleen beperkt door het beschikbare geheugen en kan erg groot zijn.

    Er is een nieuw type geïntroduceerd in de 32-bits versies van Delphi snaar, waarbij de gemakken van beide typen worden gecombineerd. Wanneer u met dit type werkt, wordt het geheugen naar behoefte (dynamisch) toegewezen en wordt het beperkt door het beschikbare geheugen dat beschikbaar is voor het programma.

    1.4 Pointers en dynamisch geheugen

    1.4.1 Dynamisch geheugen

    Dynamisch geheugen- dit is het pc-RAM dat aan het programma wordt verstrekt tijdens de werking ervan. Dynamische gegevensplaatsing betekent het gebruik van dynamisch geheugen direct terwijl het programma draait. Daarentegen wordt statische toewijzing gedaan door de Object Pascal-compiler wanneer het programma wordt gecompileerd. Bij dynamische plaatsing is noch het type, noch de hoeveelheid te plaatsen gegevens vooraf bekend.

    1.4.2 Wegwijzers

    PC RAM is een verzameling cellen voor het opslaan van informatie - bytes, die elk hun eigen nummer hebben. Deze nummers worden adressen genoemd en geven u toegang tot elke byte geheugen. Object Pascal biedt de programmeur een flexibele manier om dynamisch geheugen te beheren - zogenaamde pointers. Een pointer is een variabele die het adres van een byte geheugen als waarde bevat. Met behulp van pointers kunt u elk gegevenstype dat bekend is in Object Pascal in het dynamische geheugen plaatsen. Slechts enkele ervan ( Byte, Char, ShortInt, Booleaanse waarde) bezetten één byte in de interne representatie, de rest - meerdere aangrenzende. Daarom adresseert de pointer eigenlijk alleen de eerste byte aan gegevens.

    Normaal gesproken wordt een pointer geassocieerd met een bepaald gegevenstype. Dergelijke verwijzingen zullen we getypt noemen. Om een ​​getypte pointer te declareren, gebruikt u het pictogram ^, dat vóór het overeenkomstige type wordt geplaatst.

    In Object Pascal kunt u een pointer declareren zonder deze aan een specifiek gegevenstype te hoeven koppelen. Hiervoor wordt het standaardtype gebruikt wijzer, Bijvoorbeeld:

    Dit soort verwijzingen worden ongetypeerd genoemd. Omdat ongetypeerde pointers niet aan een specifiek type zijn gekoppeld, kunnen ze worden gebruikt om dynamisch gegevens toe te wijzen waarvan de structuur en het type veranderen terwijl het programma wordt uitgevoerd.

    Zoals gezegd zijn de waarden van pointers de adressen van variabelen in het geheugen, dus je zou verwachten dat de waarde van de ene pointer aan de andere kan worden doorgegeven. In feite is dit niet helemaal waar. In Object Pascal kunt u alleen waarden doorgeven tussen verwijzingen die aan hetzelfde gegevenstype zijn gekoppeld.

    1.4.3 Dynamisch geheugen toewijzen en vrijmaken

    Al het dynamische geheugen in Object Pascal wordt behandeld als een continue reeks bytes, die een heap wordt genoemd.

    Geheugen voor elke dynamisch toegewezen variabele wordt toegewezen door de New-procedure. De parameter voor het aanroepen van deze procedure is een getypte pointer. Als resultaat van de toegang verkrijgt de pointer een waarde die overeenkomt met het adres waarvandaan gegevens kunnen worden geplaatst. De waarde waarnaar de aanwijzer verwijst, dat wil zeggen de daadwerkelijke gegevens die aan de heap zijn toegewezen, wordt aangegeven door het ^-teken, dat onmiddellijk na de aanwijzer wordt geplaatst. Als er geen ^-teken achter de aanwijzer staat, betekent dit het adres waar de gegevens zich bevinden. Het is zinvol om nog eens na te denken over wat zojuist is gezegd: de waarde van elke aanwijzer is een adres, en om aan te geven dat we het niet over het adres hebben, maar over de gegevens die zich op dit adres bevinden, wordt een ^ achter de pointer (soms wordt dit dereferentie-pointer genoemd).

    Dynamisch toegewezen gegevens kunnen overal in het programma worden gebruikt waar deze geldig zijn voor constanten en variabelen van het juiste type

    Dynamisch geheugen kan niet alleen uit de heap worden gehaald, maar ook worden teruggestuurd. Gebruik hiervoor de afvoerprocedure. Operators bijvoorbeeld

    Verwijderen(pJ);

    Verwijderen(pR);

    zal het geheugen dat eerder was toegewezen aan de pJ- en pR-aanwijzers terugbrengen naar de heap (zie hierboven).

    Merk op dat de Dispose (pPtr)-procedure de waarde van de pPtr-pointer niet verandert, maar alleen het geheugen dat eerder aan deze pointer was gekoppeld, naar de heap retourneert. Het opnieuw toepassen van de procedure op een vrije aanwijzer resulteert echter in een runtimefout. De programmeur kan de vrijgekomen pointer markeren met het gereserveerde woord nul.

    1.5 Typ aliassen

    Voor elk type kunt u zoveel aliassen declareren als u wilt. Bijvoorbeeld:

    TMyInteger = geheel getal;

    In de toekomst kan de alias op dezelfde manier worden gebruikt als het basistype:

    Mylnt: TMyInteger;

    Mylnt:= 2*Rond(pi);

    Dit soort aliassen worden meestal gebruikt om de zichtbaarheid van programmacode te verbeteren. In Object Pascal kunt u echter sterk getypeerde aliassen declareren door het gereserveerde woordtype vóór de naam van het basistype toe te voegen:

    TMyIntegerType = type geheel getal;

    MylntVar: TMyIntegerType;

    Vanuit het standpunt van de compiler zijn getypte aliassen compatibel met het basistype in verschillende soorten expressies, maar ze declareren feitelijk een nieuw gegevenstype, zodat ze niet kunnen worden gebruikt als formele parameters voor het aanroepen van subroutines in plaats van het basistype. Als er bijvoorbeeld een procedure wordt gedeclareerd

    functie MylntFunc(Apar: geheel getal): geheel getal;

    dan zo'n beroep op haar

    MylntFunc(MylntVar)

    zal door de compiler als foutief worden beschouwd.

    Sterk getypeerde aliassen dwingen de compiler om runtime-type-informatie (RTTI) te genereren. Deze informatie wordt doorgaans door de Delphi-omgeving gebruikt om de werking van verschillende soorten editors te ondersteunen.