Hvilke funktionsord bruges i algoritmen. Algoritmisk sprog - et formelt sprog, der bruges til at skrive, implementere eller studere algoritmer

Optagelse af en algoritme i et algoritmisk (formelt) sprog kaldes et program. Nogle gange identificeres selve begrebet en algoritme med dens notation, så ordene "algoritme" og "program" er næsten synonyme. En lille forskel er, at når man nævner en algoritme, betyder de normalt den grundlæggende idé om dens konstruktion, som er fælles for alle algoritmiske sprog. Programmet er altid forbundet med at skrive algoritmen på et bestemt formelt sprog.

Når du præsenterer ideen om en algoritme, for eksempel når du udgiver den i en videnskabelig artikel, er det ikke altid tilrådeligt at bruge et specifikt programmeringssprog for ikke at rode præsentationen med uvæsentlige detaljer. I sådanne tilfælde der anvendes uformelt algoritmisk sprog, så tæt på naturligt som muligt. Denne type sprog kaldes pseudokode. Det er ikke svært for en specialist at omskrive et program fra pseudokode til et bestemt programmeringssprog. At skrive en algoritme i pseudokode er ofte klarere og mere visuelt; det giver dig mulighed for frit at vælge detaljeringsgraden, fra en beskrivelse i meget generelle vendinger til en detaljeret præsentation.

Pseudokoder er semi-formaliserede beskrivelser af algoritmer baseret på betinget algoritmisk sprog, herunder både elementer af et programmeringssprog og naturlige sprogsætninger, generelt accepterede matematiske notationer og mere.

Pseudokode er et system af notationer og regler designet til ensartet at skrive algoritmer.

Pseudokode indtager en mellemplads mellem naturligt sprog og programmeringssprog. På den ene side er det tæt på almindeligt, naturligt sprog, så algoritmer kan skrives og læses i det som almindelig tekst. På den anden side bruger pseudokode nogle formelle konstruktioner og matematisk symbolik, som bringer algoritmenotationen tættere på den generelt accepterede matematiske notation.

Pseudokode indeholder normalt nogle konstruktioner, der er hjemmehørende i programmeringssprog. Dette letter overgangen fra at skrive i pseudokode til at skrive algoritmen i et programmeringssprog til en bestemt computer. Især i pseudokode såvel som i programmeringssprog er der funktionsord, hvis betydning bestemmes én gang for alle. De står med fed skrift i trykt tekst og er understreget i håndskrevet tekst.

Generel visning af algoritmen:

alg navn på algoritmen (argumenter og resultater)

givet betingelser for anvendelighed af algoritmen

nødvendig formålet med algoritmen

starten beskrivelse af mellemmængder

rækkefølge af kommandoer(algoritmens krop)

En del af algoritmen fra ordet alg til ordet starten kaldes overskriften og delen mellem ordene starten Og kon - algoritmens krop.

I en sætning alg efter navnet på algoritmen er karakteristika (arg, res) og værditype (heltal, ting, sim, lit eller log) for alle input (argumenter) og output (resultater) variabler angivet i parentes. Ved beskrivelse af arrays (tabeller) bruges et særligt ord fanen, suppleret med grænsepar ved hvert array-elementindeks.

Eksempel sætninger alg :

alg Volumen og areal af cylinderen (arg ting R, H, res ting V, S)

alg Rødder KvUr ( arg ting a, b, c, res ting x1, x2, lys t)

alg Ekskluder element ( arg heltal N, arg res ting fane A)

alg Diagonal ( arg heltal N, arg hele fane A, lyser igen Svar)

Tilbud givet Og nødvendig ikke påkrævet. Det anbefales at nedskrive udsagn, der beskriver tilstanden af ​​miljøet for algoritmeudøveren, for eksempel:

alg Erstatning (arg lit Str1, Str2, arg res lit tekst)

givet | længderne af understrengene Str1 og Str2 er de samme

brug for | Overalt i tekstlinjen er understrengen Str1 erstattet af Str2

alg Antal maksima (arg int N, arg ting fane A, res int K)

givet | N>0

brug for | K - antallet af maksimale elementer i tabel A

alg Modstand (args ting R1, R2, args int N, res ting R)

givet | N>5, R1>0, R2>0

brug for | R - kredsløbsmodstand

Her i sætninger givet Og nødvendig efter tegnet "|". kommentarer optaget. Kommentarer kan placeres i slutningen af ​​enhver linje. De behandles ikke af oversætteren, men gør algoritmen meget lettere at forstå.

Grundlæggende funktionsord i det algoritmiske sprog:

alg (algoritme) sim (symbolsk) givet for ja

arg (argument) lit (bogstaveligt) nødvendigt fra no

rez (resultat) log (logisk) hvis før hvornår

start (begyndelse) fane (tabel) og derefter valg af værdi

end (slut) nc (start af cyklus) ellers og input

int (heltal) kts (ende af sløjfe) alt eller output

ting (rigtig) længde (længde) endnu ikke godkendt

Grundlæggende kommandoer:

1. Tildelingskommando. Bruges til at evaluere udtryk og tildele deres værdier til variabler. Generel form: A:= B, hvor er skiltet ":=" betyder en kommando til at erstatte den tidligere værdi af variablen på venstre side med den beregnede værdi af udtrykket på højre side.

For eksempel: a:= (b+c) * sin(Pi/4); i:= i+1.

Input og output kommandoer.

input variabelnavne (tastaturinput)

konklusion variabelnavne, udtryk, tekster. (viser data på skærmen)

Forgreningskommandoer.

Disse kommandoer giver, afhængigt af resultatet af kontrol af betingelsen (ja eller nej), valget af en af ​​de alternative måder at betjene algoritmen på. Hver sti fører til et fælles output, så algoritmen vil fortsætte med at køre, uanset hvilken sti der vælges.

Forgreningsstrukturen kommer i fire hovedvariationer:

1. Hold hvis så;

Hvis tilstand

At handlinger

2. Hold hvis - så - ellers;

Hvis tilstand

At handlinger 1

Ellers handlinger 2

3. Hold valg;

Valg

betingelse 1: handlinger 1

betingelse 2: handlinger 2

. . . . . . . . . . . .

betingelse N: handlinger N

4. Hold valg er anderledes.

Valg

betingelse 1: handlinger 1

betingelse 2: handlinger 2

. . . . . . . . . . . .

betingelse N: handlinger N

Ellers handlinger N+1

Cyklus kommandoer.

Giver gentagen udførelse af et bestemt sæt handlinger, som kaldes løkkens krop.

Der er to kommandoer til at organisere loops:

1. Løkketype Farvel - Beordrer løkkens krop, der skal udføres, så længe betingelsen skrevet efter ordet er opfyldt Farvel.

nc Farvel tilstand

løkke krop

(sekventering)

kts

2. Løkketype Til - Instruerer at udføre loop-legemet for alle værdier af en bestemt variabel (loop-parameter) i et givet område.

nc Til jeg fra i1 Før i2

løkke krop

(sekventering)

kts

PROGRAMMERINGSSPROG

I øjeblikket er der flere hundrede faktisk brugte programmeringssprog i verden. Hver har sit eget anvendelsesområde.

Enhver algoritme er, som vi ved, en sekvens af instruktioner, hvorefter du kan flytte fra de oprindelige data til resultatet i et begrænset antal trin. Afhængig af detaljeringsgraden af ​​instruktionerne bestemmes niveauet af programmeringssproget normalt - jo færre detaljer, jo højere niveau på sproget.

Programmeringssprog(algoritmisk sprog) - et sæt regler, der bestemmer hvilke sekvenser af symboler der udgør et program (syntaktiske regler) og hvilke beregninger programmet beskriver (semantiske regler).

Programmeringssprog har følgende egenskaber:

  • Sprogniveau - kendetegnet ved kompleksiteten af ​​problemer løst ved hjælp af dette sprog.
  • Sprogets magt - kendetegnet ved antallet og mangfoldigheden af ​​problemer, algoritmer til løsning, som kan skrives ved hjælp af dette sprog.
  • Pålidelighed - sproget skal give et minimum af fejl, når du skriver programmer. Desuden skal sproget være sådan, at forkerte programmer er svære at skrive.
  • Læsbarhed b - menneskers lette opfattelse af programmer. Denne egenskab er vigtig under teamwork, hvor flere arbejder med de samme programtekster.
  • Fuldstændighed - kendetegner evnen til at beskrive en klasse af problemer inden for et bestemt fagområde.
  • Fleksibilitet - karakteriserer letheden af ​​at udtrykke nødvendige handlinger.

Baseret på dette kriterium kan følgende niveauer af programmeringssprog skelnes:

  • maskine;
  • maskinorienterede (montører);
  • maskinuafhængig (højt niveau sprog).

Maskinsprog og maskinorienterede sprog er sprog på lavt niveau, der kræver specificering af fine detaljer om databehandlingsprocessen. Højniveausprog efterligner på den anden side naturlige sprog ved at bruge nogle talte sprogord og almindelige matematiske symboler. Disse sprog er mere menneskevenlige.

Sprog på højt niveau er opdelt i:

  • proceduremæssig (algoritmisk)(Basic, Pascal, C osv.), som er beregnet til en utvetydig beskrivelse af algoritmer; For at løse et problem kræver proceduresprog, at proceduren for at løse det er eksplicit skrevet ned i en eller anden form;
  • hjerne teaser ( Prolog, Lisp osv. ) , som ikke fokuserer på at udvikle en algoritme til løsning af et problem, men på en systematisk og formaliseret problembeskrivelse, således at løsningen følger af den kompilerede beskrivelse;
  • objektorienteret(Objekt Pascal, C++, Java osv.), som er baseret på konceptet om et objekt, der kombinerer data og handlinger på os. Et program i et objektorienteret sprog, der løser et bestemt problem, beskriver i det væsentlige en del af verden relateret til dette problem. At beskrive virkeligheden i form af et system af interagerende objekter er mere naturligt end i form af interagerende procedurer.

Oprettelse af et computerprogram omfatter følgende trin:

§ analyse;

§ design;

§ programmering;

§ test og fejlretning;

§ udnyttelse.

Til dato er der seks generationer af programmeringssprog. Hver af de efterfølgende generationer er kvalitativt anderledes i sin funktionelle kapacitet fra den forrige.

  • Første generation: Maskinsprog. Dukkede op i midten af ​​40'erne af det XX århundrede.
  • Anden generation: Montører. Faktisk er det de samme maskinsprog, men smukkere "indpakket". Dukkede op i slutningen af ​​50'erne af det XX århundrede
  • Tredje generation: Procedursprog. Dukkede op i begyndelsen af ​​60'erne af det XX århundrede. Denne generation inkluderer universelle sprog på højt niveau, ved hjælp af hvilke du kan løse problemer fra ethvert område (for eksempel Algol-60).
  • Fjerde generation: Sprog til at understøtte komplekse datastrukturer(f.eks. SQL). Dukkede op i slutningen af ​​60'erne af det XX århundrede.
  • Femte generation: Kunstig intelligens sprog(f.eks. Prolog). Dukkede op i begyndelsen af ​​70'erne af det XX århundrede.
  • Sjette generation: Neurale netværkssprog(selvlærende sprog). Forskningsarbejdet på dette område begyndte i midten af ​​80'erne af det 20. århundrede.

KONKLUSION

For at en computer kan udføre enhver opgave, skal den udføre et specifikt program. Programmet skal være skrevet efter strenge regler, i en form, der er tilgængelig for behandling på en computer. Sådan et regelsæt kaldes et programmeringssprog eller algoritmisk sprog. Ved at kende det generelle princip om at konstruere og skrive computerprogrammer, kan du løse næsten ethvert problem, der er nødvendigt i arbejdet med informationsbehandling.

Undervisningsministeriet i Den Russiske Føderation Perm State Technical University

Institut for informationsteknologi og automatiserede systemer

Vikentyeva O.L.

Forelæsningsnoter til kurset "Algorithmic languages ​​and programmering" (Grundlæggende om C++ sproget, 1. semester)

Introduktion

Første semester dækker de grundlæggende konstruktioner af C-sproget og grundlæggende programmeringsteknologi (struktureret programmering).

Struktureret programmering er en teknologi til at skabe programmer, der gør det muligt, ved at følge visse regler, at reducere udviklingstiden og antallet af fejl, samt at lette muligheden for at ændre programmet.

1.1. Algoritme og program

En algoritme er en præcis forskrift, der definerer en beregningsproces, der går fra variable startdata til det endelige resultat, dvs. det er en opskrift på at nå et mål.

Et sæt værktøjer og regler til at præsentere en algoritme i en form, der er egnet til udførelse af en computer, kaldes et programmeringssprog; en algoritme skrevet på dette sprog kaldes et program.

Først udvikles der altid en handlingsalgoritme, og derefter skrives den på et af programmeringssprogene. Programteksten behandles af specielle hjælpeprogrammer - oversættere. Programmeringssprog er kunstige sprog. De adskiller sig fra naturlige sprog i det begrænsede antal "ord" og meget strenge regler for at skrive kommandoer (operatører). Helheden af ​​disse krav danner programmeringssprogets syntaks, og betydningen af ​​hver konstruktion danner dens semantik.

1.2.Algorithmens egenskaber

1. Masseskala: Algoritmen skal ikke anvendes på ét problem, men på en hel klasse af lignende problemer (en algoritme til løsning af en andengradsligning skal løse ikke kun én ligning, men alle andengradsligninger).

2. Effektivitet: Algoritmen skal føre til opnåelse af et resultat i et bestemt antal trin (når man dividerer 1 med 3, opnås den periodiske brøk 0,3333(3); for at opnå det endelige resultat er det nødvendigt at angive nøjagtigheden af ​​at opnå denne brøkdel med 4 decimaler).

3. Sikkerhed (determinisme) - hver handling af algoritmen skal være forståelig for dens udførende (instruktioner til et husholdningsapparat på japansk for en person, der ikke taler japansk, er ikke en algoritme, fordi de ikke har egenskaben determinisme).

4. Diskrethed - processen skal beskrives ved hjælp af udelelige

operationer udført i hvert trin (dvs. trin kan ikke opdeles i mindre trin).

Algoritmer kan præsenteres i følgende former:

1) verbal beskrivelse af algoritmen.

2) grafisk beskrivelse af algoritmen.

3) ved hjælp af et algoritmisk programmeringssprog

1.2. Kompilatorer og tolke

MED Ved hjælp af et programmeringssprog oprettes en tekst, der beskriver en tidligere kompileret algoritme. For at få et fungerende program skal du oversætte denne tekst til en sekvens af processorkommandoer, hvilket gøres ved hjælp af specielle programmer kaldet oversættere. Der er to typer oversættere: oversættere og tolke. Compileren oversætter teksten fra et kildemodul til maskinkode, kaldet et objektmodul, i én kontinuerlig proces. Samtidig scanner den først programmets kildekode på jagt efter syntaksfejl. Fortolkeren udfører kildeprogrammodulet i operatør-for-operatør-tilstand, iht

arbejdets fremskridt, oversættelse af hvert udsagn til maskinsprog.

1.3.Programmeringssprog

Forskellige typer processorer har forskellige instruktionssæt. Hvis et programmeringssprog er fokuseret på en bestemt type processor og tager hensyn til dets funktioner, så kaldes det et lavniveau programmeringssprog. Det laveste sprog er assemblersprog, som blot repræsenterer hver maskinkodeinstruktion i form af specielle symbolske notationer kaldet mnemonics. Ved at bruge lavniveausprog skabes der meget effektive og kompakte programmer, da udvikleren får adgang til alle processorens muligheder. Fordi Da instruktionssættene til forskellige processormodeller også er forskellige, har hver processormodel sit eget assemblersprog, og et program skrevet i det kan kun bruges i dette miljø. Lignende sprog bruges til at skrive små systemapplikationer, enhedsdrivere osv.

Programmeringssprog på højt niveau tager ikke højde for funktionerne i specifikke computerarkitekturer, så de oprettede programmer på kildeniveau kan nemt overføres til andre platforme, hvis der er oprettet passende oversættere til dem. At udvikle programmer på højt niveau sprog er meget nemmere end på maskinsprog.

Sprog på højt niveau er:

1. Fortran var det første kompilerede sprog skabt i 50'erne af det 20. århundrede. Den implementerede en række vigtige programmeringskoncepter. Et stort antal biblioteker er blevet skabt til dette sprog, lige fra statistiske komplekser til satellitkontrol, så det bliver ved med at blive brugt i mange organisationer.

2. COBOL er et kompileret sprog til økonomiske beregninger og løsninger. forretningsproblemer, udviklet i begyndelsen af ​​60'erne. Cobol leverede meget kraftfulde værktøjer til at arbejde med store mængder data gemt på eksterne medier.

3. Pascal - skabt til sidst 70'erne af den schweiziske matematiker Niklaus Wirth specielt til undervisning i programmering. Det giver dig mulighed for at udvikle algoritmisk tænkning, bygge et kort, letlæseligt program, demonstrere grundlæggende algoritmiseringsteknikker, og det er også velegnet til implementering af store projekter.

4. BASIC - oprettet i 60'erne også til undervisning i programmering. Der findes både oversættere og tolke til det, og det er et af de mest populære programmeringssprog.

5. C blev skabt i 70'erne og blev oprindeligt ikke betragtet som et masseprogrammeringssprog. Det var planlagt at erstatte assembler, for at kunne skabe lige så effektive og korte programmer, men ikke være afhængig af en specifik processor. Det ligner Pascal på mange måder og har yderligere hukommelsesmuligheder. Mange applikations- og systemprogrammer er skrevet i det, såvel som Unix-operativsystemet.

6. C++ er en objektorienteret udvidelse af C-sproget, skabt af Bjarne Stroustrup i 1980.

7. Java er et sprog, der blev skabt af Sun i begyndelsen 90'erne baseret på C++. Det er designet til at forenkle udviklingen af ​​C++-applikationer ved at eliminere funktioner på lavt niveau. Hovedtræk ved sproget er, at det ikke er kompileret til maskinkode, men til platformsuafhængig bytekode (hver kommando optager en byte). Denne kode kan udføres ved hjælp af en fortolker kaldet Java Virtual Machine (JVM).

2. Struktur af et C++ program

C-programmet har følgende struktur: #preprocessor-direktiver

. . . . . . . . .

#preprocessor direktiver funktion a()

operatører fungerer i ()

operatører

void main () //funktion, med hvilken programudførelse starter operatører

beskrivelser

afleveringer

funktion tom sætning

sammensatte

overgang

Preprocessor-direktiver - styr transformationen af ​​programtekst, før den kompileres. Det originale program, udarbejdet i SI i form af en tekstfil, gennemgår 3 behandlingstrin:

1) preprocessor tekstkonvertering;

2) kompilering;

3) layout (redigering af links eller samling).

Efter disse tre trin genereres programmets eksekverbare kode. Opgaven med at præpro-

processor - konvertering af teksten i et program, før det kompileres. Reglerne for forbehandling bestemmes af programmøren ved hjælp af præprocessor-direktiver. Direktivet starter med #. For eksempel,

1) #define - angiver erstatningsreglerne i teksten. #define NUL 0,0

Betyder, at enhver brug af navnet NUL i programmet vil blive erstattet

2) #inkluder< имя заголовочного файла>- er beregnet til medtagelse i programteksten af ​​tekst fra "Header files"-biblioteket, der leveres med standardbiblioteker. Hver C-biblioteksfunktion har en tilsvarende beskrivelse i en af ​​header-filerne. Listen over header-filer er defineret af sprogstandarden. Brugen af ​​include-direktivet inkluderer ikke den tilsvarende standard hagesmæk

bibliotek, men giver dig kun mulighed for at indsætte beskrivelser fra den angivne overskriftsfil i programmets tekst. Bibliotekskoderne er inkluderet på sammenkoblingsstadiet, det vil sige efter kompilering. Selvom header-filer indeholder alle beskrivelser af standardfunktioner, er det kun de funktioner, der bruges i programmet, der er inkluderet i programkoden.

Når forbehandlingen er afsluttet, er der ikke et eneste forbehandlerdirektiv tilbage i programteksten.

Et program er et sæt af beskrivelser og definitioner og består af et sæt funktioner. Blandt disse funktioner skal der altid være en funktion kaldet main. Uden det kan programmet ikke køres. Før funktionsnavnet placeres information om den type værdi, funktionen returnerer (resultattype). Hvis funktionen ikke returnerer noget, så er void-typen angivet: void main(). Hver funktion, inklusive hoved, skal have et sæt parametre; den kan være tom, så (ugyldig) er angivet i parentes.

Efter funktionsoverskriften er funktionsteksten. Brødteksten af ​​en funktion er en sekvens af definitioner, beskrivelser og eksekverbare sætninger omgivet af krøllede klammeparenteser. Hver definition, beskrivelse eller udsagn ender med et semikolon.

Definitioner - indfør objekter (et objekt er et navngivet hukommelsesområde, et specialtilfælde af et objekt er en variabel), der er nødvendige for at repræsentere de behandlede data i programmet. Eksempler er

int y = 10; //navngivet konstant float x ; //variabel

Beskrivelser - underret compileren om egenskaberne og navnene på objekter og funktioner beskrevet i andre dele af programmet.

Operatører - bestemme handlingerne i programmet på hvert trin i dets udførelse.

Eksempel på et C-program:

#omfatte //forbehandlerdirektivet

Kontrolspørgsmål

1. Hvilke dele består et C++-program af?

2. Hvordan adskiller en definition sig fra en annonce?

3. Liste stadierne i at oprette et eksekverbart program i C++.

4. Hvad er en præprocessor?

5. Hvad er et præprocessordirektiv? Giv eksempler på præprocessor-direktiver.

6. Skriv et program, der udskriver teksten "Mit første C++ program"

2. Grundlæggende midler til SI++-sproget 2.1 Sprogets sammensætning

I en tekst på ethvert naturligt sprog er der fire hovedelementer: symboler, ord, sætninger og sætninger. Et algoritmisk sprog indeholder også sådanne elementer, kun ord kaldes leksemer (elementære konstruktioner), sætninger kaldes udtryk, og sætninger kaldes operatorer. Tokens er dannet af symboler, udtryk fra tokens og symboler, operatorer fra symboler af udtryk og tokens (fig. 1.1)

Ris. 1.1. Sammensætning af et algoritmisk sprog Elementerne i et algoritmisk sprog er således:

Identifikatorer er navnene på SI-programobjekter. Identifikationen kan bruge latinske bogstaver, tal og understregninger. Store og små bogstaver er forskellige, for eksempel er PROG1, prog1 og Prog1 tre forskellige identifikatorer. Det første tegn skal være et bogstav eller understregning (ikke et tal). Mellemrum i identifikatorer er ikke tilladt.

Nøgleord (reserverede) ord er ord, der har særlig betydning for compileren. De kan ikke bruges som identifikatorer.

- Driftstegn er et eller flere symboler, der angiver en handling på operanderne. Operationer er opdelt i unære, binære og ternære i henhold til antallet af operander involveret i denne operation.

Konstanter er uforanderlige størrelser. Der er heltals-, reelle, karakter- og strengkonstanter. Compileren identificerer en konstant som et leksem (en elementær konstruktion) og tildeler den til en af ​​typerne baseret på dens udseende.

Skilletegn – parentes, punktum, komma, mellemrum.

2.1.1. Konstanter i C++

En konstant er et symbol, der repræsenterer en fast numerisk, streng eller tegnværdi.

Konstanter er opdelt i 5 grupper:

Hel;

- reel (flydende komma);

Talløse;

Karakter;

Snor.

Compileren vælger et token og tildeler det til en eller anden gruppe og derefter internt

tre grupper til en bestemt type i henhold til dens indtastningsform i programteksten og i henhold til dens numeriske værdi.

Heltalskonstanter kan være decimale, oktale eller hexadecimale. En decimalkonstant er defineret som en sekvens af decimalcifre, der starter med noget andet end 0, medmindre dette tal er 0 (eksempler: 8, 0, 192345). En oktal konstant er en konstant, der altid starter med 0. 0'et efterfølges af oktale cifre (eksempler: 016 - decimalværdi 14, 01). Hexadecimale konstanter er en sekvens af hexadecimale cifre efterfulgt af tegnene 0x eller 0X (eksempler: 0xA, 0X00F).

I afhængigt af værdien af ​​heltalskonstanten compileren vil præsentere det anderledes

V computerhukommelse (dvs. compileren vil tildele den tilsvarende datatype til konstanten).

Reelle konstanter har en anden form for intern repræsentation i computerens hukommelse. Compileren genkender sådanne konstanter efter deres type. Reelle konstanter kan have to former for repræsentation: fast punkt og flydende komma. Fastpunktskonstanttype: [cifre].[cifre] (eksempler: 5.7, . 0001, 41.) Flydende kommakonstanttype: [cifre][.][cifre]E|e[+|-][cifre ] ( eksempler: 0,5e5, .11e-5, 5E3). Ved skrivning af reelle konstanter kan enten heltals- eller brøkdelene eller decimaltegnet eller eksponenttegnet med en eksponent udelades.

Tællelige konstanter introduceres ved hjælp af nøgleordet enum. Disse er almindelige heltalskonstanter, der er tildelt unikke og brugervenlige notationer. Eksempler: enum (en=1, to=2, tre=3, fire=4);

enum (nul, en, to, tre) - hvis du udelader = tegn og numeriske værdier i definitionen af ​​opregnede konstanter, vil værdierne blive tildelt som standard. I dette tilfælde vil identifikatoren længst til venstre modtage værdien 0, og hver efterfølgende vil øges med 1.

enum (ti=10, tre=3, fire, fem, seks);

enum (søndag, mandag, tirsdag, onsdag, torsdag, fredag, lørdag-

Tegnkonstanter er et eller to tegn indesluttet i apostrof. Tegnkonstanter bestående af et tegn er af typen char og optager en byte i hukommelsen, tegnkonstanter bestående af to tegn er af typen int og optager to bytes. Sekvenser, der starter med \ kaldes kontrolsekvenser og bruges:

- For at repræsentere tegn, der ikke har grafisk repræsentation, f.eks.:

\a – lydsignal,

\b – returner et trin, \n – linjeskift,

\t – vandret fane.

- For at repræsentere tegn: \ , ’ , ? , "(\\, \' ,\? ,\").

- Til at repræsentere tegn ved hjælp af hexadecimale eller oktale koder (\073, \0xF5).

En strengkonstant er en sekvens af tegn omgivet af anførselstegn.

Kontroltegn kan også bruges i strenge. For eksempel: "\nNy linje",

"\n\"Algorithmic high-level programmeringssprog\"" .

2.2. Datatyper i C++

Dataene viser den omgivende verden i programmet. Formålet med programmet er at behandle data. Forskellige typer data lagres og behandles forskelligt. Datatypen definerer:

1) intern repræsentation af data i computerhukommelse;

2) det sæt af værdier, som mængder af denne type kan tage;

3) operationer og funktioner, der kan anvendes på data af denne type.

I Afhængigt af kravene til opgaven vælger programmøren en type til programobjekter. C++ typer kan opdeles i simple og sammensatte. Simple typer omfatter typer, der er karakteriseret ved en enkelt værdi. C++ definerer 6 simple datatyper:

int (heltal)

tegn (karakter)

wchar_t (bredt tegn) bool (boolsk) float (ægte)

dobbelt (dobbelt præcision ægte)

Der er 4 typespecifikationer, der specificerer den interne repræsentation og rækken af ​​standardtyper

kort (kort) lang (lang) signeret (signeret)

usigneret

2.2.1. Skriv int

Værdier af denne type er heltal.

Størrelsen på int-typen er ikke defineret af standarden, men afhænger af computeren og compileren. For en 16-bit processor er der tildelt 2 bytes til den, for en 32-bit processor - 4 bytes.

Hvis int-specifikationen er forudgået af en kort specificator, tildeles 2 bytes til tallet, og hvis specificatoren er lang, tildeles 4 bytes. Mængden af ​​hukommelse, der er allokeret til et objekt, bestemmer det sæt af gyldige værdier, som et objekt kan tage:

kort int - tager 2 bytes, har derfor et interval på –32768 ..+32767;

long int – optager 4 bytes, har derfor et interval på –2.147.483.648..+2.147.483.647

Int-typen er den samme som den korte int-type på 16-bit pc'er og den lange int-type på 32-bit pc'er.

De signerede og usignerede modifikatorer påvirker også det sæt af gyldige værdier, som et objekt kan tage:

unsigned short int - tager 2 bytes, har derfor et interval på 0 ..65536; unsigned long int – optager 4 bytes, har derfor et interval på 0..+4 294 967

2.2.2. Skriv char

Værdierne af denne type er elementerne i et endeligt ordnet sæt af tegn. Hvert tegn tildeles et nummer, som kaldes tegnkoden. 1 byte er allokeret til en tegntypeværdi. Char-typen kan bruges med de signerede og usignerede specifikationer. Signerede tegndata kan gemme værdier i området fra –128 til 127. Ved brug af usignerede tegndata kan værdier variere fra 0 til 255. Kodningen er ASCII (American Standard Code foe International Interchange). Tegn med koder fra 0 til 31 er servicetegn og har kun selvstændig betydning i I/O-sætninger.

Værdier af typen char bruges også til at gemme numre fra specificerede områder.

2.2.3. wchar_t type

Designet til at arbejde med et sæt tegn, hvor 1 byte ikke er nok til at kode, for eksempel Unicode. Størrelsen af ​​denne type svarer generelt til den korte type. Strengkonstanter af denne type skrives med L-præfikset: L“String #1”.

2.2.4. Skriv bool

Typen bool kaldes boolean. Dens værdier kan tage værdierne sande og falske. Den interne form for falsk er 0, enhver anden værdi fortolkes som sand.

2.2.5. Flydende komma typer.

Den interne repræsentation af et reelt tal består af 2 dele: mantissen og eksponenten. På IBM-kompatible pc'er optager flydende værdier 4 bytes, hvoraf en bit er allokeret til mantissen, 8 bit til eksponenten og 24 til mantissen.

Dobbeltværdier optager 8 bytes, 11 og 52 bit er tildelt til henholdsvis eksponenten og mantissen. Længden af ​​mantissen bestemmer præcisionen af ​​tallet og længden af ​​rækkefølgen af ​​dens rækkevidde.

Hvis en lang specifikation går forud for et dobbelttypenavn, tildeles bytes til værdien.

2.2.6. type ugyldig

TIL hovedtyperne inkluderer også void-typen. Sættet af værdier af denne type er p-

2.3. Variabler

En variabel i SI++ er et navngivet hukommelsesområde, hvor data af en bestemt type er lagret. En variabel har et navn og en værdi. Navnet bruges til at henvise til det hukommelsesområde, hvor værdien er gemt. Før brug skal enhver variabel deklareres. Eksempler:

Generel visning af beskrivelsesoperatøren:

[hukommelsesklasse]typenavn [initializer];

Hukommelsesklassen kan have følgende værdier: auto, ekstern, statisk, register. Hukommelsesklassen bestemmer levetiden og omfanget af en variabel. Hvis hukommelsesklassen ikke er specificeret eksplicit, bestemmer compileren den baseret på deklarationskonteksten. Levetiden kan være permanent - under afviklingen af ​​programmet eller midlertidig - under blokeringen. Omfang er en del af programteksten, hvorfra normal adgang til en variabel er tilladt. Typisk er omfanget det samme som omfanget. Bortset fra det tilfælde, hvor der er en variabel med samme navn i den indre blok.

Const – angiver, at denne variabel ikke kan ændres (kaldet konstant). Når du beskriver, kan du tildele en startværdi til en variabel (initialisering). Hukommelsesklasser:

auto – automatisk lokal variabel. Auto-specifikationen kan kun angives, når blokobjekter defineres, for eksempel i en funktions brødtekst. Disse variabler tildeles hukommelse, når de går ind i en blok og frigives, når de forlades. Uden for blokken findes sådanne variabler ikke.

extern er en global variabel, den er placeret et andet sted i programmet (i en anden fil eller længere nede i teksten). Bruges til at oprette variabler, der er tilgængelige i alle programfiler.

statisk er en statisk variabel; den eksisterer kun i den fil, hvor variablen er defineret.

register - ligner auto, men hukommelse til dem er allokeret i processorregistre. Hvis dette ikke er muligt, behandles variablerne som auto.

int a; //global variabel void main())(

int b;//lokal variabel

ekstern int x;//variabel x er defineret andetsteds statisk int c;//lokal statisk variabel a=1;//tildeling til en global variabel

int a;//lokal variabel a

a=2;//tildeling til en lokal variabel::a=3;//tildeling til en global variabel

int x=4;//definition og initialisering af x

I eksemplet er variablen a defineret uden for alle blokke. Omfanget af variablen a er hele programmet, undtagen de linjer, hvor den lokale variabel a bruges. Variable b og c er lokale, deres omfang er blok. Levetiden er anderledes: Hukommelse for b tildeles, når man går ind i blokken (da standardhukommelsesklassen er auto), og frigøres, når den forlades. En variabel med (statisk) eksisterer, mens programmet kører.

Hvis startværdien af ​​variablerne ikke er eksplicit indstillet under definitionen, nulstiller compileren globale og statiske variabler. Automatiske variable initialiseres ikke.

Variabelnavnet skal være unikt inden for sit omfang.

En variabel erklæring kan udføres enten som en erklæring eller en definition. Deklarationen indeholder information om hukommelsesklassen og variabelens type; definitionen sammen med denne information instruerer hukommelsen, der skal allokeres. I eksemplet ekstern int x; - erklæring, og resten - definitioner.

2.4 Tegn på operationer i C++

Driftstegn giver dannelsen af ​​udtryk. Udtryk består af operander, operatorsymboler og parenteser. Hver operand er på sin side et udtryk eller et specialtilfælde af et udtryk - en konstant eller en variabel.

Unære operationer

& få operandadresse

* Henvisning til en adresse (dereference)

- unær minus, ændrer tegnet for den aritmetiske operand

++ Forøg med én:

præfiksoperation - øger operanden før den bruges

Postfix-handlingen øger operanden, efter at den er blevet brugt.

int a=(m++)+n; // a=4,m=2,n=2

int b=m+(++n);//a=3,m=1,n=3

fald med én:

præfiksoperation - reducerer operanden før den bruges

postfix-operation reducerer en operand, efter at den er blevet brugt

Beregn størrelsen (i bytes) af et objekt af typen, der

har en operand

har to former

udtryks størrelse

sizeof(float)//4

sizeof(1.0)//8, da reelle konstanter er som standard

Skolens algoritmiske sprog

Algoritmisk sprog(Også Russisk algoritmisk sprog, RAYA lytte)) er et programmeringssprog, der bruges til at skrive og studere algoritmer. Når man studerer datalogi i skolerne, bruges den såkaldte algoritme til at studere det grundlæggende i algoritmisering. skolens algoritmiske sprog (pædagogisk algoritmisk sprog), ved at bruge ord på russisk, som er forståelige for skolebørn. I modsætning til de fleste programmeringssprog er et algoritmisk sprog ikke bundet til computerarkitektur og indeholder ikke detaljer relateret til maskinens struktur.

Eksempler

Algoritmen i algoritmisk sprog er generelt skrevet i formen:

alg navn på algoritmen (argumenter og resultater) givet betingelser for anvendelighed af algoritmen nødvendig formålet med algoritmen starten beskrivelse af mellemmængder | rækkefølge af kommandoer (algoritmens krop) kon

I algoritmeposten var nøgleord normalt understreget eller med fed skrift. For at fremhæve logiske blokke blev der brugt fordybninger, og parrede ord i begyndelsen og slutningen af ​​blokken blev forbundet med en lodret streg.

Et eksempel på beregning af summen af ​​kvadrater:

alg Summen af ​​kvadrater ( arg intakt n, res intakt S) givet| n > 0 nødvendig| S = 1*1 + 2*2 + 3*3 + … + n*n starten intakt jeg | input n; S:=0 | nc for i fra 1 til n | | S:= S + i * i | kts | konklusion"S =", S kon

E-værksted

For at understøtte det teoretiske studie af programmering i et algoritmisk sprog oprettede specialister fra Fakultetet for Mekanik og Matematik ved Moscow State University en editor-compiler i 1985 "E-værksted"("E" - til ære for Ershov), så du kan indtaste, redigere og udføre programmer på et algoritmisk sprog.

I 1986 blev et sæt pædagogiske verdener (performere) frigivet til "E-værkstedet": "Robot", "Draftsman"", "Tobenet", "Terrængående køretøj", som giver dig mulighed for blot at introducere begreber i algoritmen. "E-workshop" blev implementeret på computere: Yamaha, Corvette, UKNC og blev udbredt.

Dette programmeringssprog blev konstant forfinet, og en beskrivelse af en senere version af "E-værkstedet" dukkede op i en lærebog i 1990. KuMir-programmeringssystemet ("Learning Worlds Set"), som understøtter denne lærebog, blev udgivet af InfoMir-virksomheden i 1990. Sproget i dette system kaldes også "Idol".

I 1995 blev "KuMir" anbefalet af Undervisningsministeriet i Den Russiske Føderation som det vigtigste uddannelsesmateriale til kurset "Fundamentals of Informatics and Computer Science" baseret på lærebogen af ​​A. G. Kushnirenko, G. V. Lebedev og R. A. Svoren. .

Kritik

Det skal dog bemærkes, at det algoritmiske sprog, i mangel af detaljer, der forbinder det direkte med computerarkitekturen, ikke desto mindre, med henvisning til Algolo-lignende sprog, implicit lærer skolebørn at stole på maskinernes von Neumann-arkitektur. (Von Neumann-arkitekturen er en praktisk implementering af en tidligere idé kaldet Turing-maskinen. Ud over Turings idé er der andre ideer. Den mest populære af dem hedder Lambda-regning: Alonzo Church arbejdede på den. En Lisp-maskine er en arkitektur, der er baseret på Lambda-calculus.)

Links

  • A. P. Ershov. Algoritmisk sprog i skolens kursus om grundlæggende datalogi og computerteknologi. 05/07/1985
  • Forum om russiske programmeringssprog og udviklingsværktøjer

Wikimedia Foundation. 2010.

Se, hvad "Skolealgoritmisk sprog" er i andre ordbøger:

    Algoritmisk sprog er et formelt sprog, der bruges til at skrive, implementere eller studere algoritmer. Ethvert programmeringssprog er et algoritmisk sprog, men ikke ethvert algoritmisk sprog er egnet til brug som sprog... ... Wikipedia

    Dette udtryk har andre betydninger, se Algoritmisk sprog. Akademisk algoritmisk sprog er et formelt sprog, der bruges til at skrive, implementere og studere algoritmer. I modsætning til de fleste programmeringssprog er det ikke bundet til ... Wikipedia

    Dette udtryk har andre betydninger, se Dragon (betydninger). Et eksempel på et blokdiagram af en algoritme i DRAGON-sproget dragediagram DRAGON (Friendly Russian Algorithmic Language That Provides Visibility) visual... ... Wikipedia

    Pædagogisk programmeringssprog er et programmeringssprog designet til undervisning. Som sådan blev sprog som BASIC og Pascal udviklet. Python voksede fra ABC-sproget udviklet til undervisning. På populært sprog, ... ... Wikipedia

    Denne artikel foreslås slettet. En forklaring af årsagerne og den tilhørende diskussion kan findes på Wikipedia-siden: Skal slettes / 28. september 2012. Mens diskussionsprocessen ikke er afsluttet, kan artiklen ... Wikipedia

    Algoritmisk sprog (også russisk algoritmisk sprog, RAYA) er et programmeringssprog, der bruges til at skrive og studere algoritmer. Når man studerer datalogi i skolerne, bruges den såkaldte algoritme til at studere det grundlæggende i algoritmisering. skolealgoritme... ... Wikipedia

    Dette udtryk har andre betydninger, se Idol. KuMir ... Wikipedia

    Edumandriva ... Wikipedia

    - (Set af uddannelsesverdener eller Kushnirenko's Worlds) et programmeringssystem designet til at understøtte indledende kurser i datalogi og programmering i gymnasier og gymnasier. Baseret på en teknik udviklet i anden halvdel af 1980'erne... ... Wikipedia

Bøger

  • Programmering i det algoritmiske sprog KuMir, redigeret af A G Kushnirenko, Anelikova L., Gusev O.. Denne vejledning er beregnet til lærere og elever til at understøtte indledende kurser i datalogi og programmering på mellem-, gymnasie- og gymnasieskoler. . Det dækker de vigtigste trin og...

En computer kan kun udføre et program, hvis instruktionerne, den indeholder, er repræsenteret i binær maskinkode, dvs. udtrykt i et sprog, hvis alfabet består af logiske etaler og nuller. For de første computere blev programmer kompileret direkte i maskinkoder, hvilket krævede højt kvalificerede programmører og meget arbejde, så allerede i 40'erne begyndte udviklingen af ​​programmeringssprog, som i deres ordforråd ville være så tæt som muligt på naturligt menneskeligt sprog. Sådanne programmeringssprog kaldes algoritmisk.

Et mellemtrin mod udviklingen af ​​algoritmiske sprog var sproget Monter. I Assembly er kommandoer ikke repræsenteret som binære tal, men som kombinationer af symboler (mnemoniske koder), hvorved betydningen af ​​kommandoen kan reproduceres, hvilket væsentligt eliminerer vanskelighederne og ulemperne ved maskinsprogprogrammering. Assembler har dog også ulemper – det er et maskinorienteret sprog, og hver computer har sit eget Assembly-sprog. Programmering i Assembler kræver, at programmøren har et godt kendskab til computerens arkitektur (struktur) og er forbundet med betydelige lønomkostninger, samtidig er det ved hjælp af Assembler, at du bedst kan bruge computerressourcer (hukommelse, speed) i programmet, så Assembler er stadig meget brugt blandt professionelle programmører.

Det første algoritmiske sprog var Fortran, oprettet i 1957 IBM-specialister under ledelse af John Backus. Nu er der et stort udvalg af algoritmiske sprog: Pascal, C, Algol, PL1, Basic, Lisp, Prolog og mange andre.

Algoritmiske sprog og assemblere hører til symbolske kodesprog, dvs. til sprog, der ikke fungerer med maskinkoder, men med konventionelle symbolske notationer, derfor kan programmer skrevet på disse sprog ikke udføres direkte på en computer. For at et sådant program kan fungere, skal dets tekst konverteres til maskinkoder. Der findes særlige oversætterprogrammer til dette formål. Der er to typer oversættere: en oversætter og en tolk. Kompiler sender hele programmet på én gang, og først derefter er det muligt at udføre det. Tolk- dette er en enklere oversætter, den oversætter sekventielt programsætninger og udfører den også i dele.

21) Programstruktur i C/C++.

Et C++ program består af funktioner , beskrivelser Og præprocessor-direktiver . En af funktionerne skal have et navn vigtigste . Programudførelse begynder med den første sætning af denne funktion. Den enkleste funktionsdefinition har følgende format:


Typisk bruges en funktion til at beregne en værdi, så dens type er angivet før funktionsnavnet. Nedenfor er de vigtigste oplysninger om funktionerne:

  • hvis funktionen ikke skal returnere en værdi, angives void-typen:
  • funktionens krop er en blok og er derfor omsluttet af krøllede seler;
  • funktioner kan ikke indlejres;
  • Hver sætning slutter med semikolon (undtagen den sammensatte sætning).

Et eksempel på en programstruktur, der indeholder hoved-, fl- og f2-funktionerne:

Programmet kan bestå af flere moduler (kildefiler).

Et par bemærkninger om I/O i C++

C++ sproget har ingen indbyggede input/output faciliteter - det udføres ved hjælp af funktioner, typer og objekter indeholdt i standardbiblioteker. Der bruges to metoder: funktioner, der er nedarvet fra C-sproget og C++-objekter.

Grundlæggende C-stil I/O-funktioner:

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

De udfører formateret input og output af et vilkårligt antal værdier i henhold til formatstrengen. Formatstrengen indeholder tegn, der kopieres til strømmen (på skærmen) ved output eller anmodes om fra strømmen (fra tastaturet) ved input, og konverteringsspecifikationer, der starter med %-tegnet, som erstattes af specifikke værdier ved input. og output.

Et eksempel på et program, der bruger C-style I/O-funktioner:

#omfatte
int main() (
int i;
printf("Indtast et heltal\n");
scanf("%d", &i);
printf("Du indtastede tallet %d, tak!", i);
returnere 0;
}

Den første linje i dette program er et præprocessor-direktiv, som indsætter en header-fil i programteksten, der indeholder en beskrivelse af input/output-funktionerne, der bruges i programmet (i dette tilfælde er vinkelparenteser et sprogelement). Alle præprocessor-direktiver begynder med et #-tegn.

Den tredje linje er en beskrivelse af en heltalstypevariabel ved navn i.

Printf-funktionen på den fjerde linje udskriver "Indtast et heltal"-prompt og skifter til en ny linje i henhold til \n escape-sekvensen. Scanf-funktionen sætter det heltal, der er indtastet fra tastaturet, i variablen i (tegnet & betyder operationen med at opnå adressen), og følgende sætning viser strengen specificeret i den, og erstatter konverteringsspecifikationen
ideer om betydningen af ​​dette tal.

Og her er, hvordan det samme program ser ud ved at bruge C++-klassebiblioteket:

#omfatte
int main() (
int i;
cout<< "Введите целое число\n"; cin >> i;
cout<< "Вы ввели число " << i << ", спасибо!";
returnere 0;
}

Header-filen indeholder en beskrivelse af et sæt klasser til styring af input/output. Den definerer standard stream-objekter cin for tastaturinput og cout for skærmoutput, såvel som operationerne for at placere dem i en stream< < и чтения из потока >>.

22) Alfabet og identifikatorer på C/C++ sproget.

ALFABET
store og små latinske bogstaver og understregninger;
arabiske tal fra 0 til 9;
mellemrumstegn: mellemrum, tabulator, ny linje.
specialtegn:

Sprogets leksemer er dannet ud fra tegnene i alfabetet:
identifikatorer;
nøgleord (reserverede) ord;
operation tegn;
konstanter;
afgrænsningstegn (parenteser, punktum, komma, mellemrum).

IDENTIFIKATIONER
Identifikationen kan bruge latinske bogstaver, tal og understregninger;
Store og små bogstaver er forskellige;
Det første tegn i en identifikator kan være et bogstav eller en understregning, men ikke et tal;
Mellemrum er ikke tilladt i navne;
Længden af ​​en identifikator er ikke begrænset af standarden, men nogle compilere og linkere pålægger den begrænsninger;
Identifikationen behøver ikke at matche søgeordene;
Det anbefales ikke at starte identifikatorer med en understregning (de kan falde sammen med navnene på systemfunktioner eller variabler);
På identifikatorer, der bruges til at definere eksterne variabler;
Der er linkerbegrænsninger (brug af forskellige linkere eller versioner af linkeren stiller forskellige krav til eksterne variabelnavne).

C++ søgeord

23) Heltalsdatatyper i C/C++.

Heltalsdatatypen er designet til at repræsentere almindelige heltal i computerhukommelsen. Den grundlæggende og mest almindelige heltalstype er type int. Dens sorter er meget mindre almindeligt anvendt: kort(kort heltal) og lang(langt heltal). Typen er også inkluderet i heltalstyper char(symbolsk). Derudover kan du om nødvendigt bruge typen lang lang(lang, lang!), som, selvom den ikke er defineret af standarden, understøttes af mange C++-kompilere. Som standard er alle heltalstyper ikonisk, dvs. Den mest signifikante bit i sådanne tal bestemmer fortegnet for tallet: 0 er et positivt tal, 1 er et negativt tal. Ud over signerede numre i C++ kan du bruge usigneret. I dette tilfælde deltager alle cifre i dannelsen af ​​heltal. Når man beskriver heltalsvariabler uden fortegn, tilføjes ordet usigneret(ingen tegn).

Oversigtstabel over signerede heltalsdatatyper:

Datatype Størrelse, bytes Vifte af værdier
char -128 ... 127
kort -32768 ... 32767
int -2147483648 ... 2147483647
lang -2147483648 ... 2147483647
lang lang -9223372036854775808 ... 9223372036854775807

Oversigtstabel over usignerede heltalsdatatyper:

Datatype Størrelse, bytes Vifte af værdier
usigneret char 0 ... 255
usigneret kort 0 ... 65535
unsigned int (du kan bare unsigned) 0 ... 4294967295
usigneret lang 0 ... 4294967295
usigneret lang lang 0 ... 18446744073709551615

Det er næppe værd at huske grænseværdierne, især for 4 eller 8 byte heltal; det er nok at vide i det mindste, hvilken rækkefølge disse værdier kan være, for eksempel typen int- ca. 2·10 9 .

I praksis anbefales det at bruge den grundlæggende heltalstype overalt, dvs. int. Faktum er, at data af hovedheltalstypen næsten altid behandles hurtigere end data af andre heltalstyper. Korte typer ( char, kort) er velegnede til at gemme store rækker af tal for at spare hukommelse, forudsat at værdierne af elementerne ikke overskrider grænserne for disse typer. Lange typer er nødvendige i situationer, hvor typen ikke er nok int.

24) Reelle datatyper i C/C++ sproget.

Det særlige ved reelle (reelle) tal er, at de næsten altid er gemt omtrent i computerens hukommelse, og når man udfører aritmetiske operationer på sådanne data, akkumuleres en beregningsfejl.

Der er tre rigtige datatyper: flyde, dobbelt Og lang dobbelt. Hovedtypen tages i betragtning dobbelt. Således fungerer alle matematiske funktioner som standard med typen dobbelt. Tabellen nedenfor viser de vigtigste egenskaber ved rigtige typer:

Type lang dobbelt i øjeblikket, som regel, falder sammen med typen dobbelt og bruges normalt ikke i praksis. Når du bruger ældre 16-bit compilere, data som f.eks lang dobbelt er 10 bytes store og giver præcision til 19 decimaler.

Det anbefales kun at bruge typen overalt dobbelt. Arbejdet med det er altid hurtigere, og der er mindre sandsynlighed for et mærkbart tab af nøjagtighed med et stort antal beregninger. Type flyde kan kun være nyttig til lagring af store arrays, forudsat at denne type er tilstrækkelig til at løse opgaven.

25) Tegndatatype i C/C++ sproget.

Der er ingen datatype i C++-standarden, der kan betragtes som ægte karakter. For at repræsentere karakterinformation er der to typer data, der er egnede til dette formål, disse er typerne char Og wchar_t, selvom begge disse typer i det væsentlige er heltalstyper. For eksempel kan du tage symbolet "A" og dividere det med tallet 2. Hvad får du i øvrigt? Tip: mellemrumstegn. For "normale" tegntyper, såsom i Pascal eller C#, er aritmetiske operationer på tegn forbudt.

Type char bruges til at repræsentere tegn i overensstemmelse med ASCII-kodningssystemet (American Standard Code for Information Interchange). Dette er en syv-bit kode, det er nok at kode 128 forskellige tegn med koder fra 0 til 127. Tegn med koder fra 128 til 255 bruges til at kode nationale skrifttyper, pseudografiske tegn osv.

Type wchar_t designet til at arbejde med et sæt tegn, hvor 1 byte ikke er nok til at kode, for eksempel Unicode. Type størrelse wchar_t normalt lig med 2 bytes. Hvis dit program skal bruge strengkonstanter som f.eks wchar_t, så skrives de med præfikset L, for eksempel L"Word".

26) Opgaveoperatør og tom operatør i C/C++ sprog

Opgaveoperatør- Dette er den mest almindelige operatør. Dens formål er at tildele en ny værdi til en variabel. Der er tre former for denne operator i C++.

1)Enkel opgaveoperatør er skrevet sådan her:

variabel = udtryk;

Denne operator fungerer som følger: Først beregnes udtrykket skrevet til højre for operationssymbolet = (lig), så tildeles det resulterende resultat til variablen til venstre for tegnet = . Typen af ​​resultatet skal matche eller være castbar til typen af ​​variabelen skrevet til venstre.

Til venstre for skiltet = Der kan kun være en variabel, men til højre kan du skrive en konstant, en variabel og generelt et udtryk for enhver kompleksitet.

Eksempel operatører

y=x+3*r;

s=sin(x);

2)Flere opgave- i en sådan operator, sekventielt fra højre til venstre, tildeles flere variable den samme værdi, for eksempel:

a=b=c=1;

Så du kan for eksempel med det samme bestemme, at i en ligesidet trekant er alle sider lig med det samme tal 1. Ovenstående operator svarer til sekventiel udførelse af tre operatorer:

Det er naturligvis nemmere for os at skrive én operatør ned i stedet for tre. Programmet er kortere, teksten ser mere naturlig ud, og dette design virker lidt hurtigere.

3)Opgave med samtidig udførelse af en eller anden operation generelt er det skrevet sådan:

variabel op_sign = udtryk;

og svarer til at skrive

variabel = variabel operator_tegn udtryk;

For eksempel, operatøren:

s+= 5; // 1. mulighed

gør det samme som operatøren

s = s + 5; // 2. mulighed

nemlig: tag den gamle værdi fra variablen s, tilføje et tal til det 5 og skriv den resulterende værdi tilbage i variablen s.

Som du kan se, er indtastningen af ​​1. mulighed kortere end indtastningen af ​​2. mulighed, og den er hurtigere, da i 1. mulighed er adressen på variablen s beregnes én gang, og i 2. mulighed - to gange.

Tom operatør

Et tomt udsagn er et udsagn, der ikke gør noget. Hvorfor har vi brug for en "ubrugelig" operatør?

En tom operator bruges i tilfælde, hvor det ifølge sprogets syntaks er nødvendigt at skrive en eller anden operator ned, men ifølge programmets logik skal vi ikke gøre noget. En tom sætning kan således være påkrævet i en grensætning, når der ikke skal gøres noget langs nogen gren, også for at definere en etiket for en overgang i programteksten, og nogle gange for en tom løkketekst.

Den tomme operator er et enkelt tegn ; (semikolon), for eksempel:

c=a+b; ;

Her er den første karakter ; (semikolon) afslutter tildelingsoperatoren, og det andet tegn er det, der giver os den tomme operator. I denne situation er den tomme operator slet ikke nødvendig (men er heller ikke en syntaksfejl!), den er kun angivet til afklaring. Flere "rimelige" eksempler på brug af den tomme operator vil blive givet senere i de relevante emner.

27) Aritmetiske operationer i C/C++ sproget.

Disse er de mest almindeligt anvendte operationer. Deres betydning er tæt på, hvad det er kendt fra et matematikkursus. Så lad os liste dem:

Prioriteten af ​​additions- og subtraktionsoperationer er lavere end for multiplikation, division og restberegninger. For at ændre rækkefølgen af ​​udregningen, brug parenteser, for eksempel til at gange med 2 summen af ​​to tal EN Og B du kan skrive:

Yderligere. Som det kan ses af de opnåede resultater, er der et tegn i C++ / betyder to forskellige operationer. Hvis en eller begge operander er reelle, udføres almindelig division; hvis begge operander er heltal, udføres heltalsdeling, og resultatet vil være af heltalstypen. Brug af denne operation kræver øget omhu, for eksempel hvis du programmerer beregningen af ​​et matematisk udtryk

bogstaveligt talt, dvs. Så:

1/3*sin(2*X)

derefter resultatet uanset værdien x vil altid være lig med nul, da udtrykket 1/3 betyder division med en helhed. For at løse problemet er det nok at gøre en af ​​operanderne virkelig

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

Operationen med at beregne resten ( % ) gælder kun for heltalsoperander.

Ændring af tegn. Unær operation" - " betyder en ændring af tegn. Som det fremgår af den generelle tabel over alle operationer, har den en meget høj prioritet - højere end for eksempel multiplikationsoperationen. Derfor i udtrykket

Først ændres tegnet for EN, og derefter multiplikation -ENB.

Til parring er der også en operation unært plus, dvs. du kan skrive

Til hvilke formål skal dette bruges? Svært at sige. Men der er sådan en mulighed.

Mere interessant, og vigtigst af alt, meget almindeligt er autoincrease og autorecrease operationerne.

Ethvert programmeringssprog er fyldt med en række nøgleord, funktioner eller klasser. Som regel bruger de alle engelsk, som beskriver metoder eller argumenter. I nogle miljøer er der simpelthen forkortelser af maskinfunktioner. Dette hæmmede i høj grad udviklingen af ​​udviklingen i de indledende faser. For at øge forståelseshastigheden blev der skabt en række specielle algoritmiske programmeringssprog, som bestod af forståelige og tilgængelige ord og deres kombinationer, tydelige selv for en utrænet person.

Lidt historie

For at kommunikere med de første computere blev der brugt programmeringssprog, der var så tæt som muligt på maskinkoden, bestående af nuller og ettaller. Det var naturligvis en meget vanskelig opgave at huske en masse kommandoer. Derudover hvilede metoden til hukommelsestildeling under programmering helt på udviklerens skuldre. Og hvis han lavede en lille fejl, måtte han lave alt om igen.

En stor rolle i overgangen fra maskinsprog til et mere passende sprog for mennesker blev spillet af lav-niveau programmeringssprog assembler. Den brugte mnemonics og symboler. Dette forenklede udviklerens opgave, da han nu mere produktivt kunne bygge sine algoritmer ud fra kombinationer af kontrolinstruktioner og numeriske koder. På trods af al dets fleksibilitet og kraft var sproget stadig svært at mestre.

For at undervise i udvikling og algoritmer i uddannelsesinstitutioner begyndte introduktionen af ​​BASIC-programmeringssproget. Den indeholdt allerede mange kommandoer og nøgleord, som var forståelige for den lærende. BASIC bruges stadig til at lære det grundlæggende i programmering.

Med skabelsen af ​​det første algoritmiske programmeringssprog, Algol, accelererede udviklingen af ​​algoritmer markant.

Hvad er algoritmen

Hvis vi bevæger os væk fra tør teori og definitioner, så er en algoritme en sekvens af handlinger rettet mod at løse et givet problem. På trods af al udtrykkets floriditet møder en person dette koncept hver dag. For at drikke te skal du for eksempel følge følgende sekvens:

  1. Stil kedlen på komfuret.
  2. Vent til det koger.
  3. Hæld kogende vand i vandet.
  4. Placer teposen i koppen.
  5. Tilsæt den nødvendige mængde sukker, mælk eller honning.

Denne sekvens er meget forenklet, men den repræsenterer den enkleste algoritme.

Ligesom en person er en computer i stand til at udføre en bestemt rækkefølge af opgaver. Men for at den klart kan forstå dem, skal det tages i betragtning, at en computer mangler mange begreber, der er indlysende for folk. Derudover skal algoritmen nøjagtigt beskrive alle nødvendige handlinger. Et algoritmisk sprog tjener dette formål og skaber en slags bro mellem maskine og menneske.

Egenskaber og funktioner i et algoritmisk sprog

Algoritmisk er et formelt sprog, hvor algoritmer, der er beregnet til at blive udført på computere, er beskrevet. Typisk er det ikke bundet til nogen maskinarkitektur. Dette hjælper markant med at forbedre og fremskynde kodning. Et slående eksempel er det algoritmiske sprog BASIC. Pascal og C viste sig også populære på grund af deres enkle syntaks og indlæringshastighed.

Strukturen er implementeret på en sådan måde, at procedurerne beskrevet i koden udføres efter hinanden. Det vil sige én algoritme – én opgave. Dette svarer til at skabe funktioner eller metoder i C og Java.

Al kode er bygget ud fra nøgleord, der beskriver en hændelse eller variabel.

Forskelle mellem maskinsprog og algoritmiske sprog

En slående repræsentant for et maskinafhængigt sprog er assembler. Programmering på det kommer ned til at angive oversætteren med specielle mærker, hvad der skal flyttes og hvor eller hvilket dataområde der skal udfyldes. Da assembler-syntaksen minder mere om maskinsyntaks, er det ret svært at studere og skrive kode i den. Nedenfor kan du se, hvordan kommandoerne kan se ud for forskellige processorer.

Derfor blev der skabt et formelt eller algoritmisk sprog med et stort antal menneskeforståelige søgeord og navne.

Nøgleord

Algoritmisk sprog består af nøgleord, som er forkortelser for den fuldstændige betegnelse af handlinger eller variabler. Dette giver dig mulighed for at reducere længden af ​​koden og samtidig holde den forståelig.

  • Alg. Enhver algoritme begynder med dette søgeord. Den beskriver navnet og angiver i parentes, hvilke argumenter der skal til for beregningen, og hvad resultatet skal være.
  • Arg. Betegner algoritmens argumenter. Afspejler typen og navnet på den værdi, der vil blive brugt i koden.
  • Res. Dette nøgleord tjener til at angive typen og navnet på den variabel, hvori resultatet af beregningen skal placeres.
  • Starten Angiver den øjeblikkelige start af algoritmeudførelsen. Holder indtil con søgeordet. Hele intervallet fra "start" til "slut" kaldes kroppen af ​​den aktuelle algoritme.
  • Con. Indikerer, at algoritmen har fuldført eksekveringen.
  • Givet. Taler om nogle af funktionerne og nuancerne ved at bruge algoritmen eller begrænsningerne. For eksempel kan du her angive, at længderne af de sammenlignede strenge skal være ens. Brugen af ​​søgeordet "givet" er valgfri.
  • Nødvendig. En mere detaljeret beskrivelse af, hvad der skal opnås som et resultat af eksekvering af algoritmen. Ligesom "givet" kan det udelades, men for at opbygge mere forståelig og detaljeret kode, anbefales det at bruge den.

Listen over disse søgeord refererer til algoritmens titel og kropsbetegnelse. Og sådan ser tokens til variabler ud:

  • Cel. Heltalsvariabeltype. Deres rækkevidde bør variere fra -32768 til 32767.
  • Ting. Reelle tal. For eksempel med en eksponent eller brøkdel.
  • Log. Dette nøgleord betyder, at der vil blive brugt en boolsk variabel, som kun kan acceptere "ja" eller "nej".
  • Sim. Dette inkluderer værdier med enkelte tegn, såsom "a", "3".
  • Lit. Strengvariabler, der kan indeholde hele tekststrenge.
  • Tab. Angiver en tabel med data af en bestemt type. Det er en analog af et array fra andre programmeringssprog.

Yderligere funktionsord

Den følgende liste med ord bruges til at organisere forgrenings- og sløjfemekanismer.

  • Til. Bruges til at iterere gennem alle værdier i et bestemt område. Bruges til cyklusser, dvs. kontinuerlig udførelse af alle procedurer med data.
  • Fra og til. Angiver, hvilket specifikt værdiområde, der skal gentages i en "for"-løkke.
  • Farvel. Bruges også til at iterere over flere værdier. Bruges til at arbejde, indtil en bestemt betingelse er opfyldt.
  • Nts og kts. "Nts" i algoritmisk sprog betyder begyndelsen af ​​løkkelegemet, og "kts" betyder slutningen. Mellem disse to nøgleord er de nødvendige procedurer for beregningen indbygget.
  • Hvis. Dette ord implementerer forgreningsstrukturen. På denne måde er det muligt at bestemme programmets fremdrift i den ønskede retning under hensyntagen til forholdene.
  • På den ene eller anden måde. To ord, der fungerer med "hvis". Forgreningsmekanismen er også bygget.
  • Valg. Et praktisk værktøj til at forgrene sig fra flere værdier af samme type. Fungerer sammen med søgeordet "ved" og "ellers".
  • Alle. Angiver slutningen af ​​forgreningsmekanismen.
  • Gå ind. Dette nøgleord giver brugeren mulighed for at indtaste variable værdier under programdrift til efterfølgende behandling.
  • Konklusion. Viser data på skærmen.

Grundlæggende sprogstrukturer

Et algoritmisk programmeringssprog hjælper med at bygge forskellige strukturer, der producerer beregningsfunktioner i en bekvem form. Generelt kan ethvert sprog bruge flere specifikke mekanismer og deres kombinationer.

Følgende struktur

Når man designer denne type struktur, sker kodeudførelse direkte linje for linje. Et generelt eksempel kan udtrykkes på denne måde:

alg Summen af ​​to tal (arg int a, b, res int S)

output "S =", S

I dette eksempel beregnes summen af ​​to tal indtastet af brugeren. I begyndelsen angiver ordet "alg", at algoritmen starter og beskriver kort, hvad den præcist gør. De argumenter, der er nødvendige for, at programmet kan køre, og den variabel, der skal tjene som en beholder til lagring af resultaterne, er defineret i parentes. Dernæst kommer nøgleordet "start", der angiver den øjeblikkelige start af eksekvering af udtryk og procedurer. Ved siden af ​​"start" kan du også definere nogle mellemvariable.

I algoritmens krop accepterer nøgleordet "input" data fra brugeren og skriver det til variabler. De lægges derefter sammen, og deres sum tildeles S. Inden afslutningen af ​​algoritmen vises resultatet af programmet på skærmen ved hjælp af nøgleordet "output". Denne notation i algoritmisk sprog er typisk for mange andre programmeringsmiljøer.

Forgreningsstruktur

Et programs flow skal ikke altid udføres linje for linje. Nogle gange er du nødt til at bestemme eller ændre værdien af ​​en bestemt variabel afhængigt af situationen. For eksempel, givet at x = 0, skal du ikke dividere med x.

Et algoritmisk programmeringssprog gør dette ved at bruge flere variantkonstruktioner og nøgleordene "hvis", "så", "andet" eller "valg". Efter "hvis" opstilles en betingelse, hvorefter kriteriet for flytning til en anden filial vil blive bestemt. For eksempel sådan her:

På denne måde kan du ændre værdierne af variabler afhængigt af andre faktorer. Dette eksempel dækker ikke fuldt ud alle mulige implementeringer. Derfor anvendes ud over konstruktionen søgeordet "ellers". Det giver dig mulighed for at flytte til en anden filial, hvis betingelsen ikke opfylder de valgte kriterier.

ellers y = 0

Det vil sige, at i det tilfælde, hvor x ikke er lig med nul, vil y også blive nulstillet, uanset hvilken værdi den havde før.

En mere bekvem måde at foretage flere valg på er "valg"-konstruktionen. Det giver dig mulighed for at sortere gennem flere forhold. Når en af ​​dem udløses, udføres den handling, der er specificeret for den.

ved x = 0: y = 0

ved x = 1: y = 1

ved x = 2: y = 2

Dette eksempel viser afhængigheden af ​​variablen y på x. Programmet gennemgår alle data og sammenligner den aktuelle værdi af x med den, der er angivet i betingelsen. Når et match er fundet, udfører det den næste handling. Denne konstruktion kan også kombineres med søgeordet "else" for mere fleksible løsninger, når ingen af ​​betingelserne er opfyldt.

Cykler

Loops spiller en meget vigtig rolle i programmering. Næsten ingen udvikling kan undvære implementeringen af ​​dette design. Generelt løser loops problemet med at udføre lignende handlinger med flere variable gentagne gange. Dette er praktisk, for eksempel, når du udfylder arrays med data ved hjælp af en kendt formel, sorterer dem eller tæller nogle værdier.

Nøgleordet "mens" giver dig mulighed for at organisere en løkke, hvor en bestemt handling vil blive gentaget, indtil en bestemt betingelse er opfyldt. For eksempel:

nts farvel x<= 3

I dette eksempel vil y stige, indtil x bliver større end 3. For at sløjfen ikke skal være endeløs, skal x ændres opad i hver passage, for eksempel med 1, hvilket er hvad den anden kodelinje gør.

Nøgleordet "for" anvendes på et bestemt antal tal, der skal gentages sekventielt og udføre nogle handlinger med dem. Denne konstruktion bruges, når et begrænset antal elementer er kendt.

Dens syntaks ser således ud:

nc for x fra 1 til 3

Serviceordene "fra" og "til" viser rækken af ​​værdier, der skal gentages. Således vil y i den første iteration x = 1, som følge af bestået, også opnå værdien 1. Så vil kontrol igen gå til begyndelsen, og x vil nu være lig med henholdsvis 2, y bliver 3.

Ved at bruge de kombinerede konstruktioner af loops og forgrening kan du bygge de enkleste algoritmer til at løse lette problemer og få viden om driften af ​​programmeringssprog.

Standard funktioner

Et algoritmisk sprog har standardfunktioner, der allerede er indbygget i det. De kan gøre nogle rutineoperationer med tal og udtryk nemmere. Standardfunktioner i det algoritmiske sprog kan beregne kvadratrødder, logaritmer, moduler, sinus, cosinus osv.:

  • absolut modul - abs(x);
  • kvadratrod - sqrt(x);
  • naturlige og decimale logaritmer - ln(x) og log(x);
  • minimum og maksimum af to tal - min(x,y), max (x,y);
  • sinus, cosinus, tangens, cotangens - sin(x), cos(x), tan(x), ctg(x).

Disse standardfunktioner giver dig mulighed for at undgå at skabe en "cykel" ved at hjælpe med at implementere de enkleste funktioner ved hjælp af standardværktøjer.

booleske udtryk

Booleske udtryk afspejler, om en bestemt operation opfylder en betingelse. For eksempel vil x > 0 evalueres til sand, når x er 1, 2, 25 eller et hvilket som helst andet tal større end nul. Det algoritmiske sprog indeholder logiske udtryk, der ud over matematiske standardoperationer kan bruge følgende nøgleord og operatorer:

  • OG. Betyder, at de udtryk, som nøgleordet er placeret imellem, skal opfylde en bestemt betingelse: (x>0) og (y>0);
  • Eller. Et af udtrykkene opfylder muligvis ikke betingelsen, f.eks. (x>0) eller (y>0);
  • Ikke. "Vendter" den logiske værdi af et udtryk. For eksempel dette design Ikke(x>0), betyder, at x stadig ikke må være mere end nul.

Der er også sammenligningsoperatører -<, >, =, som kan kombineres for at skabe udtryk som større end eller lig med.

Et lille program til et algoritmisk sprog

For at forstå processen kan du organisere et program, der interagerer med brugeren. Den vil bede om et tal, og maskinen vil kvadrere det.

Komponenterne i et algoritmisk sprog indeholder mange nøgleord. Det første programmet begynder med er en meddelelse om algoritmen - alg.

alg Firkant et tal ()

I parentes skal du angive et argument, der repræsenterer værdien fra brugeren og resultatet. Glem heller ikke at angive typerne af disse data.

Nu vil maskinen vide, at den bliver nødt til at interagere med en variabel af typen heltal, og resultatet af dens arbejde vil være S.

Den første ting du skal gøre er at indtaste data. Dette gøres ved hjælp af nøgleordet "input".

Nu, direkte i algoritmens krop, skal du beskrive et antal kommandoer, der vil blive brugt til at beregne kvadraterne af tal.

output "S =", S

Et algoritmisk sprog, hvis kommandoer gør det muligt at implementere opgaven, er skrevet i formen: =. Variablen S indeholder således værdien af ​​produktet af x og sig selv. Outputlinjen viser resultatet på skærmen. Nå, alt dette ender med søgeordet "con". Den komplette kode vil nu se således ud:

alg Kvadrat et tal (arg heltal x, res heltal S)

output "S =", S

Sådan implementeres algoritmen til at beregne kvadratet af det indtastede tal på en enkel måde. Programmet kan kompliceres ved at tilføje summen af ​​alle operationer. Og så kommer det til at se sådan ud:

alg Kvadrér et tal og beregn deres sum (arg heltal x, res heltal S)

givet | x > 0

brug for | S = 1*1 + 2*2+ … + x*x

starte hel

input x; S:=0

nc for a fra 1 til x

output "S =", S

Denne mulighed bruger en loop, en mellemvariabel a og en kort indikation af opgaven i afsnittene "givne" og "skal". Nu, hvis du sender et bestemt tal til programmet, vil det kvadrere det og vise summen af ​​kvadraterne af alle de forudgående tal.

Brug og udvikling af algoritmiske sprog

Algoritmisk sprog er almindeligt i læringsmiljøer for at forstå de grundlæggende normer og regler for programmering. For eksempel BASIC, der undervises på mange skoler. Det afspejler perfekt alle paradigmerne for et sådant udtryk som et imperativt programmeringssprog, hvor alle kommandoer udføres sekventielt efter hinanden.

På grund af de beskrevne konstruktioner og nøgleords nærhed til det menneskelige sprog, er det blevet meget lettere at skrive kode end at bruge helt maskin- eller maskinafhængige modeller. ALGOL-familien af ​​programmeringssprog er gået længst i sin udvikling, siden dens syntaks blev præsenteret i flere lokaliseringer. Det var muligt at skrive kode selv på russisk.

Generelt har udviklingen af ​​algoritmiske sprog i høj grad påvirket programmering generelt og givet et stort antal mennesker mulighed for at blive udviklere. Moderne midler bliver mere tilgængelige og forståelige. Programmeringssprog på højt niveau indeholder flere og flere funktioner med meningsfulde navne og titler. Grænserne for deres brug bliver stadig mindre. Dermed er en mere forståelig og naturlig implementering af udviklingen mulig i fremtiden.