11
1 Algoritmi: caracteristici, reprezentare, implementare Reprezentarea algoritmilor După etapa de analiză a problemei în care s-au stabilit datele de intrare şi cele de ieşire, urmează etapa de elaborare a algoritmului. Acesta trebuie reprezentat într-un mod inteligibil. Întrebarea este cum putem să reprezentăm algoitmul astfel încât să fie înteles de cei ce îl citesc? Un posibil răspuns ar fi – printr-un limbaj de programare. Este un raspuns bun pentru cei ce cunosc acel limbaj de programare, însa ceilalţi nu vor întelege nimic. Nu putem să impunem altora să învete acel limbaj doar pentru a intelege algoritmii descrişi de noi. În plus, se observă că nu există niciun limbaj de progamare care să dureze sau care să fie acceptat de toata lumea. Este deci necesară utilizarea unui limbaj comun de repezentare a algoritmilor, dând apoi posibilitatea fiecarui programator să “traducă” algoritmul în ce limbaj de programare doreşte. De-a lungul timpului s-au remarcat două modalităţi de reprezentare a algoritimilor: schemele logice şi limbajul pseudocod. SCHEME LOGICE Schemele logice reprezintă un algoritm în mod grafic, folosind blocuri diferite pentru operaţii diferite. Această metodă are unele dezavantaje: schemele sunt stufoase, greu de urmărit. În tabelul urmator prezentăm tipurile de blocuri folosite în reprezentarea algoritmilor. Schemele logice sunt mai utile celor care abia învaţă să programeze şi deci sunt în faza de formare a gândirii algoritmice. Recomandăm ca la scrierea schemelor logice să se scrie mai întâi conţinutul blocului şi apoi să se deseneze blocul corespunzător. Pentru întocmirea unei scheme logice corecte sunt necesare respectarea unor anumite reguli după cum urmează: Orice schemă logică se întocmeşte de sus în jos; Legătura intre blocurile schemei se face numai prin săgeţi, pentru a stabili sensul de parcurgere; În cazul întâlnirii unui bloc de decizie se precizează deasupra liniilor de legătură când expresia

Algoritmi: caracteristici, reprezentare, implementare ... · Structura liniară este cea mai simplă structură de control din algoritmică. Structura liniară sau secvenţială execută

  • Upload
    others

  • View
    42

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Algoritmi: caracteristici, reprezentare, implementare ... · Structura liniară este cea mai simplă structură de control din algoritmică. Structura liniară sau secvenţială execută

1

Algoritmi: caracteristici, reprezentare, implementare

Reprezentarea algoritmilor După etapa de analiză a problemei în care s-au stabilit datele de intrare şi cele de ieşire, urmează etapa de elaborare a algoritmului. Acesta trebuie reprezentat într-un mod inteligibil. Întrebarea este cum putem să reprezentăm algoitmul astfel încât să fie înteles de cei ce îl citesc? Un posibil răspuns ar fi – printr-un limbaj de programare. Este un raspuns bun pentru cei ce cunosc acel limbaj de programare, însa ceilalţi nu vor întelege nimic. Nu putem să impunem altora să învete acel limbaj doar pentru a intelege algoritmii descrişi de noi. În plus, se observă că nu există niciun limbaj de progamare care să dureze sau care să fie acceptat de toata lumea. Este deci necesară utilizarea unui limbaj comun de repezentare a algoritmilor, dând apoi posibilitatea fiecarui programator să “traducă” algoritmul în ce limbaj de programare doreşte. De-a lungul timpului s-au remarcat două modalităţi de reprezentare a algoritimilor: schemele logice şi limbajul pseudocod.

SCHEME LOGICE

Schemele logice reprezintă un algoritm în mod grafic, folosind blocuri diferite pentru operaţii diferite. Această metodă are unele dezavantaje: schemele sunt stufoase, greu de urmărit. În tabelul urmator prezentăm tipurile de blocuri folosite în reprezentarea algoritmilor. Schemele logice sunt mai utile celor care abia învaţă să programeze şi deci sunt în faza de formare a gândirii algoritmice. Recomandăm ca la scrierea schemelor logice să se scrie mai întâi conţinutul blocului şi apoi să se deseneze blocul corespunzător.

Pentru întocmirea unei scheme logice corecte sunt necesare respectarea unor anumite reguli după cum urmează:

Orice schemă logică se întocmeşte de sus în jos; Legătura intre blocurile schemei se face numai prin săgeţi, pentru a stabili sensul de

parcurgere; În cazul întâlnirii unui bloc de decizie se precizează deasupra liniilor de legătură

când expresia

Page 2: Algoritmi: caracteristici, reprezentare, implementare ... · Structura liniară este cea mai simplă structură de control din algoritmică. Structura liniară sau secvenţială execută

2

Blocurile specifice schemelor logice

Page 3: Algoritmi: caracteristici, reprezentare, implementare ... · Structura liniară este cea mai simplă structură de control din algoritmică. Structura liniară sau secvenţială execută

3

LIMBAJUL PSEUDOCOD Limbajul pseudocod este un ansamblu de convenţii (codificări) care definesc operaţiile(instrucţiunile) permise pentru reprezentarea algoritmilor. Respectand aceste convenţii,chiar în forme diferite, algoritmii reprezentaţi în pseudocod pot fi citiţi de orice persoană,indiferent că este sau nu programator. Limbajul pseudocod nu respectă o sintaxa anume, nu are un standard. Sunt doar nişte convenţii pe care trebuie să le respectăm atunci când reprezentăm un algoritm. Înstructiunile se pot scrie în limba engleză sau în limba română. În acest material şi în cele ce urmează vom adopta un limbaj cu instrucţiuni în limba română. În pseudocod putem scrie declarări de variabile, specificând numele şi tipul lor. Pe lângă declaraţiile de variabile, limbajul pseudocod conţine cuvinte cheie, instrucţiuni (început,sfârşit, intrare/ieşire, atribuire, decizie, selecţie, repetitive), proceduri/funcţii. Toate acestea vor fi prezentate pe larg în fişa de documentare următoare. Prezentăm mai jos corespondenţa între instrucţiunile pseudocod şi blocurile din schemele logice.

Page 4: Algoritmi: caracteristici, reprezentare, implementare ... · Structura liniară este cea mai simplă structură de control din algoritmică. Structura liniară sau secvenţială execută

4

Descrieți etapele de rezolvarea şi scrieţi un algoritm care sa calculeze aria si perimetrul unui patrat de latura L, citita de la tastatura.

Rezolvare:

Analiza problemei:

Datele de intrare(Ce se cunoaste?): L, numar natural citit de la tatstatura

Datele de iesire(Ce se cere?): A - aria patratului si P-perimetrul patratului

Algoritm in limbaj natural:

- citeste de la tastatura valoarea variabilei L

- calculeaza cu ajutorul formulelor matematice aria si perimetru patratului

- afiseaza pe ecran valoarea ariei si a perimetrului

Algoritm in limbaj pseudocod

Algoritm in schema logica

inceput. lntreg L; citeste L; A=L*L; P=4*L; scrie "Aria este A=", A; scrie "Perimetrul este P=", P; sfarsit;

Page 5: Algoritmi: caracteristici, reprezentare, implementare ... · Structura liniară este cea mai simplă structură de control din algoritmică. Structura liniară sau secvenţială execută

5

Descrieți etapele de rezolvarea şi scrieţi un algoritm care sa calculeze media aritmetica dintre trei numere naturale. Rezolvare: Analiza problemei: Date de intrare(Ce se cunoaste?): a, b, c trei numere naturale citite de la tastatura Date de ieşire(Ce se cere?): ma - media artitmetica a celor trei numere Algoritm în limbaj natural: - citeşte valori pentru cele tei variabile a,b,c - calculeaza media aritmetica a celor trei numere cu formula matematica ma=(a+b+c)/3 - afişeaza media aritmetica ma

Algoritm in limbaj pseudocod

Algoritm in schema logica

inceput intreg a,b,c; citește a, b, c numere naturale ma=(a+b+c)/3 scrie " Media aritmetica este ma=", ma sfarsit;

Page 6: Algoritmi: caracteristici, reprezentare, implementare ... · Structura liniară este cea mai simplă structură de control din algoritmică. Structura liniară sau secvenţială execută

6

STRUCTURA LINIARĂ

Structura liniară este cea mai simplă structură de control din algoritmică. Structura liniară sau secvenţială execută instrucţiunile în ordinea in care apar, de la prima la ultima, fără salturi peste instrucţiuni şi fiecare înstructiune se execută doar o singura data. De exemplu daca avem n instrucţiuni:

instructiunea 1; instructiunea 2; instructiunea 3;

......................... instrucţiunea n;

PROBLEME 1) Se citeşte un număr natural care reprezintă timpul exprimat în minute. Scrieţi programul care afişează timpul exprimat în ore şi secunde.

Inceput. intreg m,s,h; citeste m; h=m div 60; s= m mod 60*60; scrie h,s; sfarsit.

START

Citeste m

h= m div 60

s= m mod 60*60

Scrie h, s

Page 7: Algoritmi: caracteristici, reprezentare, implementare ... · Structura liniară este cea mai simplă structură de control din algoritmică. Structura liniară sau secvenţială execută

7

2) Scrieţi un program care citeşte de la tastatură un număr natural cu trei cifre şi care afişează apoi numărul obţinut prin eliminarea cifrei din mijloc

Inceput. intreg n,u; citeste n; u=n mod 10; n=n div 100; n=n*10+u; scrie n; sfarsit.

START

Citeste n

u= n mod 10

n=n div 100

Scrie n

n=n *10+u

Page 8: Algoritmi: caracteristici, reprezentare, implementare ... · Structura liniară este cea mai simplă structură de control din algoritmică. Structura liniară sau secvenţială execută

8

STRUCTURA ALTERNATIVA

Structura alternativă apare în practică în două variante şi anume:

Structura alternativă: în acest caz se va executa doar unul din două blocuri de instrucţiuni în funcţie de valoarea de adevăr a unei expresii logice

Structura alternativă multiplă: în această situaţie se va executa un bloc de instrucţiuni din mai multe variante posibile.

Auzim în viata de zi cu zi afirmaţii de genul: DACĂ am promovat la toate materiile ATUNCI ma voi duce in tabara, ALTFEL stau sa invat. SFÂRŞIT DACĂ Se remarcă aici trei cuvinte ce au un rol deosebit: DACĂ, ATUNCI, ALTFEL. Propozitia are trei componente şi anume:

o conditie, transcrisă prin “am promovat la toate materiile”, conditie pe care o vom nota cu C;

o acţiune transcrisă prin mesajul “mă voi duce în tabără”, notata cu B1, acţiune asociata cu cuvântul ATUNCI, adică se execută dacă şi numai dacă “am promovat la toate materiile”;

o acţiune transcrisă prin mesajul “stau să învăţ”, notată cu B2, acţiune asociată cu cuvântul ALTFEL, adică se execută dacă şi numai dacă NU “am promovat la toate materiile”

Structura alternativă este implementată în limbajul C++ de instrucţiunea IF. În continuare vom prezenta modul de reprezentare a acestei structuri în limbaj pseudocod, în schemă logică şi în limbajul de programare C++. Modul de execuţie este identic pentru oricare din cele trei reprezentări. Sintetizănd cu notaţiile de mai sus structura alternativă se poate reprezenta astfel:

Page 9: Algoritmi: caracteristici, reprezentare, implementare ... · Structura liniară este cea mai simplă structură de control din algoritmică. Structura liniară sau secvenţială execută

9

Pot exista şi cazuri particulare de utilizare a acestei structuri, atunci cand unul dintre cele doua blocuri de instrucţiuni lipseste. Cazul 1. Daca lipseste B2 atunci structura se reprezinta astfel:

Cazul 2. Daca lipseste B1 atunci structura se reprezinta astfel:

Pot exista şi situaţii în care structurile alternative sunt incluse unele in altele. In acest caz spunem ca instrucţiunilie if sunt imbricate. Exista o regula de asociere a cuvântului else de if: „În situatia instructiunilor if imbricate, si atunci cand pentru gruparea instrucţiunilor nu se folosesc acolade cuvantul else se asociază primului cuvant if aflat la stanga lui.(asemanator cu asocierea inchiderii corecte a grupurilor de paranteze din matematica).” În exemplul următor este sugerat cum sunt imbricate 3 instructiuni if. Pentru a le putea identifica uăor ele sunt scrise cu culoari diferite (negru, albastru si portocaliu).

Page 10: Algoritmi: caracteristici, reprezentare, implementare ... · Structura liniară este cea mai simplă structură de control din algoritmică. Structura liniară sau secvenţială execută

10

Dacă în aceasta schemă grupăm instrucţiunile cu acolade se poate schimba fundamental structura programului:

Se observă că primul cuvânt else este asociat cu cel de-al doilea if, acest lucru fiind determinat de gruparea între acolade a instructiunii if (c3), reprezentate pe desen cu portocaliu Probleme 1) Sa se scrie algoritmul in pseudocod si schema logica pentru rezolvarea ecuatiei ax+b=0 Pseudocod Schema logica

inceput. real a,b,x; citeste a,b daca a=0 atunci daca b=0 atunci scrie „x nu exista”; altfel scrie „x oricare” sfarsit_daca; altfel xb/a scrie x; sfarsit_daca; sfarsit.

Page 11: Algoritmi: caracteristici, reprezentare, implementare ... · Structura liniară este cea mai simplă structură de control din algoritmică. Structura liniară sau secvenţială execută

11

2) Sa se scrie algoritmul in pseudocod si schema logica pentru aflarea maximului dintre trei numere intregi a,b,c Pseudocod Schema logica

inceput. intreg a,bc; citeste a,b,c; daca a>b atunci daca a>c atunci scrie a altfel scrie c sfarsit_daca; altfel daca b>c atunci scrie b; altfel scrie c; sfarsit_daca; sfarsit_daca; sfarsit.