border=0

String verbal algoritme

Yn oerienstimming mei de hjirboppe beskreaune metoaden foar it beskriuwen fan formele talen kinne twa basisfoarmen ûnderskiede yn 'e fertsjintwurdiging fan algoritmen: symboalysk (verbal) en grafysk.

Rigel ynfoegje, lykas de namme neamt, is in folchoarder fan strings, elk dêrby befettet in beskriuwing fan ien of mear elemintêre aksjes. Dizze stringen kinne etiketten hawwe yn 'e foarm fan letters of ordinalnûmers. De logika fan 'e algoritme, d. De opdracht fan taken dy't aksjes wurde oanjûn as explicit dat it label oantsjutte is fan 'e folgjende line, of miskien - troch standert, wurdt de kontrôle oerbrocht nei de line nei de ien dy't útfierd is. "Elemintêre" aksje wurdt bepaald troch de mooglikheden fan 'e ûndernimmer.

Dizze manier foar it praten fan in algoritme moat as basis beskôge wurde, om't algoritmyske notysje foar elke toaniel, sawol minsk as technysk, skreaun wurde as in folchoarder fan linen. Foar in persoan kin algoritmyske skrift kin as ticht mooglik wêze as natueraal. Foar in technysk apparaat wurdt opnommen makke yn in spesjale formalisearre taal.

It neidiel fan 'e linefertsjintwurdiging fan' e algoritme is de oerlêst fan 'e holistyske opfetting fan' e logyske struktuer. In oantsjutting fan in feroaring yn 'e natuerlike folchoarder fan aksjes yn in string-yngong sjocht fan in keppeling nei in string mei in label. Yn it gefal fan in frij komplekse algoritme meitsje sokke keppelings it dreech om de logika en folchoarder fan aksjes te begripen, wat nedich is by it kontrolearjen en it debugjen fan it algoritme.

Besykje in pear foarbylden fan line opnaam algoritme foar ferskate keunstners.

De stap foar wurd wurd is in nûmere seker fan linen, elk dêrby befettet beskriuwingen fan spesifike aksjes yn natueraal. Dizze foarm wurdt brûkt as de útfining in persoan. Meastal, as foarbylden fan algoritmen yn dizze foarm presintearje, resepten, ynstruksjes foar gebrûk fan alle apparaten, ynstruksjes foar bebouwen fan beammen, ensfh. Dizze foarbylden kinne lykwols net goed beskôge wurde, om't se net sprekke oer de ynformaasjeferwurking, mar oer it bewurkjen fan aksjes dy't rjochte binne op it sammeljen fan in konklúzjend resultaat. Foarbylden fan dizze foarbyld fan presintaasje binne mathemale algoritme foar finite nûmers. Besykje de bekende euklidyske algoritme fan 'e skoalle foar it finen fan de grutste mienskiplike divisor fan twa natuerlike nûmers ( a en b ); De stap-by-word-beskriuwing liket sa:

1. As a = b, beskôgje it resultaat om in a; Finearje de berekkeningen.

2. As in> b, it ferskil fine a - b; nije wearde en lêze de ferskillende wearde; gean nei stap 1;

3. As b> a, fyn it ferskil b - a; nije wearde b om de ferskate wearde te lêzen; gean nei stap 1;

It befeiligjen fan in stap foar wurdfoarm is yn 'e universaliteit (yn relaasje mei de lessen fan' e beskreaune algoritme), it brûken fan 'e natuerlike nasjonale taal foar opnimmen fan struktueren, en it ûntbrekken fan string formalisaasje. De foarm wurdt breed brûkt om ferskate training-algoritme foar te stellen.

Formule is in tekenriem fan aksje dy't numeryske, symboalyske of logyske gegevens ferwurke. Formulen dy't foar de útfierer "minske" bedoeld binne, kinne net needsaaklik lytser wêze - dit liedt ta wat dúdlikens yn 'e oarder fan hannelingen, dy't lykwols gjin ynfloed hat op it resultaat fan berekkeningen op grûn fan ferwurven en kombinaasjewetsjes.

Foarbyld:

As de formule skreaun is foar kompjûter troch in kompjûter, wurdt it stribjend yn line formulier presintearre, en foar de ienichheid fan 'e hannelingen wurde prioriteiten fan de operaasjes ynsteld. Bygelyks yn 'e PASCAL-taal wurde de folgjende prioriteiten nommen foar wiskundige en logyske operaasjes:

Operaasjes yn 'e klanken;

Eksponintaasje, berekkening fan 'e wearde fan standertfunksjes en funksjesproseduere;

Logyske negaasje NOT;

Multiplikaasje, divyzje, integer divyzje (div), residint fan inkelige divyzje (mod), logysk EN (AND);

Addison, subtraksje, logikaar OR (OR);

Relaasje operaasjes (>, <, =,> =, <=, <>).

Neist dizze prioriteiten wurdt in ekstra regel fêststeld:

Yn 'e oanwêzigens fan operaasjes fan gelikens prioriteit wurde se yn bestelling útfierd nei rjochts.

De boppesteande formule, skreaun neffens de prioriteiten en de regel, sil sa sjen:

De ferwurking fan symboalyske ynformaasje wurdt útfierd troch beskate funksjes en prosedueres.

Pseudocode is in persoan - oriïntearre "persoan" foar in partal formalisearre taal dy't jo algoritmen yn in foarm skriuwt dy't tige ticht by Algol-like programmearrings is. De term "diels formalisearre" betsjuttet yn dit gefal dat allinich yn 'e pseudo-koade allinich de regels foar skriuwkontrolstrukturen strikt definieare, en de beskriuwing fan' e hannelingen sels bliuwe natuerlik. Pseudocode hat in Russyske basisbasis en wurdt benammen brûkt yn it ûnderwiis fan 'e basis fan programmearring.

De algoritme presintearret mei de autokoade is in folchoarder fan strings, elk dêrby befettet in beskriuwing fan aksjes as foar de dataferwurking of foar it behearen fan it ferwurkjen proses. De folgjende tekens wurde brûkt foar it opnimmen fan kontrônstrukturen:

Utergresje: ALG - it begjin fan 'e algoritme, PROC - it begjin fan de proseduere, KSC; - ein fan proseduere, KSC. - it ein fan it algoritme;

Ofdieling: IF ... DAT ... SONNENWURD ... ALLE; Nei IF is in beskriuwing fan in logyske betingst wêryn in branch is, nei THEN - in beskriuwing fan aksjes (der kin miskien wêze) dy't útfierd wurde as de betingst is TRUE, as de ôfdieling foltôge wurdt - alternatyf ALTERNATIVE alternative aksjes wurde beskreaun, yn elts gefal wurdt it wurd ALLE oan it ein set, dat is in teken fan it ein fan dizze struktuer;

Rydte: YET ... REPEAT ... KC; Nei BYE is in beskriuwing fan 'e logyske betingsten fan it útfieren fan de loopkommando's setten, nei REPEAT - in beskriuwing fan' e hannelingen (fytskant), CC is in teken fan it ein fan 'e szyklike bou.

Faak, as jo in algoritme skriuwe, yndividuele aksje ende mei in skiedingstermint (bygelyks ";") - dit lit jo miskien foarkomme as de aksje beskriuwt mear as ien line. Dêrnjonken wurdt foar lêsberens en dúdlikens de saneamde "strukturele ynfier" brûkt, wêryn yndividuele eleminten fan struktueren net opnommen binne fan it begjin fan 'e rigel, mar mei in yndruk dat it nêst en subordinaasje fan dizze eleminten sjen lit.

As foarbyld fan in algoritme skreaune mei pseudo-koade, jouwe wy de Euklidyske algoritme foar it finen fan de GCD fan twa yntegers ( a en b ) dy't hjirboppe besprutsen binne.

Befeiliging fan it brûken fan pseudo-koade is yn kombinaasje fan relatyf hurdens fan syntaktyske struktueren en har Russyske basis. De proximiteit fan pseudo-koade nei programmierspraken makket it maklik om ien fan 'e oare te wikseljen. Dochs is it ûntbrekken fan formele regels foar opnimmen fan aksjes foarkomt it gebrûk fan pseudo-koade foar it kompilearjen fan algoritme útfierd troch technyske apparaten.

In programmearjende taal is in keunstmjittige formalisearre taal dy't ûntwikkele is om in algoritme op te meitsjen foar de "komputer" artyst, de meta-taal is natueraal. In programmearsysteem streng befêstiget (d.i. definieare) sawol in byld fan kontrôtstrukturen, in beskriuwing fan akseptabel aksjes, en syntaktyske regels foar it oplizzen fan komplekse struktueren.

Der binne minder nivo (masineorientearre) en hege nivo (masine-ûnôfhinklike) talen. Talen fan it earste type binne:

· Machine > (machine code >

Assembler (makro-assembler) - in taal fan symboalysk kodearjen - operators fan 'e taal binne masineynstruksjes wêrmei't mnemonike symboalen oansteld wurde, en as operanten, net spesifike adressen yn RAM, mar har symboalynnammen wurde brûkt.

Foarbyld assemblerbehearders:

CLA - helje ien fan 'e addere registers (akkumulator);

ADD - de tafoeging fan de ynhâld fan 'e sel, wêryn't nûmer is nei it kommando skreaun, mei de ynhâld fan' e batterij; it resultaat bliuwt yn 'e batterij;

MOV - de ynhâld fan 'e batterij wurdt stjoerd nei' e sel mei it nûmer dat opnommen is nei it kommando;

HLT - stop.

Fansels befetsje assemblers oare kommando's.

Bysûnder in ienfâldige foarbyld fan de tafoeging fan de getallen a , b, en c. It resultaat moat oan 'e fariabele wurde d.

It algoritme is opnaam yn in ASC-kodearre tekstredakteur. It is dúdlik dat in oar tydlik programma nedich is om tekst yn in sesje fan masineynstruksjes te konvertearjen - it wurdt in kompiler neamd. Op it kompilearjende poadium wurdt ek gegevens ferparte yn RAM; tagelyk, ynstee fan variable nammenammen, de relatyf adressen fan 'e sellen wêryn't de gegevens lizze binne substituearre. It bestjoeringssysteem tsjinnet absolute adressen oan de gegevens by it plannen fan it programma yn 'e ram's RAM foar foardieling.

Assembler is in masine-ôfhinklike taal, d. it programma dat skreaun is kin allinich op dy technyk útfierd wurde, krekter troch it type prosessor dêr't syn assembler brûkt waard.

Foar alle hege nivo's is it gewoan dat se net op it kommando-systeem fan in bepaalde masine fokusje, mar op in systeem fan operators, karakteristyk foar it skriuwen fan in bepaalde klasse fan algoritmen. Foarbylden fan sokke ferklearrings dy't yn alle programmingtalen steane, binne opraasjebedriuwen, betingsten operators, en fytsoperators - de reden dêrfoar wurde sprakegeande besprutsen; Dêrnjonken binne der needsaaklik ynput-útstallings foar útfiering fan programma-ynteraksje mei de brûker.

Troch funksje kinne hege nivo's programmearrings as probearrjochte en universele ûnderskiede wurde . Fan 'e klassennamen is dúdlik dat de earste binne bepaald om wat spesifike problemen op te lossen fan in bepaalde ôfdieling fan kennis.

Foarbylden binne de FORTRAN-taal (FORmula TRANslator) - in taal foar it oplossen fan komplekse wittenskiplike en yngenieurproblemen (troch de manier, dit wie de earste heechste nivo fan programmearringstaal); COBOL (mienskiplike bedriuw oanwiisde taal) - taal foar it oplossen fan ekonomyske en kommersjele problemen; LISP (List Processing > taal dy't brûkt wurdt by it oplossen fan problemen fan keunstmjittige yntelliginsje. Universele talen binne PASCAL (Philips Automatic Sequence Calcator), BASIC (Beginner ALL-Symbolic Instruction Code), C (C ++), Jawa, en ek moderne fisuele programmearminen DELPHI, VISUAL BASIC, ensfh. Dizze talen kinne jo beheine, , elke opdracht, hoewol de kompleksiteit fan in spesifike taak yn ferskillende talen liedt sil ferskille.

In oar eigenskip, wêrtroch't de klassifikaasje fan programmingtalen mooglik is, is it programmeard paradigm, dat is in set fan fundamental ideeën en oanwêzigen dy't it model foar data presintaasje en ferwurking bepale, lykas programming methodology. De wichtichste ferskillen yn paradigma's binne yn tabel presintearre. 8.1.

Tabel 8.1

Programming paradigm Presentaasje fan programma's en gegevens Utfiering fan it programma Kommunikaasje tusken programma-dielen
Procedural Programma en gegevens binne los, elke eleminten. Finale útfiering fan ferklearrings Allinne mooglik troch dielde gegevens
Object orientearre Donein en ferwurkingsmetoaden wurde yn in ien en oar kapslein. Foljen fan eveneminten en reaksjes fan objekten nei dizze eveneminten Separate dielen fan it programma kinne metoaden en data-eleminten fan elkoar erfiere.
Logysk Daten en regels foar har ferwurkjen wurde kombinearre yn in ienige logyske struktuerfoarming. Ferbettering fan logyske oplieding yn oerienstimming mei de logyske regels It programmearjen yn losse ûnôfhinklike dielen is swier.

Op it stuit hat de programmer in tige breed oanbod fan taal-ark oan syn beskikking, wêrfan foar elke bysûndere opdracht it ien kin kieze dy't it oplossje kin op 'e optimale manier.

Earst komme wy nei it idee dy't earder útdrukt is: de kompjûter yn relaasje mei de brûker is net de iennige performer, mar wurdt fersoarge troch in ferskaat oan performers, wêrfan't it nedich is om de measte gaadlike te kiezen foar de taak.





Sjoch ek:

Single Error Correction Codes

Haadstik 3. Kodearjende symboalyske ynformaasje

Algoritmyske Postmasine

Foarbyld 5.1

Foarbyld 4.1

Gean werom nei Tafel Ynhâld: Teoretyske Stiftingen fan Computer Science

2019 @ edudocs.fun