Algoritmický programovací jazyk je formální jazyk používaný k psaní, implementaci a studiu algoritmů. Na rozdíl od většiny programovacích jazyků, algoritmický jazyk není vázán na architekturu počítače, neobsahuje detaily související se zařízením stroje.

Ke studiu základů algoritmizace, tzv Ruský algoritmický jazyk(školní algoritmický jazyk), používat slova srozumitelná studentovi v ruštině.

Algoritmický jazyk podobný Algolu s ruskou syntaxí byl představen akademikem A.P. Ershovem v polovině 80. let jako základ pro „bezstrojový“ kurz informatiky.

Hlavní obslužná slova algoritmického jazyka

Popis algoritmu

  • alg(algoritmus)
  • arg(argument)
  • střih(výsledek)
  • brzy(začátek) - začátek algoritmu
  • ošidit(end) - konec algoritmu
  • daný- počáteční údaje v jakékoli podobě
  • nutné je cílem algoritmu

Typy dat:

  • Celý(Celý)
  • věc(nemovitý)
  • Sim(charakter)
  • litas(doslovně) - řetězec
  • log(logický)
  • tab(tabulka) - k označení pole
  • délky(length) — počet prvků pole

Zápis podmínky

  • -li
  • v opačném případě
  • výběr
  • hodnota

Označení cyklu

  • nc(začátek cyklu)
  • kts(konec cyklu)
  • sbohem

Booleovské funkce a hodnoty pro vytváření výrazů

Vstup výstup

  • vstup
  • závěr

Celkový pohled na algoritmus

1
2
3
4
5
6

alg název algoritmu (argumenty a výsledky)
| daný podmínky použitelnosti algoritmu
| nutné cíl algoritmu
brzy popis mezihodnot
| sekvence příkazů (tělo algoritmu)
ošidit

Část algoritmu ze slova alg ke slovu brzy se nazývá nadpis a část uzavřená mezi slovy brzy a ošidit- tělo algoritmu.

Ve větě alg za názvem algoritmu jsou charakteristiky uvedeny v závorkách ( arg, střih) a typ hodnoty ( Celý, věc, Sim, litas nebo log) všechny vstupní (argumenty) a výstupní (výsledkové) proměnné. Při popisu polí (tabulek) se používá servisní slovo tab, doplněné páry hranic pro každý index prvku pole.

V záznamu algoritmu klíčová slova jsou obvykle podtržené nebo tučné. Pro zvýraznění logických bloků se používá odsazení a dvojice slov začátku a konce bloku jsou spojena svislou čárou.

Základní algoritmické struktury

Podrobný popis hlavních algoritmických struktur je uveden v tomto článku. Níže jsou uvedeny šablony pro kompilaci těchto struktur v algoritmickém jazyce.
neúplná vidlice

| -li stav
| | pak akce
| Všechno

Plná vidlice

1
2
3
4
5

| -li stav
| | pak akce 1
| | v opačném případě akce 2
| Všechno

větvení

1
2
3
4
5
6
7
8

| výběr parametr
| | v hodnotě hodnota 1
| | | akce 1
| | v hodnotě hodnota 2
| | | akce 2
| | v opačném případě
| | | výchozí akce
| Všechno

Smyčka s předpokladem

| nashledanou stav
| | akce
| kts

Smyčka s dodatečnou podmínkou

Psaní algoritmu v algoritmickém (formálním) jazyce se nazývá program. Někdy je samotný koncept algoritmu ztotožňován s jeho notací, takže slova „algoritmus“ a „program“ jsou téměř synonyma. Drobný rozdíl spočívá v tom, že při zmínce o algoritmu mají zpravidla na mysli hlavní myšlenku jeho konstrukce, která je společná všem algoritmickým jazykům. Program je vždy spojen s psaním algoritmu v konkrétním formálním jazyce.

Při prezentaci myšlenky algoritmu, například při publikování ve vědeckém článku, není vždy vhodné použít nějaký konkrétní programovací jazyk, aby se prezentace nezahltila nepodstatnými detaily. V takových případech používá se neformální algoritmický jazyk co nejblíže přírodě. Tento typ jazyka se nazývá pseudo kód. Pro specialistu není obtížné přepsat program z pseudokódu do jakéhokoli konkrétního programovacího jazyka. Zápis algoritmu v pseudokódu je často srozumitelnější a názornější, umožňuje vám libovolně zvolit úroveň podrobnosti, počínaje popisem v nejobecnějších pojmech a konče podrobnou prezentací.

Pseudokódy jsou poloformalizované popisy algoritmů v podmíněný algoritmický jazyk, včetně prvků programovacího jazyka a frází v přirozeném jazyce, běžné matematické notace a dalších.

Pseudokód je systém notace a pravidel navržený k jednotnému zápisu algoritmů.

Pseudokód zaujímá střední pozici mezi přirozeným jazykem a programovacími jazyky. Na jednu stranu se blíží normálnímu přirozenému jazyku, takže v něm lze psát a číst algoritmy jako prostý text. Na druhou stranu jsou v pseudokódu použity některé formální konstrukce a matematická symbolika, což přibližuje zápis algoritmu obecně přijímané matematické notaci.

Pseudokód obvykle obsahuje některé konstrukce, které jsou přirozené pro programovací jazyky. To usnadňuje přechod od zápisu v pseudokódu k zápisu algoritmu v programovacím jazyce pro konkrétní počítač. Zejména v pseudokódu, stejně jako v programovacích jazycích, existují pomocná slova, jejichž význam je určen jednou provždy. V tištěném textu jsou tučně a v ručně psaném textu podtržené.

Celkový pohled na algoritmus:

alg název algoritmu (argumenty a výsledky)

daný podmínky použitelnosti algoritmu

nutné cíl algoritmu

brzy popis mezihodnot

sekvence příkazů(tělo algoritmu)

Část algoritmu ze slova alg ke slovu brzy se nazývá nadpis a část uzavřená mezi slovy brzy a ošidit - tělo algoritmu.

Ve větě alg za názvem algoritmu jsou v závorkách uvedeny charakteristiky (arg, res) a typ hodnoty (integer, real, sim, lit nebo log) všech vstupních (argumentů) a výstupních (výsledků) proměnných. Při popisu polí (tabulek) se používá servisní slovo tab, doplněné páry hranic pro každý index prvku pole.

Příklady vět alg :

alg Objem a plocha válce (arg w R, H, res w V, S)

alg KvUr Roots ( arg věc a, b, c, střih položka x1, x2, rozsvícená t)

alg Vyloučit prvek ( arg celé číslo N, arg záložka vyjmout položku A)

alg Diagonální ( arg celé číslo N, arg celá záložka A, rozsvícená. Odpověď)

Nabídky daný a nutné není požadováno. Doporučuje se psát příkazy, které popisují stav prostředí spouštěče algoritmu, například:

alg Výměna (rozsvícený text Str1, Str2, rozsvícený text)

daný | délky podřetězců Str1 a Str2 jsou stejné

potřeba | všude v řádku Text je podřetězec Str1 nahrazen řetězcem Str2

alg Počet maxim (arg integer N, arg real tab A, res integer K)

daný | N>0

potřeba | K - počet maximálních prvků v tabulce A

alg Odpor (arg real R1, R2, arg integer N, res real R)

daný | N>5, R1>0, R2>0

potřeba | R - odpor obvodu

Zde v návrzích daný a nutné za znakem "|" komentáře se zaznamenávají. Komentáře lze umístit na konec libovolného řádku. Nejsou zpracovávány překladačem, ale výrazně usnadňují pochopení algoritmu.

Hlavní servisní slova algoritmického jazyka:

alg (algoritmus) sim (symbolický) daný pro ano

arg (argument) lit (doslovný) must od čís

res(result) log(boolean) if to at

start (start) tab(table) a potom hodnota select

end (end) nts (cyklus start) jinak a zadejte

integer (integer) kts (konec smyčky) all or output

skutečná (skutečná) délka (délka) dosud neschválená

Základní příkazy:

1. Příkaz přiřazení. Používá se k vyhodnocení výrazů a přiřazení jejich hodnot proměnným. Obecná forma: A:= B, kde je znak ":=" znamená příkaz k nahrazení předchozí hodnoty proměnné na levé straně vypočítanou hodnotou výrazu na pravé straně.

Například: a:= (b+c) * sin(Pi/4); i:= i+1.

Vstupní a výstupní příkazy.

vstup názvy proměnných (vstup z klávesnice)

závěr názvy proměnných, výrazy, texty. (výstup dat na obrazovku)

Příkazy větve.

Tyto příkazy umožňují v závislosti na výsledku kontroly podmínky (ano nebo ne) volbu jednoho z alternativních způsobů algoritmu. Každá cesta vede ke společnému východu, takže algoritmus bude pokračovat bez ohledu na zvolenou cestu.

Struktura větvení existuje ve čtyřech hlavních variantách:

1. tým jestliže - pak;

-li stav

pak akce

2. tým jestliže - pak - jinak;

-li stav

pak akce 1

v opačném případě akce 2

3. tým výběr;

Výběr

v podmínka 1: akce 1

v podmínka 2: akce 2

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

v podmínka N: akce N

4. tým výběr je jiný.

Výběr

v podmínka 1: akce 1

v podmínka 2: akce 2

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

v podmínka N: akce N

v opačném případě N+1 akcí

Cyklus příkazů.

Poskytuje opakované provádění určité sady akcí, která se nazývá tělo smyčky.

Existují dva příkazy pro opakování:

1. Typ cyklu Sbohem - Dává pokyn k provedení těla smyčky, dokud není splněna podmínka zapsaná za slovem sbohem.

nc sbohem stav

tělo smyčky

(sekvenování)

kts

2. Typ cyklu Pro - Dává pokyn ke spuštění těla smyčky pro všechny hodnoty nějaké proměnné (parametr smyčky) v zadaném rozsahu.

nc pro i z i1 před i2

tělo smyčky

(sekvenování)

kts

PROGRAMOVACÍ JAZYKY

V současné době je na světě několik stovek skutečně používaných programovacích jazyků. Každý má svou vlastní oblast použití.

Jakýkoli algoritmus, jak víme, je posloupnost instrukcí, po kterých je možné přejít od počátečních dat k výsledku v konečném počtu kroků. V závislosti na míře podrobnosti předpisů se obvykle určuje úroveň programovacího jazyka - čím méně podrobností, tím vyšší úroveň jazyka.

Programovací jazyk(algoritmický jazyk) - sada pravidel, která určují, které sekvence znaků tvoří program (syntaktická pravidla) a které výpočty program popisuje (sémantická pravidla).

Programovací jazyky mají následující vlastnosti:

  • Jazyková úroveň - vyznačuje se složitostí úloh řešených pomocí tohoto jazyka.
  • Síla jazyka - charakterizován počtem a rozmanitostí úloh, algoritmů pro jejich řešení, které lze pomocí tohoto jazyka napsat.
  • Spolehlivost - jazyk by měl poskytovat minimum chyb při psaní programů. Navíc musí být jazyk špatné programy bylo těžké psát.
  • Čitelnost b - snadnost vnímání programů osobou. Tato vlastnost je důležitá v týmové práci, kdy několik lidí pracuje se stejnými programovými texty.
  • úplnost - charakterizuje schopnost popsat třídu problémů v určité tematické oblasti.
  • Flexibilita - charakterizuje snadnost vyjádření nezbytných akcí.

Podle tohoto kritéria lze rozlišit následující úrovně programovacích jazyků:

  • stroj;
  • strojně orientované (montéři);
  • strojově nezávislé (vysokoúrovňové jazyky).

Strojové jazyky a strojově orientované jazyky jsou jazyky nízké úrovně, které vyžadují, abyste specifikovali jemné detaily procesu zpracování dat. Jazyky na vysoké úrovni na druhou stranu napodobují přirozené jazyky pomocí některých slov mluveného jazyka a běžných matematických symbolů. Tyto jazyky jsou pro člověka přátelštější.

Jazyky na vysoké úrovni se dělí na:

  • procedurální (algoritmický)(Basic, Pascal, C atd.), které jsou určeny pro jednoznačný popis algoritmů; k vyřešení problému vyžadují procedurální jazyky výslovné zapsání postupu pro jeho řešení v té či oné formě;
  • hlavolam ( Prolog, Lisp atd. ) , které jsou zaměřeny nikoli na vývoj algoritmu pro řešení problému, ale na systematický a formalizovaný popis problému tak, aby řešení vyplývalo ze sestaveného popisu;
  • objektově orientovaný(Object Pascal, C++, Java atd.), které jsou založeny na konceptu objektu, který kombinuje data a akce na nás. Program v objektově orientovaném jazyce, řešící určitý problém, v podstatě popisuje část světa související s tímto problémem. Popis reality ve formě systému vzájemně se ovlivňujících objektů je přirozenější než ve formě interagujících postupů.

Vytvoření počítačového programu zahrnuje následující fáze:

§ analýza;

§ design;

§ programování;

§ testování a ladění;

§ vykořisťování.

K dnešnímu dni existuje šest generací programovacích jazyků. Každá z následujících generací je ve své funkční kapacitě kvalitativně odlišná od té předchozí.

  • První generace: Strojové jazyky. Objevil se v polovině 40. let XX.
  • Druhá generace: Montážníci. Ve skutečnosti se jedná o stejné strojové jazyky, ale krásněji "zabalené". Objevil se koncem 50. let 20. století
  • Třetí generace: procedurální jazyky. Objevil se na počátku 60. let 20. století. Tato generace obsahuje univerzální jazyky na vysoké úrovni, které lze použít k řešení problémů z jakékoli oblasti (například Algol-60).
  • Čtvrtá generace: Jazyky podporující složité datové struktury(např. SQL). Objevil se na konci 60. let XX století.
  • Pátá generace: Jazyky umělé inteligence(např. Prolog). Objevil se na počátku 70. let XX století.
  • Šestá generace: Jazyky neuronových sítí(jazyky, které se samoučí). Výzkumná práce v této oblasti začala v polovině 80. let.

ZÁVĚR

Aby mohl počítač provést nějakou úlohu, musí ji provést určitý program. Program musí být napsán podle přísných pravidel, ve formě dostupné pro zpracování na počítači.Takováto sada pravidel se nazývá programovací jazyk nebo algoritmický jazyk. Vědět obecný princip vytvářením a psaním programů na počítači je možné řešit téměř všechny úkoly nutné při práci na zpracování informací.

Ministerstvo školství Ruská Federace Státní technická univerzita v Permu

Židle informační technologie a automatizované systémy

Vikentyeva O.L.

Abstrakt přednášek z předmětu "Algoritmické jazyky a programování" (Základy jazyka C++, I semestr)

Úvod

První semestr se zabývá základními konstrukcemi jazyka C a základní programovací technologií (strukturované programování).

Strukturované programování je technologie pro tvorbu programů, která dodržováním určitých pravidel zkracuje dobu vývoje a počet chyb a také usnadňuje možnost úpravy programu.

1.1. Algoritmus a program

Algoritmus je přesný předpis, který definuje výpočetní proces, který vede od změny počátečních dat ke konečnému výsledku, tj. je to recept na dosažení nějakého cíle.

Sada nástrojů a pravidel pro prezentaci algoritmu ve formě vhodné k provedení počítač se nazývá programovací jazyk, algoritmus napsaný v tomto jazyce se nazývá program.

Nejprve je vždy vyvinut akční algoritmus a poté je napsán v některém z programovacích jazyků. Text programu je zpracován speciálními servisními programy - překladateli. Programovací jazyky jsou umělé jazyky. Od přirozených jazyků se liší omezeným počtem „slov“ a velmi přísnými pravidly pro psaní příkazů (operátorů). Souhrn těchto požadavků tvoří syntaxi programovacího jazyka a smyslem každé konstrukce je její sémantika.

1.2 Vlastnosti algoritmu

1. Hmotnostní charakter: Algoritmus by neměl být aplikován na jeden problém, ale na celou třídu podobných problémů (algoritmus pro řešení kvadratické rovnice by neměl řešit jednu rovnici, ale všechny kvadratické rovnice).

2. Efektivita: algoritmus by měl vést k výsledku v určitém počtu kroků (při dělení 1 3 se získá periodický zlomek 0,3333(3), pro dosažení konečného výsledku je nutné specifikovat přesnost získání tohoto zlomku, například až na 4 desetinná místa).

3. Definičnost (determinismus) - každá akce algoritmu by měla být svému vykonavateli jasná (návod pro domácí spotřebič v japonštině pro osobu, která nemluví japonsky, není algoritmus, protože nemá vlastnost determinismu).

4. Diskrétnost – proces musí být popsán pomocí nedělitelnosti

operace prováděné v každém kroku (tj. kroky nelze rozdělit na menší kroky).

Algoritmy mohou být reprezentovány v následujících formách:

1) slovní popis algoritmu.

2) grafický popis algoritmu.

3) pomocí algoritmického programovacího jazyka

1.2. Překladače a interprety

Z pomocí programovacího jazyka je vytvořen text, který popisuje dříve zkompilovaný algoritmus. Abyste získali funkční program, musíte tento text přeložit do sekvence instrukcí procesoru, což se provádí pomocí speciální programy, kterým se říká překladatelé. Existují dva typy překladatelů: kompilátoři a tlumočníci. Kompilátor překládá text zdrojového modulu do strojového kódu, který se nazývá objektový modul, v jednom nepřetržitém procesu. Zároveň se nejprve podívá do zdrojového kódu programu při hledání syntaktických chyb. Interpret spouští zdrojový modul programu v režimu operátor po operátorovi, podle

průběh práce, překládání každého příkazu do strojového jazyka.

1.3 Programovací jazyky

Různé typy procesorů mají různé instrukční sady. Pokud je programovací jazyk zaměřen na konkrétní typ procesoru a zohledňuje jeho vlastnosti, pak se nazývá nízkoúrovňový programovací jazyk. Jazyk nejnižší úrovně je jazyk symbolických instrukcí, který jednoduše představuje každou instrukci strojového kódu ve formě speciálních symbolů nazývaných mnemotechnické pomůcky. S pomocí nízkoúrovňových jazyků vznikají velmi efektivní a kompaktní programy, protože vývojář získá přístup ke všem možnostem procesoru. Protože instrukční sady pro různé modely procesory jsou také různé, pak má každý model procesoru svůj vlastní assembler a program v něm napsaný lze použít pouze v tomto prostředí. Tyto jazyky se používají k psaní malých systémových aplikací, ovladačů zařízení a tak dále.

Programovací jazyky na vysoké úrovni proto neberou v úvahu zvláštnosti konkrétních počítačových architektur vytvořené programy na zdrojové úrovni lze snadno přenést na jiné platformy, pokud jsou pro ně vytvořeny vhodné překladače. Vývoj programů v jazycích na vysoké úrovni je mnohem jednodušší než ve strojových jazycích.

Jazyky na vysoké úrovni jsou:

1. Fortran je první kompilovaný jazyk vytvořený v 50. léta 20. století. Implementovala řadu důležitých programovacích konceptů. Pro tento jazyk byl vytvořen velké množství knihovny od statistických sad po satelitní správu, takže je i nadále používán v mnoha organizacích.

2. COBOL - Kompilovaný jazyk pro ekonomické výpočty a řešení obchodní úkoly vyvinuté na počátku 60. let. Cobol implementoval velmi výkonné nástroje pro práci s velkým množstvím dat uložených na externích médiích.

3. Pascal - vytvořen na konci 70. léta švýcarského matematika Niklause Wirtha speciálně pro výuku programování. Umožňuje vám rozvíjet algoritmické myšlení, budovat krátké, dobře čitelný program, demonstruje základní techniky algoritmizace, dobře se hodí i pro realizaci velkých projektů.

4. BASIC - vytvořeno v 60. léta i pro výuku programování. Existují pro něj kompilátory a interpreti, je to jeden z nejoblíbenějších programovacích jazyků.

5. C - vznikl v 70. letech nebyl zpočátku považován za masový programovací jazyk. Bylo plánováno nahradit assembler, aby bylo možné vytvářet stejně efektivní a krátké programy, ale nezávisely na konkrétním procesoru. V mnoha ohledech je podobný Pascalu a má další funkce pracovat s pamětí. Obsahuje mnoho aplikovaných a systémové programy, stejně jako operační systém Unix.

6. C++ je objektově orientované rozšíření jazyka C vytvořené Bjarnem Stroustrupem v roce 1980.

7. Java je jazyk, který na začátku vytvořil Sun 90. léta na bázi C++. Je navržen tak, aby zjednodušil vývoj aplikací v C++ tím, že z něj odstraní nízkoúrovňové funkce. hlavní rys jazyk spočívá v tom, že není kompilován do strojového kódu, ale do bajtkódu nezávislého na platformě (každý příkaz zabírá jeden bajt). Tento kód lze spustit pomocí interpretu, Java Virtual Machine (JVM).

2. Struktura programu v C++

C program má následující strukturu: #preprocessor direktivy

. . . . . . . . .

# funkce direktiv preprocesoru a ()

operátory funkcí v ()

operátory

void main () //funkce, kterou začíná provádění programu operátory

popisy

úkoly

funkce prázdného příkazu

kompozitní

přechod

Direktivy preprocesoru - řídí transformaci textu programu před jeho kompilací. Původní program připravený v SI ve formuláři textový soubor, prochází 3 fázemi zpracování:

1) převod textu preprocesoru;

2) kompilace;

3) rozložení (úprava odkazu nebo sestavení).

Po těchto třech fázích se vytvoří spustitelný kód programu. Úkolem prepro-

cessor - transformace textu programu před jeho kompilací. Pravidla předzpracování definuje programátor pomocí direktiv preprocesoru. Direktiva začíná znakem #. Například,

1) #define - označuje pravidla nahrazování v textu. #define NULA 0,0

Znamená, že každé použití názvu ZERO v programu bude nahrazeno

2) #zahrnout< имя заголовочного файла>- je určeno pro vložení textu z katalogu "Hlavní soubory" dodávaného se standardními knihovnami do programového textu. Každá funkce knihovny C má odpovídající popis v jednom ze souborů záhlaví. Seznam hlavičkových souborů je definován jazykovou normou. Použití směrnice include nezahrnuje odpovídající standardní bib.

knihovny, ale umožňují pouze vkládat popisy ze zadaného hlavičkového souboru do textu programu. Knihovní kódy jsou připojeny ve fázi propojení, tedy po kompilaci. Ačkoli v hlavičkové soubory obsahuje všechny popisy standardních funkcí, v kódu programu jsou obsaženy pouze ty funkce, které jsou v programu použity.

Po předběžném zpracování nezůstanou v textu programu žádné direktivy preprocesoru.

Program je sada popisů a definic a skládá se ze sady funkcí. Mezi těmito funkcemi musí vždy existovat funkce s názvem main. Bez něj nelze program spustit. Před názvem funkce je uvedena informace o typu hodnoty vrácené funkcí (typ výsledku). Pokud funkce nic nevrací, pak je zadán typ void: void main(). Každá funkce, včetně main, musí mít sadu parametrů, může být prázdná, pak (void) je uvedeno v závorkách.

Tělo funkce následuje za hlavičkou funkce. Tělo funkce je posloupnost definic, deklarací a spustitelných příkazů rovnátka. Každá definice, popis nebo prohlášení končí středníkem.

Definice - zavádějí objekty (objekt je pojmenovaná paměťová oblast, speciálním případem objektu je proměnná) potřebné k reprezentaci dat zpracovávaných v programu. Příkladem je

int y = 10; //pojmenovaná konstanta float x ; //proměnná

Popisy - upozorní překladač na vlastnosti a názvy objektů a funkcí popsaných v jiných částech programu.

Operátoři - definují akce programu v každém kroku jeho provádění

Příklad programu C:

#zahrnout //direktiva preprocesoru

testové otázky

1. Jaké jsou části programu C++?

2. Jak se liší definice od deklarace?

3. Vyjmenujte fáze vytváření spustitelného programu v C++.

4. Co je to preprocesor?

5. Co je direktiva preprocesoru? Uveďte příklady direktiv preprocesoru.

6. Napište program, který vypíše text „Můj první program v C++“

2. Základní možnosti jazyka C++ 2.1 Skladba jazyka

V textu v jakémkoli přirozeném jazyce lze rozlišit čtyři hlavní prvky: symboly, slova, fráze a věty. Algoritmický jazyk také takové prvky obsahuje, pouze slova se nazývají lexémy (elementární konstrukce), fráze - výrazy, věty - operátory. Tokeny se tvoří ze symbolů, výrazy z lexémů a symbolů, operátory ze symbolů výrazů a lexémů (obr. 1.1)

Rýže. 1.1. Složení algoritmického jazyka Prvky algoritmického jazyka jsou tedy:

Identifikátory jsou názvy objektů C-programu. V identifikátoru lze použít latinská písmena, čísla a podtržítka. Rozlišují se velká a malá písmena, například PROG1, prog1 a Prog1 jsou tři různé identifikátory. První znak musí být písmeno nebo podtržítko (nikoli číslo). Mezery v identifikátorech nejsou povoleny.

Klíčová (vyhrazená) slova jsou slova, která mají pro překladač speciální význam. Nelze je použít jako identifikátory.

- Znaky operace jsou jeden nebo více symbolů, které definují operaci na operandech. Operace se dělí na unární, binární a ternární podle počtu operandů zapojených do této operace.

Konstanty jsou neměnné hodnoty. Existují celočíselné, reálné, znakové a řetězcové konstanty. Překladač rozlišuje konstantu jako token (elementární konstrukt) a podle vzhledu ji přiřadí k jednomu z typů.

Oddělovače - závorky, tečka, čárka, mezery.

2.1.1. Konstanty v C++

Konstanta je token, který představuje reprezentaci pevné číselné, řetězcové nebo znakové hodnoty.

Konstanty jsou rozděleny do 5 skupin:

Celý;

- reálný (s plovoucí desetinnou čárkou);

vyjmenovaný;

Symbolický;

Tětiva.

Kompilátor vybere lexém a přiřadí jej jedné nebo druhé skupině a poté interně

tři skupiny k určitému typu podle jeho formy zápisu v textu programu a podle číselné hodnoty.

Celočíselné konstanty mohou být desítkové, osmičkové a šestnáctkové. Desetinná konstanta je definována jako posloupnost desetinných číslic, která nezačíná na 0, pokud toto číslo není 0 (příklady: 8, 0, 192345). Osmičková konstanta je konstanta, která vždy začíná 0. Za 0 následují osmičkové číslice (příklady: 016 - desítková hodnota 14, 01). Hexadecimální konstanty jsou posloupností hexadecimálních číslic, kterým předcházejí znaky 0x nebo 0X (příklady: 0xA, 0X00F).

V v závislosti na hodnotě kompilátoru celočíselných konstant prezentovat to jinak

v paměti počítače (tj. kompilátor přiřadí konstantě vhodný datový typ).

Reálné konstanty mají jinou formu vnitřní reprezentace v paměti počítače. Překladač rozpozná takové konstanty podle jejich tvaru. Reálné konstanty mohou být reprezentovány ve dvou formách: s pevnou řádovou čárkou a s pohyblivou řádovou čárkou. Typ konstanty s pevnou řádovou čárkou: [číslice].[číslice] (příklady: 5,7, .0001, 41.).Typ konstanty s pohyblivou řádovou čárkou: [číslice][.][číslice]E|e[+|-][číslice ] (příklady: 0,5e5, .11e-5, 5E3). V zápisu reálných konstant lze vynechat buď celé číslo nebo zlomkovou část, případně desetinnou čárku nebo znaménko exponentu s exponentem.

Výčtové konstanty jsou zavedeny pomocí klíčového slova enum. Jedná se o běžné celočíselné konstanty, kterým je přiřazen jedinečný a snadno použitelný zápis. Příklady: enum ( jeden=1, dva=2, tři=3,čtyři=4);

enum (nula,jedna,dva,tři) - pokud v definici výčtových konstant vynecháte znaménka = a číselné hodnoty, budou hodnoty přiřazeny standardně. V tomto případě dostane identifikátor nejvíce vlevo hodnotu 0 a každý následující se zvýší o 1.

enum( deset=10, tři=3, čtyři, pět, šest);

enum (neděle, pondělí, úterý, středa, čtvrtek, pátek, sobota-

Znakové konstanty jsou jeden nebo dva znaky uzavřené v apostrofech. Znakové konstanty skládající se z jednoho znaku jsou typu char a zabírají jeden bajt v paměti, znakové konstanty sestávající ze dvou znaků jsou typu int a zabírají dva bajty. Sekvence začínající znakem \ se nazývají escape sekvence, používají se:

- Chcete-li znázornit znaky, které nemají grafické zobrazení, například:

\a - zvukový signál,

\b - návrat o jeden krok, \n - posun řádku,

\t - horizontální tab.

- Pro znázornění znaků: \ , ’ , ? , “ (\\, \’ ,\? ,\”).

- K reprezentaci znaků pomocí hexadecimálních nebo osmičkových kódů (\073, \0xF5).

Řetězcová konstanta je posloupnost znaků uzavřená v uvozovkách.

Řídicí znaky lze také použít v řetězcích. Například: "\nNový řádek",

“\n\”Algoritmické programovací jazyky na vysoké úrovni\”” .

2.2. Datové typy v C++

Data zobrazují okolní svět v programu. Účelem programu je zpracovávat data. Data různé typy ukládat a zpracovávat jinak. Datový typ definuje:

1) Interní reprezentace dat v počítačové paměti;

2) množina hodnot, které mohou hodnoty tohoto typu nabývat;

3) operace a funkce, které lze aplikovat na data tohoto typu.

V V závislosti na požadavcích úlohy programátor zvolí typ pro programové objekty. Typy C++ lze rozdělit na jednoduché a složené typy. Jednoduché typy jsou typy, které se vyznačují jedinou hodnotou. C++ definuje 6 jednoduchých datových typů:

int (celé číslo)

znak (znak)

wchar_t (široký znak) bool (booleovský) float (skutečný)

double (skutečné s dvojitou přesností)

Existují 4 typové specifikátory určující vnitřní reprezentaci a rozsah standardních typů

krátký (krátký) dlouhý (dlouhý) podepsaný (podepsaný)

nepodepsaný

2.2.1. zadejte int

Hodnoty tohoto typu jsou celá čísla.

Velikost typu int není definována standardem, ale závisí na počítači a kompilátoru. Pro 16bitový procesor jsou mu přiděleny 2 bajty, pro 32bitový procesor 4 bajty.

Pokud je před int krátký specifikátor, pak jsou číslu přiděleny 2 bajty, a pokud je specifikátor dlouhý, pak 4 bajty. Sada závisí na množství paměti přidělené objektu. povolené hodnoty, které může objekt přijmout:

short int - zabírá 2 bajty, má tedy rozsah -32768 ..+32767;

long int - zabírá 4 bajty, má tedy rozsah -2 147 483 648..+2 147 483 647

Typ int je stejný jako typ short int na 16bitových počítačích a typ long int na 32bitových počítačích.

Podepsané a nepodepsané modifikátory také ovlivňují sadu platných hodnot, které může objekt nabývat:

unsigned short int - zabírá 2 bajty, má tedy rozsah 0 ..65536; unsigned long int - zabírá 4 bajty, má tedy rozsah 0..+4 294 967

2.2.2. typ char

Hodnoty tohoto typu jsou prvky konečné uspořádané sady znaků. Každému znaku je přiřazeno číslo, které se nazývá kód znaku. Pod hodnotou typ postavy Je přidělen 1 bajt. Typ char lze použít s podepsanými a nepodepsanými specifikátory. Data se znaménkem mohou ukládat hodnoty v rozsahu -128 až 127. Znaky bez znaménka mohou ukládat hodnoty v rozsahu 0 až 255. Kódování používá ASCII (American Standard Code foe International Interchange). Symboly s kódy od 0 do 31 jsou symboly služeb a mají nezávislý význam pouze v příkazech I/O.

Hodnoty typu char se také používají k ukládání čísel ze zadaných rozsahů.

2.2.3. typ wchar_t

Navrženo pro práci se sadou znaků, pro které kódování nestačí 1 bajt, jako je Unicode. Velikost tohoto typu zpravidla odpovídá krátkému typu. Řetězcové konstanty tohoto typu se zapisují s předponou L: L"String #1".

2.2.4. typ bool

Typ bool se nazývá boolean. Jeho hodnoty mohou nabývat hodnot true a false. Vnitřní reprezentace false je 0, jakákoli jiná hodnota je interpretována jako true.

2.2.5. typy s plovoucí desetinnou čárkou.

Vnitřní zastoupení reálné číslo se skládá ze 2 částí: mantisa a exponent. V počítačích kompatibilních s IBM zabírají hodnoty float 4 bajty, z nichž jeden bit je přidělen pro znaménko mantisy, 8 bitů pro exponent a 24 pro mantisu.

Hodnoty typu double zabírají 8 bajtů, 11 a 52 číslic je přiděleno pro objednávku a mantisu. Délka mantisy určuje přesnost čísla, zatímco délka exponentu určuje jeho rozsah.

Pokud před dvojitým názvem typu předchází dlouhý specifikátor, jsou pro hodnotu alokovány bajty.

2.2.6. prázdný typ

Na mezi hlavní typy patří také typ void. Sada hodnot tohoto typu je prázdná.

2.3. Proměnné

Proměnná v C++ je pojmenovaná oblast paměti, která ukládá data určitého typu. Proměnná má jméno a hodnotu. Název se používá k označení oblasti paměti, kde je uložena hodnota. Jakákoli proměnná musí být před použitím deklarována. Příklady:

Celkový pohled na operátor popisu:

[paměťová třída] název typu [inicializátor];

Třída úložiště může nabývat následujících hodnot: auto, extern, static, register. Třída úložiště definuje životnost a rozsah proměnné. Pokud není třída úložiště explicitně specifikována, pak ji kompilátor určí na základě kontextu deklarace. Životnost může být konstantní - během provádění programu, nebo dočasná - během bloku. Rozsah je část textu programu, ze které je povolen normální přístup k proměnné. Obvykle je rozsah stejný jako rozsah. Kromě případů, kdy je ve vnitřním bloku proměnná se stejným názvem.

Const - označuje, že tuto proměnnou nelze změnit (pojmenovaná konstanta). Při popisu můžete proměnné přiřadit počáteční hodnotu (inicializace). Třídy paměti:

auto je automatická lokální proměnná. Auto specifier lze zadat pouze při definování objektů bloku, například v těle funkce. Paměť je těmto proměnným přidělena při vstupu do bloku a uvolněna při opuštění bloku. Mimo blok takové proměnné neexistují.

extern je globální proměnná, nachází se jinde v programu (v jiném souboru nebo později v textu). Používá se k vytváření proměnných, které jsou dostupné ve všech programových souborech.

static je statická proměnná, existuje pouze v souboru, kde je proměnná definována.

registr - podobně jako auto, ale paměť pro ně je alokována v registrech procesoru. Pokud to není možné, pak jsou proměnné považovány za automatické.

int a; //globální proměnná void main()(

int b;//místní proměnná

extern int x;//proměnná x je definována jinde statická int c;//lokální statická proměnná a=1;//přiřazení ke globální proměnné

int a;//místní proměnná a

a=2;//přiřazení do lokální proměnné::a=3;//přiřazení do globální proměnné

int x=4;//definování a inicializace x

V příkladu je proměnná a definována mimo všechny bloky. Rozsah proměnné a je celý program s výjimkou těch řádků, kde je použita lokální proměnná a. Proměnné b a c jsou lokální, jejich rozsah je blokový. Životnost je odlišná: paměť pod b je alokována při vstupu do bloku (protože výchozí třída paměti je auto), uvolňuje se při jejím opuštění. Proměnná s (static) existuje, když je program spuštěn.

Pokud proměnné nejsou explicitně inicializovány, když jsou definovány, kompilátor nastaví globální a statické proměnné na nulu. Automatické proměnné nejsou inicializovány..

Název proměnné musí být v rámci svého rozsahu jedinečný.

Deklarace proměnné může být provedena buď jako deklarace, nebo jako definice. Deklarace obsahuje informace o třídě úložiště a typu proměnné a definice spolu s těmito informacemi dává pokyn k přidělení úložiště. V příkladu extern int x; - deklarace a zbytek - definice.

2.4 Znaky operací v C++

Operační znaky zajišťují tvorbu výrazů. Výrazy se skládají z operandů, operátorových znaků a závorek. Každý operand je zase výraz nebo speciální případ výrazu - konstanta nebo proměnná.

Unární operace

& získat adresu operandu

* Odkazování na adresu (dereference)

- unární mínus, změní znaménko aritmetického operandu

++ Zvýšení jednotky:

operace s prefixem - inkrementuje operand před jeho použitím

operace postfix inkrementuje operand poté, co byl použit

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

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

snížit o jednu:

operace s prefixem - redukuje operand na jeho použití

operace postfix snižuje operand poté, co byl použit

výpočet velikosti (v bajtech) pro objekt typu, že

má operand

má dvě podoby

velikost výrazu

sizeof(float)//4

sizeof(1.0)//8, protože skutečné konstanty jsou výchozí

Vzdělávací algoritmický jazyk je prostředek pro psaní algoritmů ve formě mezi psaním algoritmu v přirozeném (lidském) jazyce a psaním v počítačovém jazyce (programovací jazyk).

Mezi výhody vzdělávacího algoritmického jazyka patří jeho jednoduchost a také skutečnost, že algoritmus je napsán v ruštině pomocí určitého omezeného počtu slov, jejichž význam a způsob použití jsou přísně definovány. Tato slova se nazývají funkční slova.

Aby bylo možné odlišit služební slova od jiných slov jazyka, jsou při psaní podtržena.

Záznam algoritmu v učícím se algoritmickém jazyce se skládá z nadpisu a těla algoritmu. Tělo algoritmu je uzavřeno mezi klíčová slova brzy a ošidit a je posloupností příkazů algoritmu. Název obsahuje název algoritmu, odrážející jeho obsah, seznamy vstupních dat (argumentů) a výsledky.

Atributem hlavičky algoritmu je klíčové slovo alg.

Algoritmus napsaný ve vzdělávacím algoritmickém jazyce má tedy následující podobu:

alg název algoritmu

arg seznam počátečních údajů

střih výsledková listina

sekvence příkazů algoritmu

Školní algoritmický jazyk je vhodné začít studovat příkazem přiřazení, je to jeden z hlavních příkazů.

Píše se to takto:

<переменная> := <выражение>

Znak ": =" se čte "přiřadit".

V případě, že hodnota, ke které je hodnota přiřazena, je zahrnuta na pravé straně příkazu, dojde k následujícímu:

1) hodnota výrazu napsaného na pravé straně příkazu přiřazení se vypočítá pomocí aktuálních hodnot všech hodnot obsažených v tomto výrazu;

2) proměnné je přiřazena nová vypočtená aktuální hodnota. V tomto případě je předchozí hodnota proměnné zničena.

Proto příkaz b: = a + b znamená, že hodnota proměnné a se přičte k předchozí aktuální hodnotě b a získaný výsledek se stane novou aktuální hodnotou b.

Tento příklad ilustruje tři hlavní vlastnosti úkolu:

1) když proměnné není přiřazena hodnota, zůstává nedefinovaná;

2) hodnota přiřazená proměnné je v ní uložena až do dalšího přiřazení nové hodnoty této proměnné;

3) nová hodnota přiřazená proměnné nahradí její předchozí hodnotu.

Nyní se seznámíme se základními strukturami, začněme s takovou operací, jako je "následovat". Je tvořena sledem akcí, které následují za sebou:

dějství 1

dějství 2

. . . . . . . . .

akce n

Dále zvažte základní strukturu "větve". Poskytuje v závislosti na výsledku kontroly podmínky (ano nebo ne) volbu jednoho z alternativních způsobů algoritmu. Každá cesta vede ke společnému východu, takže algoritmus bude pokračovat bez ohledu na zvolenou cestu. Struktura větvení existuje ve čtyřech hlavních variantách:



1. jestliže-pak;

-li stav

pak akce

2. jestliže-pak-jinak;

-li stav

pak akce 1

v opačném případě akce 2

výběr

vpodmínka 1: akce 1

vpodmínka 2: akce 2

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

v podmínka N: akce N

{v opačném případěN+1 akcí}

A nakonec bude základní struktura cyklu pomocí školního algoritmického jazyka vypadat takto.

Ve školách studovat základy algoritmizace, tzv. školní algoritmický jazyk (výukový algoritmický jazyk), používající slova srozumitelná studentovi v ruštině. Na rozdíl od většiny programovacích jazyků není algoritmický jazyk vázán na architekturu počítače, neobsahuje detaily související se zařízením stroje.

Příklady

Algoritmus v algoritmickém jazyce je obecně napsán ve tvaru:

alg název algoritmu (argumenty a výsledky) daný podmínky použitelnosti algoritmu nutné cíl algoritmu brzy popis mezihodnot| sekvence příkazů (tělo algoritmu) ošidit

Při psaní algoritmu byla klíčová slova obvykle podtržena nebo zvýrazněna tučně. Pro zvýraznění logických bloků bylo použito odsazení a dvojice slov začátku a konce bloku byla spojena svislou čárou.

Příklad výpočtu součtu čtverců:

alg Součet čtverců ( arg Celý n, střih Celý S) daný| n > 0 nutné| S = 1*1 + 2*2 + 3*3 + … + n*n brzy Celý já | vstup n; S:=0 | nc pro i od 1 do n | | S:= S + i * i | kts | závěr"S=", S ošidit

E-workshop

Pro posílení teoretického studia programování v algoritmickém jazyce vytvořili specialisté z Mekhmat Moskevské státní univerzity v roce 1985 editor-kompilátor "E-workshop"("E" - na počest Ershova), který vám umožňuje zadávat, upravovat a spouštět programy v algoritmickém jazyce.

V roce 1986 byla vydána sada tréninkových světů (interpretů) pro „E-cvičení“: „Robot“, „Drafter“, „Dvounohý“, „Terénní vozidlo“, které vám umožňují jednoduše představit pojmy algoritmu. "E-workshop" byl implementován na počítačích: Yamaha, Corvette, UKNC a byl široce používán.

Tento programovací jazyk byl neustále vylepšován a v učebnici z roku 1990 se objevil popis pozdější verze „E-workshopu“. Programovací systém "KuMir" ("Sada vzdělávacích světů"), který podporuje tuto učebnici, byl vydán společností InfoMir v roce 1990. Jazyk tohoto systému se také nazývá „KuMir“.

V roce 1995 byl "KuMir" doporučen Ministerstvem školství Ruské federace jako hlavní vzdělávací materiál pro kurz "Základy informatiky a počítačového inženýrství" podle učebnice A. G. Kushnirenka, G. V. Lebedeva a R. A. Svorenyi. .

Kritika

Je však třeba poznamenat, že algoritmický jazyk, při absenci podrobností, které jej přímo spojují s architekturou počítače, nicméně odkazuje na Algolo - jako jazyky, implicitně učí studenty spoléhat se na von Neumannovu architekturu strojů. (Von Neumannova architektura je praktickou implementací dřívější myšlenky zvané Turingův stroj. Kromě Turingova nápadu existují i ​​jiné nápady. Nejpopulárnější z nich se nazývá Lambda Calculus: pracoval na něm Alonzo Church. Lisp Machine je architektura, která je založena na Lambdě - kalkul.)

Odkazy

  • A. P. Ershov. Algoritmický jazyk ve školním kurzu základů informatiky a výpočetní techniky. 05.07.1985
  • Fórum o ruských programovacích jazycích a vývojových nástrojích

Nadace Wikimedia. 2010 .

Podívejte se, co je "ruský algoritmický jazyk" v jiných slovnících:

    Algoritmický jazyk je formální jazyk používaný k psaní, implementaci nebo studiu algoritmů. Každý programovací jazyk je algoritmický jazyk, ale ne každý algoritmický jazyk je vhodný pro použití jako jazyk ... ... Wikipedie

    Tento výraz má jiné významy, viz Drak (významy). Příklad blokového diagramu algoritmu v draku jazyka DRAKON schématu DRAKON (Friendly Russian Algorithmic Language That Provides Visibility) visual ... ... Wikipedia

    Tento termín má jiné významy, viz Algoritmický jazyk. Učící se algoritmický jazyk je formální jazyk používaný k psaní, implementaci a učení algoritmů. Na rozdíl od většiny programovacích jazyků není vázán na ... Wikipedii

    Algoritmický jazyk (také ruský algoritmický jazyk, RAYA) je programovací jazyk používaný k psaní a studiu algoritmů. Při studiu informatiky na školách studovat základy algoritmizace, tzv. školní algoritmus ... ... Wikipedie

    Vzdělávací programovací jazyk je programovací jazyk určený k výuce programování specialistů. Takový jazyk musí splňovat hlavní požadavek: jednoduchost. Čím je to jednodušší, tím rychleji to začátečník zvládne. Možnosti takového ... ... Wikipedie

    Příklad blokového diagramu algoritmu v jazyce DRAKON dračí diagramy DRAKON (Friendly Russian Algorithmic Language That Provides Visibility) je vizuální algoritmický jazyk vytvořený v rámci vesmírného programu Buran. Rozvoj daný jazyk... Wikipedie