Algemeen beeld van het algoritme in algoritmische taal. Algoritmische taal - een formele taal die wordt gebruikt om algoritmen te schrijven, implementeren of leren

Algoritmische taal op school

Algoritmische taal(ook Russische algoritmische taal, PARADISE) is een programmeertaal die wordt gebruikt voor het schrijven en leren van algoritmen. In de studie van de informatica op scholen, de zogenaamde. algoritmische taal op school (educatieve algoritmische taal), met woorden in het Russisch die begrijpelijk zijn voor de student. In tegenstelling tot de meeste programmeertalen, is de algoritmische taal niet gebonden aan de architectuur van de computer en bevat het geen details met betrekking tot de structuur van de machine.

Voorbeelden van

Een algoritme in een algoritmische taal wordt over het algemeen geschreven in de vorm:

alg algoritme naam (argumenten en resultaten) gegeven Toepasselijkheidsvoorwaarden van het algoritme nodig het doel van het algoritme vroeg beschrijving van tussenliggende waarden | volgorde van commando's (lichaam van het algoritme) tegenhouden

In het record van het algoritme waren trefwoorden meestal onderstreept of vetgedrukt. Om logische blokken te markeren, werden inspringingen gebruikt en de gepaarde woorden van het begin en einde van het blok werden verbonden door een verticale lijn.

Een voorbeeld van het berekenen van de kwadratensom:

alg Som van de kwadraten ( arg intact N, snee intact S) gegeven| n> 0 nodig| S = 1 * 1 + 2 * 2 + 3 * 3 + ... + n * n vroeg intact ik | invoer N; S: = 0 | nts voor i van 1 tot n | | S: = S + ik * ik | kts | gevolgtrekking"S =", S tegenhouden

E-workshop

Om de theoretische studie van programmeren in een algoritmische taal te versterken, creëerden de specialisten van de Faculteit Mechanica en Wiskunde van de Staatsuniversiteit van Moskou in 1985 een editor-compiler "E-workshop"("E" - ter ere van Ershov), waarmee u programma's in een algoritmische taal kunt invoeren, bewerken en uitvoeren.

In 1986 werd een reeks educatieve werelden (artiesten) vrijgegeven voor de "E-workshop": "Robot", "Draftsman", "Two-leg", "All-terrain vehicle", waarmee u eenvoudig de concepten kunt introduceren van het algoritme. "E-workshop" werd geïmplementeerd op computers: Yamaha, Corvette, UKSC en werd wijdverbreid.

Deze programmeertaal werd voortdurend verfijnd en een beschrijving van een latere versie van de "E-workshop" verscheen in het leerboek van 1990. Het programmeersysteem "Kumir" ("Set van educatieve werelden"), dat dit leerboek ondersteunt, werd in 1990 uitgegeven door de onderneming "InfoMir". De taal van dit systeem wordt ook wel "Kumir" genoemd.

In 1995 werd "Kumir" aanbevolen door het Ministerie van Onderwijs van de Russische Federatie als het belangrijkste lesmateriaal voor de cursus "Fundamentals of Informatics and Computer Engineering", gebaseerd op de leerboeken van A.G. Kushnirenko, G.V. Lebedev en R.A. Svoren. ...

Kritiek

Er moet echter worden opgemerkt dat een algoritmische taal, bij gebrek aan details die deze rechtstreeks verbinden met de architectuur van een computer, niettemin, verwijzend naar Algol-achtige talen, schoolkinderen impliciet leert te vertrouwen op de Von Neumann-architectuur van machines. (De Von Neumann-architectuur is een praktische implementatie van een eerder idee genaamd de Turing Machine. Er zijn andere ideeën naast het Turing-idee. De meest populaire daarvan is de Lambda-calculus: het werd uitgewerkt door Alonzo Church. De Lisp-machine is een architectuur die is gebaseerd op Lambda-calculus.)

Links

  • AP Ershov. Algoritmische taal in de schoolcursus van de basis van informatica en computertechnologie. 05/07/1985
  • Forum over Russische programmeertalen en ontwikkeltools

Wikimedia Stichting. 2010.

Zie wat "Algoritmische taal op school" is in andere woordenboeken:

    Algoritmische taal is een formele taal die wordt gebruikt om algoritmen te schrijven, te implementeren of te leren. Elke programmeertaal is een algoritmische taal, maar niet elke algoritmische taal is geschikt om als taal te gebruiken ... ... Wikipedia

    Deze term heeft andere betekenissen, zie Algoritmische taal. Educatieve algoritmische taal is een formele taal die wordt gebruikt om algoritmen te schrijven, te implementeren en te leren. In tegenstelling tot de meeste programmeertalen, is het niet gebonden aan ... Wikipedia

    Deze term heeft andere betekenissen, zie Draak (het ondubbelzinnig maken) . Een voorbeeld van een blokdiagram van een algoritme in de DRAGON-taal draak van een DRAGON-schema (Friendly Russian Algorithmic Language That Provides Visibility) visueel ... ... Wikipedia

    Educatieve programmeertaal Een programmeertaal die is ontworpen om les te geven. Zo werden talen als BASIC en Pascal ontwikkeld. Ontwikkeld om te leren, groeide de ABC-taal uit Python. Populaire taal, ... ... Wikipedia

    Dit artikel wordt ter verwijdering voorgesteld. U kunt een verklaring van de redenen en de bijbehorende discussie vinden op de Wikipedia-pagina: Te verwijderen / 28 september 2012. Hoewel het discussieproces niet is voltooid, kan het artikel ... Wikipedia

    Algoritmische taal (ook wel de Russische algoritmische taal, PARADISE) is een programmeertaal die wordt gebruikt om algoritmen vast te leggen en te bestuderen. In de studie van de informatica op scholen, de zogenaamde. algoritmische school ... ... Wikipedia

    Deze term heeft andere betekenissen, zie Idool. Kumir ... Wikipedia

    Edumandriva ... Wikipedia

    - (Set van educatieve werelden of Mira Kushnirenko) een programmeersysteem dat is ontworpen om de initiële cursussen informatica en programmeren op middelbare en middelbare scholen te ondersteunen. Gebaseerd op een methodologie ontwikkeld in de tweede helft van de jaren 80 ... ... Wikipedia

Boeken

  • Programmeren in de algoritmische taal Kumir onder redactie van AG Kushnirenko, Anelikova L., Gusev O .. Deze handleiding is bedoeld voor docenten en studenten ter ondersteuning van de initiële cursussen informatica en programmeren op middelbare, middelbare en middelbare scholen. ... Het behandelt de belangrijkste stappen en ...

Meestal zijn instructies geschreven in een algoritmische taal. Het is noodzakelijk voor het nauwkeurig voorschrijven van alle stappen en hun uitvoering. Er zijn duidelijke verschillen tussen de algoritmische taal van de school en programmeertalen. In de regel fungeert niet alleen een computer als uitvoerder in de eerste versie, maar ook een ander apparaat dat in staat is om werk uit te voeren. Elk programma dat in een algoritmische taal is geschreven, hoeft niet door technologie te worden gedaan. De uitvoering van alle instructies in de praktijk is een zuiver vak apart. Hieronder wordt ook een beschrijving van het algoritme in algoritmische taal beschouwd. Het zal u helpen de structuur van dit systeem te begrijpen.

Studeren op school

Algoritmische taal wordt vaak op scholen onderwezen, het best bekend als taalonderwijs. Het is wijdverbreid geworden vanwege het feit dat het woorden gebruikt die voor elke student het meest begrijpelijk zijn. Een vergelijkbare taal met syntaxis in het Russisch werd lang geleden geïntroduceerd, namelijk in het midden van de jaren tachtig. Het werd gebruikt om schoolkinderen een basis te geven en hen een cursus informatica te leren zonder computer. Deze taal werd in 1985 gepubliceerd in een van de leerboeken. Het werd ook meerdere keren herdrukt voor speciale boeken die bedoeld waren om les te geven in de klassen 9 en 10. De totale oplage van de publicatie was 7 miljoen exemplaren.

Opnamevolgorde van algoritme

Allereerst moet u de ALG-lettercombinatie opschrijven. De naam van het algoritme volgt. Dan, na de NACH, moet je een reeks commando's beschrijven. Operator KOH betekent het einde van het programma.

Beschrijving van het algoritme in algoritmische taal:

ALG Bedrijf

BEGIN

draai 90 graden naar links

KOH

Bij het schrijven moeten trefwoorden worden onderstreept of vetgedrukt. Om logische blokken aan te geven, moet u inspringen gebruiken, en als er gepaarde woorden van het begin en einde zijn, moet u de verticale balk gebruiken, die de verbinding aangeeft.

Compilatie van algoritmen

Oude notities kunnen worden gebruikt om nieuwe instructies op te stellen. Dergelijke instructies worden hulpinstructies genoemd. Een soortgelijk algoritme kan elk van de eerder beschreven algoritmen zijn. Het is ook mogelijk dat in dit systeem een ​​extra algoritme wordt toegepast, dat zelf een verwijzing naar hulpsystemen heeft gekregen.

Vaak is het bij het maken van een instructie nodig om slechts één algoritme als extra algoritme te gebruiken. Daarom kunnen opnamen vaak complex en omslachtig zijn. Maar het is vermeldenswaard dat de mogelijkheid om een ​​referentie te maken gemakkelijker is dan dezelfde records meerdere keren te herschrijven.

Daarom wordt in de praktijk vaak gebruik gemaakt van een standaard hulpalgoritme, dat voortdurend ondergeschikt is aan de gebruiker. Er kan naar de instructie worden verwezen, zowel naar zichzelf als naar iemand anders. Algoritmische taalcommando's zijn ontworpen voor dergelijke acties. Deze instructies worden recursief genoemd.

De opdracht zelfbinden bevindt zich in het systeem zelf. Deze recursie is rechttoe rechtaan. Een indirecte is er een waarbij het algoritme wordt aangeroepen in een andere hulpinstructie.

Algoritmen, die een bepaalde volgorde van instructies hebben, kunnen voortdurend veranderen, afhankelijk van de resultaten van de uitvoering van speciale onderdelen van het programma. Dergelijke systemen worden vertakkingssystemen genoemd. Om ze te maken, moet je een speciaal branch-commando gebruiken. Het heeft een verkort en volledig spellingschema. Het is niet ongebruikelijk om cyclische algoritmen te zien die specifieke opdrachten meerdere keren uitvoeren.

E-workshop

Om de studie van theorie in de grammaticale taal te verbeteren, hebben de professionals van de Faculteit der Mechanica en Wiskunde van de Staatsuniversiteit van Moskou in 1985 een speciale compiler gemaakt. Het kreeg de naam "E-workshop". Met zijn hulp was het mogelijk om programma's in te voeren, te wijzigen en uit te voeren. Het jaar daarop werd een specifieke reeks artiesten uitgebracht. We hebben het over "Robot", "Draftsman", "Two-legged", "All-terrain vehicle". Dit maakte het mogelijk om de algoritmen eenvoudig en gemakkelijk te implementeren. Deze compiler is erg populair geworden en is op sommige computers gebruikt. Deze programmeertaal is al geruime tijd verfijnd en veranderd. In 1990 verscheen een latere versie ervan in een leerboek.

idool

Nu beleeft de algoritmische taal van de school zijn wedergeboorte, nadat een speciaal pakket "Idol" is ontwikkeld voor Windows en Linux. Het systeem werkt met meerdere performers. Klassiekers onder hen zijn "Robot", "Draftsman". Hetzelfde pakket is opgenomen in het School Linux-installatiebestand. Dit systeem is speciaal ontwikkeld in opdracht van de Russische Academie van Wetenschappen. Het wordt gratis en vrij verspreid. De afgelopen jaren is de beschreven taal actief voorgesteld om in het examen te worden gebruikt als een van de

Taalopdracht

De algoritmische taal wordt gebruikt om een ​​vrij groot aantal problemen op te lossen. Het is geschikt om zowel wiskunde als oefeningen in andere vakken onder de knie te krijgen. Opgemerkt moet worden dat het ook wordt gebruikt om het voor schoolkinderen gemakkelijker te maken soortgelijke onderwerpen te bestuderen.

Verschillen tussen machinetalen en algoritmische talen

De meest bekende vertegenwoordiger van machine-afhankelijke talen is "Assembler". Tijdens het programmeren erop moet een persoon de vertaler, dankzij speciale operators, duidelijk aangeven welke geheugencellen moeten worden gevuld of overgedragen. Omdat de syntaxis van "Assembler" zo dicht mogelijk bij de computervorm van schrijven ligt, is het vrij moeilijk om het te bestuderen. Daarom wordt algoritmische taal onderwezen op school, maar ook aan het begin van het lesgeven in programmeren in het eerste jaar van het hoger onderwijs.

Standaard functies

De algoritmische taal heeft speciale standaardfuncties die de status "ingebouwd" hebben gekregen. Het is dankzij hen dat u gemakkelijk veel bewerkingen met getallen en uitdrukkingen kunt schrijven zonder routinematige invoer uit te voeren. Het algoritmische taalprogramma is vrij eenvoudig. Met standaardfuncties kunt u vierkantswortel, logaritmen, modulus enzovoort berekenen. De meest populaire ingebouwde methoden zijn als volgt:

  • absolute module abs (X);
  • vierkantswortel sqrt (X);
  • natuurlijk en ln (X), Ig (X);
  • minimum en maximum min (X, Y), max (X, Y);
  • trigonometrische functies sin (X), cos (X), tg (X), ctg (X).

Dankzij dit kan elke programmeur of gewoon iemand die leert werken met een algoritmische taal gemakkelijk een wiskundig probleem schrijven zonder toevlucht te nemen tot de uitvinding van de fiets. Er moet dus worden opgemerkt dat deze taal behoorlijk gebruiksvriendelijk is. Het is eenvoudig te begrijpen en ook zo gemakkelijk te begrijpen als mogelijk. Het was niet voor niets opgenomen in het schoolcurriculum. Schoolkinderen bestuderen het graag.

Algoritmische programmeertaal- een formele taal die wordt gebruikt voor het schrijven, implementeren en leren van algoritmen. In tegenstelling tot de meeste programmeertalen, is de algoritmische taal niet gebonden aan de architectuur van de computer en bevat het geen details met betrekking tot de structuur van de machine.

Om de basisprincipes van algoritmisering te bestuderen, de zogenaamde Russische algoritmische taal(school algoritmische taal), met woorden in het Russisch die begrijpelijk zijn voor de student.

Een algoritme-achtige algoritmische taal met Russische syntaxis werd halverwege de jaren tachtig in gebruik genomen door academicus A.P. Ershov, als basis voor een "machineloze" informatica-cursus.

De belangrijkste functiewoorden van de algoritmische taal

Algoritmebeschrijving

  • alg(algoritme)
  • arg(argument)
  • snee(resultaat)
  • vroeg(start) - het begin van het algoritme
  • tegenhouden(einde) - einde van het algoritme
  • gegeven- initiële gegevens in welke vorm dan ook
  • nodig- het doel van het algoritme

Gegevenstypen:

  • intact(geheel)
  • dingen(echt)
  • Sim(karakter)
  • litas(letterlijk) - tekenreeks
  • log(logisch)
  • tabblad(tabel) - om een ​​array aan te duiden
  • lengtes(lengte) - aantal array-elementen

Conditie aanduiding

  • als
  • anders
  • keuze
  • betekenis

Cyclusnotatie

  • nts(begin van de cyclus)
  • kts(einde cyclus)
  • doei

Booleaanse functies en waarden voor het construeren van expressies

Invoer uitvoer

  • invoer
  • gevolgtrekking

Algemeen beeld van het algoritme

1
2
3
4
5
6

alg algoritme naam (argumenten en resultaten)
| gegeven Toepasselijkheidsvoorwaarden van het algoritme
| nodig het doel van het algoritme
vroeg beschrijving van tussenliggende waarden
| volgorde van commando's (lichaam van het algoritme)
tegenhouden

Een deel van het algoritme van het woord alg naar het woord vroeg de titel genoemd, en het gedeelte tussen de woorden vroeg en tegenhouden- het lichaam van het algoritme.

In een zin alg achter de naam van het algoritme tussen haakjes staan ​​de kenmerken ( arg, snee) en waardetype ( intact, dingen, Sim, litas of log) van alle input (argumenten) en output (resultaten) variabelen. Bij het beschrijven van arrays (tabellen) wordt een speciaal woord gebruikt tabblad, aangevuld met grensparen voor elke index van de array-elementen.

In het algoritmerecord zijn trefwoorden meestal onderstreept of vetgedrukt. Om logische blokken te markeren, wordt inspringing toegepast en gepaarde woorden aan het begin en einde van het blok worden verbonden met een verticale lijn.

Basis algoritmische structuren

Een gedetailleerde beschrijving van de belangrijkste algoritmische structuren wordt in dit artikel gegeven. Hieronder staan ​​de sjablonen voor het samenstellen van deze structuren in een algoritmische taal.
onvolledige vork

| als voorwaarde
| | dan acties
| allemaal

volledige vork

1
2
3
4
5

| als voorwaarde
| | dan actie 1
| | anders actie 2
| allemaal

vertakking

1
2
3
4
5
6
7
8

| keuze parameter
| | op betekenis waarde 1
| | | actie 1
| | op betekenis waarde 2
| | | actie 2
| | anders
| | | standaard acties
| allemaal

Lus met voorwaarde

| nc doei voorwaarde
| | acties
| kts

Loop met postconditie

Een computer kan een programma alleen uitvoeren als de instructies erin worden weergegeven in binaire machinecode, d.w.z. uitgedrukt in een taal waarvan het alfabet bestaat uit logische enen en nullen. Voor de eerste computers werden programma's rechtstreeks in machinecodes gecompileerd, wat hoge kwalificaties van programmeurs en hoge arbeidskosten vereiste, daarom begon al in de jaren 40 de ontwikkeling van programmeertalen, die in hun vocabulaire zo dicht mogelijk bij elkaar zouden komen naar de natuurlijke taal van de mens. Dergelijke programmeertalen worden genoemd algoritmisch.

Een tussenstap naar de ontwikkeling van algoritmische talen was de taal Assembler... In Assembler worden instructies niet weergegeven door binaire getallen, maar als combinaties van tekens (ezelsbruggetjes), die kunnen worden gebruikt om de betekenis van de opdracht te reproduceren, waardoor de moeilijkheden en nadelen van programmeren in machinetaal aanzienlijk worden geëlimineerd. Assembler heeft echter ook nadelen: het is een machinegerichte taal en voor elke computer wordt een eigen assembleertaal gemaakt. Programmeren in Assembler vereist dat een programmeur een goede kennis heeft van de architectuur (apparaat) van een computer en gaat gepaard met aanzienlijke arbeidskosten, terwijl u tegelijkertijd juist met de hulp van Assembler optimaal gebruik kunt maken van de computer bronnen in een programma (geheugen, snelheid), daarom is Assembler nog steeds wijdverbreid onder professionele programmeurs.

De eerste algoritmische taal was: fortran, opgericht in 1957. door IBM-specialisten onder leiding van John Backus. Er zijn nu veel algoritmische talen: Pascal, C, Algol, PL1, Basic, Lisp, Prolog en vele anderen.

Algoritmische talen en assemblers zijn symbolische codeertalen, d.w.z. naar talen die niet met machinecodes werken, maar met conventionele symbolische notaties, daarom kunnen programma's die in deze talen zijn geschreven niet rechtstreeks op een computer worden uitgevoerd. Om zo'n programma te laten werken, moet de tekst ervan worden omgezet in machinecodes. Hiervoor zijn er speciale vertaalprogramma's (vertalers). Er zijn 2 soorten vertalers - compiler en tolk. Compiler zendt het hele programma in één keer uit, en pas daarna is uitvoering mogelijk. Tolk is een eenvoudiger vertaler, het vertaalt programma-instructies sequentieel en voert het ook in delen uit.

21) De structuur van het programma in C / C++.

Een C++ programma bestaat uit: functies , beschrijvingen en preprocessor richtlijnen ... Een van de functies moet een naam hebben voornaamst ... De uitvoering van het programma begint met de eerste instructie van deze functie. De eenvoudigste functiedefinitie heeft het volgende formaat:


In de regel wordt een functie gebruikt om een ​​waarde te berekenen, daarom wordt het type aangegeven vóór de naam van de functie. Hieronder staan ​​enkele van de belangrijkste kenmerken die u moet weten:

  • als de functie geen waarde moet retourneren, wordt het void-type aangegeven:
  • de body van de functie is een blok en staat daarom tussen accolades;
  • functies kunnen niet worden genest;
  • elke instructie eindigt met een puntkomma (behalve voor samengestelde instructies).

Een voorbeeld van de opbouw van een programma met de functies main, fl en f2:

Het programma kan bestaan ​​uit meerdere modules (bronbestanden).

Een paar opmerkingen over I / O in C ++

C ++ heeft geen ingebouwde I / O - het wordt gedaan met behulp van de functies, typen en objecten in de standaardbibliotheken. Er worden twee manieren gebruikt: functies die zijn overgenomen van de C-taal en C++-objecten.

Basis C-stijl I / O-functies:

int scanf (const char * formaat, ...) // input
int printf (const char * formaat, ...) // output

Ze voeren geformatteerde invoer en uitvoer uit van een willekeurig aantal waarden volgens de formaatreeks. De format string bevat karakters die bij uitvoer naar de stream (naar het scherm) worden gekopieerd of bij invoer uit de stream (van het toetsenbord) worden opgevraagd, en conversiespecificaties die beginnen met een%-teken die bij invoer worden vervangen door specifieke waarden en uitvoer.

Een voorbeeldprogramma met C-stijl I / O-functies:

#erbij betrekken
int hoofd () (
int ik;
printf ("Voer een geheel getal \ n in");
scanf ("% d", & i);
printf ("Je hebt het aantal% d ingevoerd, bedankt!", i);
retourneer 0;
}

De eerste regel van dit programma is een preprocessor-richtlijn, volgens welke een headerbestand in de programmatekst wordt ingevoegd met een beschrijving van de invoer- / uitvoerfuncties die in het programma worden gebruikt (in dit geval zijn punthaken een taalelement). Alle preprocessor-richtlijnen beginnen met een #-teken.

De derde regel is de beschrijving van een integer-variabele met de naam i.

De printf-functie op de vierde regel drukt de prompt "Voer een geheel getal in" af en gaat verder naar een nieuwe regel volgens de \ n escape-reeks. De scanf-functie plaatst een geheel getal ingevoerd vanaf het toetsenbord in de variabele i (het &-teken betekent de bewerking van het verkrijgen van een adres), en de volgende instructie toont de gespecificeerde string op het scherm, ter vervanging van de conversiespecificatie
op de waarde van dit nummer.

En zo ziet hetzelfde programma eruit met de C++ klassenbibliotheek:

#erbij betrekken
int hoofd () (
int ik;
cout<< "Введите целое число\ N"; cin >> ik;
cout<< "Вы ввели число " << i << ", спасибо!";
retourneer 0;
}

Header-bestand bevat een beschrijving van een reeks klassen voor het beheren van I / O. Het definieert de standaard stream-objecten cin voor toetsenbordinvoer en cout voor uitvoer naar het scherm, evenals streambewerkingen.< < и чтения из потока >>.

22) Het alfabet en identifiers in de C / C ++ taal.

ALFABET
Latijnse letters in hoofdletters en kleine letters en onderstrepingsteken;
Arabische cijfers van 0 tot 9;
witruimtetekens: spatie, tabs, nieuwe regeltekens.
speciale tekens:

Taallexemen worden gevormd uit de symbolen van het alfabet:
identificatiemiddelen;
sleutelwoorden (gereserveerd);
operatie tekenen;
constanten;
scheidingstekens (haakjes, punt, komma, witruimte).

IDENTIFICATIES
De identifier kan Latijnse letters, cijfers en onderstrepingstekens gebruiken;
Hoofdletters en kleine letters zijn verschillend;
Het eerste teken van een identifier kan een letter of een onderstrepingsteken zijn, maar geen cijfer;
Spaties binnen namen zijn niet toegestaan;
De lengte van een identifier wordt niet beperkt door de standaard, maar sommige compilers en linkers leggen er limieten op;
De identifier mag niet hetzelfde zijn als trefwoorden;
Het wordt niet aanbevolen om identifiers te beginnen met een onderstrepingsteken (ze kunnen samenvallen met de namen van systeemfuncties of variabelen);
Over identifiers die worden gebruikt om externe variabelen te definiëren;
Er zijn linkerbeperkingen (het gebruik van verschillende linkers of linkerversies stelt verschillende eisen aan de namen van externe variabelen).

C++ trefwoorden

23) Integer-gegevenstypen in C / C ++.

Een integer gegevenstype is ontworpen om gewone gehele getallen in het computergeheugen weer te geven. Het belangrijkste en meest voorkomende gehele type is het type int... De variëteiten worden veel minder vaak gebruikt: kort(kort geheel getal) en lang(lang geheel getal). Integer-typen omvatten ook het type char(karakter). Bovendien kunt u, indien nodig, het type lang Lang(lang-lang!), die, hoewel niet gedefinieerd door de standaard, door veel C++-compilers wordt ondersteund. Standaard zijn alle typen gehele getallen iconisch, d.w.z. het meest significante bit in dergelijke getallen bepaalt het teken van het getal: 0 is een positief getal, 1 is een negatief getal. Naast ondertekende nummers in C ++, kunt u gebruik maken van niet ondertekend... In dit geval zijn alle cijfers betrokken bij de vorming van een geheel getal. Bij het beschrijven van niet-ondertekende integer-variabelen, wordt het woord niet ondertekend(niet ondertekend).

Overzichtstabel van ondertekende integer-gegevenstypen:

Data type Grootte, bytes Bereik van waarden
char -128 ... 127
kort -32768 ... 32767
int -2147483648 ... 2147483647
lang -2147483648 ... 2147483647
lang Lang -9223372036854775808 ... 9223372036854775807

Overzichtstabel van niet-ondertekende integer-gegevenstypen:

Data type Grootte, bytes Bereik van waarden
Ongetekend char 0 ... 255
niet-ondertekende short 0 ... 65535
unsigned int (je kunt gewoon unsigned) 0 ... 4294967295
niet ondertekend lang 0 ... 4294967295
niet ondertekend lang lang 0 ... 18446744073709551615

Het is nauwelijks de moeite waard om de grenswaarden te onthouden, vooral voor gehele getallen van 4 of 8 bytes, het is voldoende om op zijn minst te weten in welke volgorde deze waarden kunnen zijn, bijvoorbeeld type int- ongeveer 2 · 10 9.

In de praktijk wordt aanbevolen om overal het basistype integer te gebruiken, d.w.z. int... Het punt is dat gegevens van het basistype gehele getallen bijna altijd sneller worden verwerkt dan gegevens van andere typen gehele getallen. korte soorten ( char, kort) zijn geschikt voor het opslaan van grote reeksen getallen om geheugen te besparen, op voorwaarde dat de waarden van de elementen de limiet voor deze typen niet overschrijden. Lange typen zijn nodig in een situatie waar er niet genoeg type is int.

24) Echte gegevenstypen in de C / C ++ -taal.

Een kenmerk van echte (reële) getallen is dat ze bijna altijd bij benadering in het computergeheugen worden opgeslagen, en bij het uitvoeren van rekenkundige bewerkingen op dergelijke gegevens stapelt zich een rekenfout op.

Er zijn drie echte gegevenstypen: vlot, dubbele en lange dubbele... Het hoofdtype wordt beschouwd: dubbele... Dus alle wiskundige functies werken standaard met het type dubbele... De onderstaande tabel toont de belangrijkste kenmerken van echte typen:

Een type lange dubbele is momenteel over het algemeen hetzelfde als het type dubbele en wordt in de praktijk meestal niet gebruikt. Bij gebruik van oudere 16-bits compilers, gegevens zoals: lange dubbele zijn 10 bytes groot en zijn nauwkeurig tot 19 cijfers achter de komma.

Het wordt aanbevolen om overal alleen het type te gebruiken dubbele... Het is altijd sneller om mee te werken, er is minder kans op een merkbaar verlies aan nauwkeurigheid bij een groot aantal berekeningen. Een type vlot kan alleen nuttig zijn voor het opslaan van grote arrays, op voorwaarde dat dit type voldoende is om de taak op te lossen.

25) Karaktergegevenstype in C / C ++.

Er is geen gegevenstype in de C++-standaard dat als echt symbolisch kan worden beschouwd. Om symbolische informatie weer te geven, zijn er twee soorten gegevens die geschikt zijn voor dit doel - dit zijn: char en wchar_t, hoewel beide typen inherent integer-typen zijn. U kunt bijvoorbeeld het teken "A" nemen en dit delen door het cijfer 2. Trouwens, wat gebeurt er? Hint: spatieteken. Voor "normale" tekentypes, zoals Pascal of C #, zijn rekenkundige bewerkingen op tekens verboden.

Een type char gebruikt om tekens weer te geven in overeenstemming met het ASCII-coderingssysteem (American Standard Code for Information Interchange). Dit is een code van zeven bits, het is voldoende om 128 verschillende tekens te coderen met codes van 0 tot 127. Tekens met codes van 128 tot 255 worden gebruikt om nationale lettertypen, pseudo-grafische tekens, enz. te coderen.

Een type wchar_t is ontworpen om te werken met een set tekens waarvoor 1 byte niet genoeg is, bijvoorbeeld Unicode. Typegrootte wchar_t is meestal 2 bytes. Als het programma stringconstanten zoals . moet gebruiken wchar_t, dan worden ze geschreven met het voorvoegsel L bijv. L "Woord".

26) De toewijzingsoperator en de lege operator in C / C ++

Toewijzingsoperator is de meest voorkomende operator. Het doel is om een ​​nieuwe waarde toe te kennen aan een variabele. Er zijn drie vormen van deze operator in C++.

1)Eenvoudige toewijzingsoperator zo geschreven:

variabele = uitdrukking;

Deze operator werkt als volgt: eerst wordt de uitdrukking die rechts van het bewerkingssymbool is geschreven, geëvalueerd = (gelijk), dan wordt het resultaat toegewezen aan de variabele links van het teken = ... Het type resultaat moet hetzelfde zijn als het type van de variabele die links is geschreven, of ernaar herleidbaar zijn.

Links van het bord = er kan alleen een variabele zijn, aan de rechterkant kun je zowel een constante als een variabele schrijven en, in het algemeen, een uitdrukking van elke complexiteit.

Voorbeeld van operators

y = x + 3 * r;

s = zonde (x);

2)Meerdere opdrachten- in zo'n statement krijgen achtereenvolgens van rechts naar links meerdere variabelen dezelfde waarde, bijvoorbeeld:

a = b = c = 1;

Zo kun je bijvoorbeeld direct bepalen dat in een gelijkzijdige driehoek alle zijden gelijk zijn aan hetzelfde getal 1. Bovenstaande operator komt overeen met de opeenvolgende uitvoering van drie operatoren:

Natuurlijk is het voor ons gemakkelijker om één operator te schrijven, niet drie. Het programma is korter, de tekst ziet er natuurlijker uit en deze constructie werkt iets sneller.

3)Opdracht tijdens het uitvoeren van een bewerking in algemene vorm is het als volgt geschreven:

variabele op_sign = expressie;

en is gelijk aan schrijven

variabele = variabele op_sign expressie;

Bijvoorbeeld de exploitant:

s+ = 5; // 1e optie

doet hetzelfde als operator

s = s + 5; // 2e optie

namelijk: neem de oude waarde van de variabele s, voeg er het nummer aan toe 5 en schrijf de resulterende waarde terug naar de variabele s.

Zoals u kunt zien, is het record van de 1e variant korter dan het record van de 2e variant en wordt het sneller uitgevoerd, omdat in de 1e variant het adres van de variabele s wordt 1 keer berekend en in de 2e variant - twee keer.

Lege operator

Een lege verklaring is een verklaring die niets doet. Waarom heb je een "nutteloze" operator nodig?

Een lege operator wordt gebruikt in gevallen waarin het volgens de syntaxis van de taal vereist is om een ​​operator op te schrijven, maar volgens de logica van het programma gaan we niets doen. Dus een lege instructie kan nodig zijn in een branch-instructie als er niets op een branch hoeft te worden gedaan, ook om een ​​label te definiëren voor een sprong in de programmatekst, en soms voor een lege lus-body.

Een lege operator is een enkel teken ; (puntkomma), bijvoorbeeld:

c = een + b; ;

Hier is het eerste karakter ; (puntkomma) voltooit de toewijzingsverklaring en het tweede teken geeft ons gewoon een lege verklaring. In deze situatie is een lege operator helemaal niet nodig (maar het is ook geen syntaxisfout!), Het wordt alleen ter verduidelijking verstrekt. Meer "redelijke" voorbeelden van het gebruik van de lege operator zullen later in de gerelateerde onderwerpen worden gegeven.

27) Rekenkundige bewerkingen in C / C ++.

Dit zijn de meest gebruikte bewerkingen. Hun betekenis ligt dicht bij wat het bekend is van een wiskundecursus. Laten we ze dus op een rijtje zetten:

De prioriteit van optellen en aftrekken is lager dan die van vermenigvuldigen, delen en rest. Om de volgorde van de berekening te wijzigen, gebruikt u haakjes, bijvoorbeeld om te vermenigvuldigen met 2 de som van twee getallen EEN en B je kan schrijven:

Verder. Zoals u kunt zien aan de verkregen resultaten, is in C ++ één teken / betekent twee verschillende bewerkingen. Als een of beide operanden reëel zijn, wordt de gewone deling uitgevoerd, als beide operanden gehele getallen zijn, wordt de gehele deling uitgevoerd en is het resultaat van het type geheel getal. Het gebruik van deze bewerking vereist extra zorg, bijvoorbeeld als u de berekening van een wiskundige uitdrukking programmeert

letterlijk, d.w.z. Dus:

1/3 * zonde (2 * X)

dan het resultaat ongeacht de waarde x zal altijd nul zijn, aangezien de uitdrukking 1/3 betekent hele afdeling. Om het probleem op te lossen, volstaat het om een ​​van de operanden echt te maken

1,0 / 3 * zonde (2 * X)

De bewerking van het berekenen van de rest ( % ) is alleen van toepassing op gehele operanden.

Teken verandering... Unaire operatie " - "Betekent een tekenverandering. Zoals je kunt zien aan de algemene tabel van alle bewerkingen, heeft het een zeer hoge prioriteit - hoger dan bijvoorbeeld de vermenigvuldigingsbewerking. Daarom, in de uitdrukking

eerst wordt het teken veranderd voor EEN en dan vermenigvuldigen -EEN op de B.

Voor het koppelen is er ook een bewerking unaire plus, d.w.z. kan schrijven

Voor welke doeleinden moet ik het gebruiken? Het is moeilijk te zeggen. Maar zo'n mogelijkheid is er.

Interessanter, en vooral heel gebruikelijk, zijn de bewerkingen voor automatisch verhogen en automatisch verlagen.



Algoritme. Algoritmische taal op school.

Algoritme - een nauwkeurige en begrijpelijke instructie aan de uitvoerder om een ​​reeks acties uit te voeren die gericht zijn op het oplossen van de toegewezen taak.

  • De naam "algoritme" komt van de Latijnse vorm van de naam van de Centraal-Aziatische wiskundige al-Khwarizmi - Algorithmi. Algoritme is een van de basisconcepten van informatica en wiskunde.


Uitvoerder van algoritme is een abstract of reëel (technisch, biologisch of biotechnisch) systeem dat in staat is om de door het algoritme voorgeschreven acties uit te voeren.

  • De uitvoerder wordt gekenmerkt door:

  • Woensdag;

  • elementaire handelingen;

  • commando systeem;

  • weigeringen.

  • woensdag(of omgeving) is de "habitat" van de artiest.

  • Commando systeem... Elke artiest kan alleen commando's uitvoeren uit een bepaalde strikt gespecificeerde lijst - het commandosysteem van de artiest. Voor elk commando moeten toepasselijkheidsvoorwaarden worden gespecificeerd (in welke toestanden van de omgeving het commando kan worden uitgevoerd) en de resultaten van het uitvoeren van het commando moeten worden beschreven.

  • Na het aanroepen van de opdracht, voert de uitvoerder de juiste elementaire actie.

  • weigeringen uitvoerder optreden als een opdracht wordt aangeroepen wanneer de omgevingsstatus daarvoor ongeldig is.


De belangrijkste eigenschappen van de algoritmen zijn als volgt:

  • Begrijpelijkheid voor de uitvoerder - d.w.z. de uitvoerder van het algoritme moet weten hoe het moet worden uitgevoerd.

  • Discretie(discontinuïteit, scheiding) - d.w.z. het algoritme moet het proces van het oplossen van het probleem voorstellen als een opeenvolgende uitvoering van eenvoudige (of eerder gedefinieerde) stappen (fasen).

  • Zekerheid- d.w.z. elke regel van het algoritme moet duidelijk en ondubbelzinnig zijn en geen ruimte laten voor willekeur. Vanwege deze eigenschap is de uitvoering van het algoritme mechanisch van aard en vereist het geen aanvullende instructies of informatie over het probleem dat wordt opgelost.

  • effectiviteit(of ledemaat). Deze eigenschap bestaat erin dat het algoritme in een eindig aantal stappen tot de oplossing van het probleem moet leiden.

  • massa karakter... Dit betekent dat het algoritme voor het oplossen van het probleem in een algemene vorm is ontwikkeld, d.w.z. het zou van toepassing moeten zijn op een bepaalde klasse van problemen die alleen verschillen in de initiële gegevens. In dit geval kunnen de initiële gegevens worden geselecteerd uit een bepaald gebied, dat het gebied van toepasbaarheid van het algoritme wordt genoemd.


Algoritme presentatievormen:

  • verbaal (records in natuurlijke taal);

  • grafisch (afbeeldingen van grafische symbolen);

  • pseudocodes (semi-geformaliseerde beschrijvingen van algoritmen in een voorwaardelijke algoritmische taal, met inbegrip van zowel programmeertaalelementen als natuurlijke taalzinnen, algemeen aanvaarde wiskundige notatie, enz.);

  • software (teksten in programmeertalen).


verbale manier Algoritmerecords zijn een beschrijving van de opeenvolgende stadia van gegevensverwerking. Het algoritme is in vrije vorm in natuurlijke taal gezet.

  • Bijvoorbeeld. Noteer het algoritme voor het vinden grootste gemene deler (gg) twee natuurlijke getallen. Het algoritme kan als volgt zijn:

  • stel twee nummers in;

  • als de getallen gelijk zijn, neem dan een van hen als antwoord en stop, anders ga je verder met het algoritme;

  • bepaal de grootste van de getallen;

  • vervang de grootste van de getallen door het verschil tussen de grotere en kleinere getallen;

  • herhaal het algoritme vanaf stap 2.


In een grafische presentatie wordt het algoritme weergegeven als een opeenvolging van onderling verbonden functionele blokken, die elk overeenkomen met de uitvoering van een of meer acties.

  • Zo'n grafische voorstelling wordt een algoritmediagram genoemd of blokdiagram.


Pseudocode is een systeem van notatie en regels ontworpen voor een uniforme notatie van algoritmen.

    De pseudocode accepteert niet de strikte syntactische regels voor het schrijven van commando's die inherent zijn aan formele talen, wat het gemakkelijker maakt om een ​​algoritme te schrijven in de ontwerpfase en het mogelijk maakt om een ​​bredere reeks commando's te gebruiken die zijn ontworpen voor een abstracte uitvoerder. Pseudocode bevat echter meestal enkele constructies die inherent zijn aan formele talen, wat het gemakkelijker maakt om van schrijven in pseudocode over te gaan naar het schrijven van een algoritme in een formele taal. Vooral in pseudocode zijn er, net als in formele talen, functiewoorden waarvan de betekenis voor eens en voor altijd wordt bepaald. Ze zijn vetgedrukt in gedrukte tekst en onderstreept in handgeschreven tekst. Er is geen enkele of formele definitie van pseudocode, daarom zijn er verschillende pseudocodes mogelijk, die verschillen in de reeks servicewoorden en basisconstructies.

  • Een voorbeeld van pseudocode is een algoritmische schooltaal in Russische notatie (school AY),


Basis service woorden


Algemeen beeld van het algoritme:

  • alg algoritme naam (argumenten en resultaten)

  • gegeven Toepasselijkheidsvoorwaarden van het algoritme

  • nodig het doel van het algoritme

  • vroeg beschrijving van tussenliggende waarden

  • opdrachtvolgorde (body

  • algoritme)


Een deel van het algoritme van het woord alg naar het woord vroeg genaamd rubriek vroeg en tegenhouden - lichaam algoritme.

  • Een deel van het algoritme van het woord alg naar het woord vroeg genaamd rubriek , en het gedeelte tussen woorden vroeg en tegenhouden - lichaam algoritme.

  • In een zin alg nadat de naam van het algoritme tussen haakjes is aangegeven specificaties: (arg, res) en waardetype (int, thing, sim, lit of logboek) van alles invoer (argumenten) en weekend (resultaten) variabelen... Bij het beschrijven van arrays (tabellen) wordt een speciaal woord gebruikt tabblad aangevuld door grens paren voor elke index van de array-elementen.


AY-teams op school

  • Toewijzingsoperator... Dient voor het evalueren van uitdrukkingen en het toewijzen van hun waarden aan variabelen. Algemene vorm: A: = B, waarbij het teken ": =" het commando betekent vervang de vorige waarde van de variabele aan de linkerkant, door de berekende waarde van de uitdrukking aan de rechterkant.

  • Bijvoorbeeld a: = (b + c) * sin (Pi/4); ik: = ik + 1.

  • Voor gegevensinvoer en -uitvoer: gebruik commando's

  • invoer variabele namen

  • gevolgtrekking variabele namen, uitdrukkingen, teksten.

  • voor vertakking commando's toepassen als en keuze, voor cycli organiseren - teams voor en doei


Een voorbeeld van het opnemen van een algoritme op een schooltaal

  • alg Som van de kwadraten ( arg intact N, intact gesneden S)

  • gegeven| n> 0

  • nodig| S = 1 * 1 + 2 * 2 + 3 * 3 + ... + n * n

  • intact I

  • invoer N; S: = 0

  • nts voor I van 1 voordat n S: = S + ik * i

  • gevolgtrekking"S =", S


Algoritmen kunnen worden gezien als sommige structuren, bestaande uit afzonderlijke basiselementen (d.w.z. basiselementen).

  • 1. Basis structuur volgend .


2. Basis structuur vertakking .

  • Structuur vertakking bestaat in vier hoofdvarianten:

  • als iets;

  • als-dan-anders;

  • keuze;

  • keuze is anders.


2. Basis structuur vertakking .


2. Basis structuur vertakking .


3. Basis structuur fiets.

  • biedt meervoudige uitvoering een reeks acties, die wordt genoemd lichaam van de cyclus.


Welke concepten worden gebruikt door algoritmische talen

  • Taalconcept gedefinieerd in interactie syntactisch en semantisch reglement. syntactisch regels laten zien hoe een bepaald concept wordt gevormd uit andere concepten en letters van het alfabet, en semantisch regels definiëren de eigenschappen van een bepaald concept


De basisconcepten in algoritmische talen zijn meestal als volgt.

  • namen (identificatiecodes) - worden gebruikt om programma-objecten aan te geven(variabelen, arrays, functies, enz.).

  • Activiteiten ... Soorten operaties:

  • rekenkundig bewerkingen +, -, *, / en anderen. ;

  • denkspelletje activiteiten en, of, niet;

  • activiteiten relatie , = , = , ;

  • operatie koppelingen(anders "aaneenschakeling", "aaneenschakeling") tekenwaarden van elkaar met de vorming van één lange reeks; weergegeven door een "+" teken.

  • Gegevens - waarden verwerkt door het programma... Er zijn drie hoofdtypen gegevens: constanten, variabelen en arrays.

  • constanten- dit zijn gegevens die in de tekst van het programma zijn vastgelegd en niet veranderen tijdens de uitvoering ervan.

  • Voorbeelden van constanten:

    • numeriek 7.5, 12;
    • denkspelletje Ja(waar) , Nee(Aan het liegen);
    • symbolisch"A", "+";
    • literair"abcde", "computerwetenschap", "" (lege tekenreeks).
  • Overboekingen worden aangeduid met namen en kunnen hun waarden wijzigen tijdens de uitvoering van het programma. Overschrijvingen zijn gehele getallen, echt, logisch, symbolisch en letterlijk.

  • Arrays zijn reeksen van elementen van hetzelfde type, waarvan het aantal vast is en één naam krijgt. De positie van een element in de array wordt op unieke wijze bepaald door zijn indices (één, in het geval van een eendimensionale array, of meerdere, als de array multidimensionaal is). Arrays worden soms tafels.


Uitdrukkingen

  • Uitdrukkingen - zijn bedoeld voor het uitvoeren van de nodige berekeningen, ze bestaan ​​uit constanten, variabelen, functiewijzers (bijvoorbeeld exp (x)), verenigd door bewerkingstekens.

  • Uitdrukkingen worden geschreven als lineaire tekenreeksen(zonder subscript- en superscripttekens, "multi-level" breuken, enz.), waarmee u ze in de computer kunt invoeren door achtereenvolgens op de overeenkomstige toetsen op het toetsenbord te drukken.

  • Onderscheid maken tussen uitdrukkingen rekenkundig, logisch en string.

  • Rekenkundige uitdrukkingen worden gebruikt om een ​​enkele numerieke waarde te definiëren... Bijvoorbeeld (1 + zonde (x)) / 2. De waarde van deze uitdrukking bij x = 0 is 0,5, en bij x = p / 2 - één.

  • Booleaanse uitdrukkingen beschrijven enkele voorwaarden waaraan al dan niet kan worden voldaan.... Een booleaanse uitdrukking kan dus maar twee waarden aannemen - "waar" of " Aan het liegen" (Ja of Nee). Beschouw als voorbeeld de logische uitdrukking x * x + y * y "true", en voor x = 2, y = 2, r = 1 - "Aan het liegen".

  • De waarden van string (letterlijke) uitdrukkingen - teksten... Ze kunnen letterlijke constanten, letterlijke variabelen en letterlijke functies bevatten, gescheiden door het teken van de aaneenschakeling. A + B betekent bijvoorbeeld het toevoegen van regel B aan het einde van regel A. Als A = "struik", en B = "groente", dan is de betekenis van de uitdrukking A + B " groene struik ".

  • Operators (commando's). Een operator is het grootste en meest betekenisvolle concept van de taal: elke operator is een volledige zin van de taal en definieert een volledig compleet stadium van gegevensverwerking. De samenstelling van de operators omvat:

  • trefwoorden;

  • gegevens;

  • uitdrukkingen, enz.

  • Operators zijn onderverdeeld in uitvoerbare en niet-uitvoerbare. Niet-uitvoerbaar Operators worden gebruikt om de gegevens- en programmastructuur te beschrijven, en uitvoerbaar- om verschillende acties uit te voeren (bijvoorbeeld een toewijzingsoperator, invoer- en uitvoeroperatoren, voorwaardelijke operator, lusoperatoren, procedure-operator, enz.).


Berekeningen van veelgebruikte functies worden uitgevoerd via subroutines genaamd standaard functies die zijn voorgeprogrammeerd en ingebouwd in de taalvertaler.


Tabel met standaardfuncties van de algoritmische taal op school


  • U kunt constanten, variabelen en expressies gebruiken als argumenten voor functies. Bijvoorbeeld: zonde (3.05) min (a, 5)

  • zonde (x) min (a, b)

  • zonde (2 * y + t / 2) min (a + b, a * b)

  • zonde ((exp (x) +1) ** 2)

  • min (min (a, b),

  • min (c, d))


Rekenkundige uitdrukkingen worden geschreven volgens de volgende regels:

  • Je kunt het vermenigvuldigingsteken tussen factoren niet weglaten en twee bewerkingstekens naast elkaar zetten.

  • De indices van array-elementen zijn geschreven tussen vierkante (school AY, Pascal) of ronde (Basic) haakjes.

  • Om variabelen aan te duiden, worden letters van het Latijnse alfabet gebruikt.

  • Bewerkingen worden uitgevoerd in volgorde van prioriteit: eerst de berekening van functies, dan de machtsverheffing, dan vermenigvuldigen en delen, en als laatste optellen en aftrekken.

  • Bewerkingen van één anciënniteit worden van links naar rechts uitgevoerd... A / b * c komt bijvoorbeeld overeen met a / b * c. In de school AY is er echter een een uitzondering van deze regel: machtsverheffen worden van rechts naar links uitgevoerd. Dus de uitdrukking 2 ** (3 ** 2) op school AY wordt berekend als 2 ** (3 ** 2) = 512. In de QBasic-taal wordt de analoge uitdrukking 2 ^ 3 ^ 2 berekend als (2 ^ 3) ^ 2 = 64. En in de taal Pascal de machtsverheffing wordt helemaal niet gegeven, in Pascal wordt x ^ y geschreven als exp (y * ln (x)), en x ^ y ^ z als exp (exp (z * ln (y)) * ln (x) ).


Voorbeelden van het schrijven van rekenkundige uitdrukkingen


Typische fouten bij het schrijven van uitdrukkingen:

  • a + zonde x

  • (a + b) / c ** 3



Voorbeelden van het schrijven van logische expressies die waar zijn wanneer aan de opgegeven voorwaarden wordt voldaan.


Schrijf op volgens de regels van de algoritmische taal van uitdrukkingen:


  • a + b / c + 1;

  • a ** b ** c / 2;

  • a / b / c / d * p * q;

  • 4/3 * 3,14 * r ** 3;

  • d * c / 2 / R + een ** 3;