Lad os nedbryde forskellen mellem et program og en algoritme, og hvordan de arbejder sammen for at udføre opgaver inden for datalogi.
algoritme
* Definition: En algoritme er en veldefineret, trin-for-trin-procedure eller sæt instruktioner til løsning af et specifikt problem eller udførelse af en bestemt opgave. Det er en logisk plan, en præcis plan. Tænk på det som en opskrift på en computer at følge.
* Egenskaber ved en god algoritme:
* entydig: Hvert trin er klart og har kun en fortolkning.
* endelig: Algoritmen skal afsluttes efter et begrænset antal trin. Det kan ikke fortsætte for evigt.
* effektiv: Hvert trin skal være grundlæggende og gennemførligt på en begrænset tid ved hjælp af tilgængelige ressourcer.
* input: Algoritmen accepterer nul eller flere input.
* output: Algoritmen producerer en eller flere output.
* korrekthed: Det skal give det rigtige resultat for alle gyldige input.
* Effektivitet: Det skal bruge ressourcer (tid og hukommelse) effektivt.
* Eksempler:
* Søgning på en sorteret liste efter et specifikt nummer (f.eks. Binær søgning)
* Sortering af en liste over navne alfabetisk (f.eks. Merge sortering, QuickSort)
* Find den korteste sti mellem to byer på et kort (f.eks. Dijkstra's algoritme)
* Beregning af faktoren for et tal
* Repræsentation: Algoritmer kan udtrykkes på flere måder:
* Naturligt sprog: (f.eks. Engelsk) Mindre præcis, men forståelig.
* pseudocode: En mere struktureret og kodelignende notation, der er lettere at oversætte til faktisk kode. Det er en blanding af naturlige sprog og programmeringslignende konstruktioner.
* flowcharts: Grafiske repræsentationer ved hjælp af symboler til at vise strømmen af trin.
program
* Definition: Et program er en konkret implementering af en algoritme på et specifikt programmeringssprog. Det er algoritmen oversat til en form, som en computer kan forstå og udføre. Det er den faktiske kode, du skriver.
* forhold til algoritmer: Et program * legemliggør * en algoritme. Algoritmen er *-ideen *, og programmet er *realisering *af denne idé. Du kan have flere programmer, der alle implementerer den samme algoritme, men skrevet på forskellige sprog eller med forskellige kodende stilarter.
* Krav:
* Syntaks: Det skal følge de grammatiske regler (syntaks) af programmeringssproget.
* semantik: Det skal have en defineret betydning (semantik), så computeren ved, hvad de skal gøre på hvert trin.
* eksekverbar: Det skal være i en form, som computerens processor kan forstå og udføre (ofte kræver kompilering eller fortolkning).
* Eksempler:
* Et Python -script, der bruger QuickSort -algoritmen til at sortere en liste over numre.
* En Java -applikation, der implementerer Dijkstra's algoritme for at finde den korteste rute på et kort.
* Et C ++ -program, der beregner factorials.
* En JavaScript -funktion, der validerer en brugers forminput.
hvordan de bidrager til udførelse
1. Problemdefinition: Først identificerer du det problem, du vil løse (f.eks. "Sorter en liste over tal").
2. algoritmesign: Du designer en algoritme til at løse problemet. Dette involverer at finde ud af de logiske trin og deres rækkefølge (f.eks. Vælg QuickSort som algoritmen).
3. Programimplementering: Du oversætter algoritmen til et program ved hjælp af et programmeringssprog (f.eks. Skriv et Python -program, der implementerer QuickSort).
4. kompilering/fortolkning: Programmet samles derefter (oversættes til maskinkode) eller fortolkes (udført linje for linje) af computeren.
5. eksekvering: Computeren udfører instruktionerne i programmet, efter de trin, der er defineret af algoritmen, for at producere det ønskede output.
analogi
Tænk på at bage en kage:
* algoritme: Kageopskriften (instruktionerne)
* Program: Du følger opskriften ved at bruge ingredienser og værktøjer til faktisk at bage kagen.
Nøgleforskelle opsummeret
| Funktion | Algoritme | Program |
| ---------------- | ---------------------------------------------------------------------------------------------------------- |
| Natur | Abstrakt, konceptuel, en logisk plan | Beton, eksekverbar kode |
| Repræsentation | Naturligt sprog, pseudocode, flowcharts | Programmeringssprog (f.eks. Python, Java, C ++) |
| udførelse | Ikke direkte eksekverbar | Eksekverbar af en computer |
| fokus | Logik og trin til at løse et problem | Implementering af logikken i kode |
Kort sagt, algoritmen er "hvad" (hvad der skal gøres), og programmet er "hvordan" (hvordan man gør det ved hjælp af et specifikt sprog og computer). Du kan ikke have et arbejdsprogram uden en underliggende algoritme, og en veldesignet algoritme er vigtig for at skabe et effektivt og pålideligt program.