1 ALGORITMI. NOTIUNI GENERALE - Într-o definitie aproximativa : -Algoritmul este conceptul fundamental al informaticii. - algoritmul reprezinta o succesiune de pasi care poate îndeplini o anumita sarcina in functie de datele de intrare pt a obtine datele de iesire - mulţime finită de reguli de calcul care indică operaţiile elementare necesare şi ordinea efectuării lor în scopul rezolvării unei probleme într-un timp finit - metodă (procedeu) de rezolvare a unei probleme Observaţii: 1. Oricărei probleme care admite o formulare matematică i se poate asocia un algoritm. 2. Dezvoltarea unui algoritm este, în general, mai dificilă decât scrierea programului sursă pe baza algoritmului. Caracteristici fundamentale: Orice algoritm trebuie să îndeplinească cinci caracteristici: 1. generalitate - un algoritm trebuie sa ofere o metodă generală de rezolvare a unui anumit tip de probleme, pentru date iniţiale arbitrare. 2. precizie (claritate) - descrierea algoritmului trebuie facută fără ambiguităţi, iar comenzile trebuie să exprime operaţii cunos-cute calculatorului, care pot fi executate de către procesor. 3. determinare - la fiecare pas, acţiunea care urmează a fi executată trebuie să poată fi determinată fără echivoc şi unic pe baza acţiunilor precedente. 4. finitudinea - un algoritm trebuie să conducă la obţinerea rezultatelor într-un număr finit de paşi. 5. eficienţă - un algoritm trebuie să fie construit în aşa fel încât să folosească resurse hard cât mai puţine şi să necesită un timp minim de execuţie. 6. executabilitate - algoritmul ca întreg şi fiecare pas al său trebuie să poată fi executat. OBSERVATIE: 1. Nerespectarea acestor caracteristici generale conduce la obtinerea de algoritmi neperformanti, posibil infiniti sau nerealizabili. 2. Observatia1. Nu orice problema admite un algoritm de rezolvare. Observatia2. Doi agoritmi sunt echivalenti cand pentru aceleasi date de intrare se obtin aceleasi date de iesire.
12
Embed
ALGORITMI. NOTIUNI GENERALE - informatik.ddbuftea.ro · 1 ALGORITMI. NOTIUNI GENERALE -Într-o definitie aproximativa : -Algoritmul este conceptul fundamental al informaticii. -algoritmul
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
1
ALGORITMI. NOTIUNI GENERALE
- Într-o definitie aproximativa :
-Algoritmul este conceptul fundamental al informaticii.
- algoritmul reprezinta o succesiune de pasi care poate îndeplini o anumita sarcina in functie de datele de
intrare pt a obtine datele de iesire
- mulţime finită de reguli de calcul care indică operaţiile elementare necesare şi ordinea efectuării lor în
scopul rezolvării unei probleme într-un timp finit
- metodă (procedeu) de rezolvare a unei probleme Observaţii:
1. Oricărei probleme care admite o formulare matematică i se poate asocia un algoritm.
2. Dezvoltarea unui algoritm este, în general, mai dificilă decât scrierea programului sursă pe baza
algoritmului.
Caracteristici fundamentale: Orice algoritm trebuie să îndeplinească cinci caracteristici:
1. generalitate - un algoritm trebuie sa ofere o metodă generală de rezolvare a unui anumit
tip de probleme, pentru date iniţiale arbitrare.
2. precizie (claritate) - descrierea algoritmului trebuie facută fără ambiguităţi, iar
comenzile trebuie să exprime operaţii cunos-cute calculatorului, care pot fi executate
de către procesor.
3. determinare - la fiecare pas, acţiunea care urmează a fi executată trebuie să poată fi
determinată fără echivoc şi unic pe baza acţiunilor precedente.
4. finitudinea - un algoritm trebuie să conducă la obţinerea rezultatelor într-un număr finit
de paşi.
5. eficienţă - un algoritm trebuie să fie construit în aşa fel încât să folosească resurse hard
cât mai puţine şi să necesită un timp minim de execuţie.
6. executabilitate - algoritmul ca întreg şi fiecare pas al său trebuie să poată fi executat.
OBSERVATIE:
1. Nerespectarea acestor caracteristici generale conduce la obtinerea de algoritmi neperformanti,
posibil infiniti sau nerealizabili.
2. Observatia1. Nu orice problema admite un algoritm de rezolvare.
Observatia2. Doi agoritmi sunt echivalenti cand pentru aceleasi date de intrare se obtin
aceleasi date de iesire.
2
Etapele rezolvarii unei probleme:
1 Citirea cerintelor problemei :
(se citesc doua valori ce reprezinta
notele unui elev. Sa se calculeze media
obtinuta de elev)
2 Stabilirea tipurilor datelor de intrare si a datelor de iesire : (Se creeaza locatii de memorie pentru fiecare variabila
declarata)
(intregi (INT), reale(FLOAT), sir de caractere(CHAR))
Ex:
In pseudocod In C++
DI: intregi nota1, nota2;
char nume[10];
DE: real medie;
#include <iostream>
#include <string.h>
using namespace std;
int main()
{
int nota1, nota2;
char nume[10];
float medie;
Citirea (memorarea) datelor de intrare:
In pseudocod In C++
Read nume
Read nota1;
Read nota2;
cout<<”numele elevului: ”; cin>>nume;
cout<<”prima nota: ”; cin>>nota1;
cout<<”a doua nota: ”; cin>>nota2;
3 Stabilirea unui rationament general de rezolvare a problemei
In pseudocod In C++
medie=(nota1+nota2)/2;
4 Afisarea datelor de iesire
In pseudocod In C++
Scrie ”Elevul”, nume, ”a obtinut media=”,medie; cout<<”Elevul ”<< nume<< ” a obtinut media= ”<<medie;
cin.ignore();
cin.get();
return 0;
}
3
5 verificarea rationamentului pentru valori concrete
6 implementarea algoritmului intr-un limbaj de programare ( C++ , codeblocks) si compilare (F9)
Tema:
1. Descrireti algoritmul de tratare a gripei
2. Descrieti algoritmul de rezolvare a unei ecuatii de gradul II : ax2+bx+c=0 , unde a,b,c sunt
numere reale
3. Puneti in evidenta succesiunea pasilor de calculare a mediei semestriale a unui elev , la un
obiect unde sustine teza.
Exista 2 modalitati de reprezentare a algoritmilor:
1. Scheme logice (algoritm in mod grafic folosind blocuri diferite pentru operatii diferite )
-dezavantaje: sunt stufoase si greu de urmarit
-avantaje: utile celor care invata sa programeze si sunt in faza de gandire algoritmica
2. Limbajul pseudocod (este o scriere intermediară, menită să simplifice scrierea unui
algoritm într-un limbaj de programare și să ajute la realizarea clarității algoritmului, în timp
scurt.)
nota1 nota2 medie
5 8 6,5
numele elevului: popescu
prima nota: 5
a doua nota: 8
Elevul popescu a obtinut media 6,5
Ce locatii de memorie se creeaza si ce memoreaza Ce afiseaza pe monitor
4
Descrierea algoritmilor cu ajutorul schemelor logice
În schemele logice, operaţiile de bază din algoritmi sunt reprezemtate prin figuri geometrice,
specifice fiecărui tip de operaţie, legate între ele prin săgeţi pentru a
evidenţia ordinea de execuţie a operaţiilor.
În interiorul figurii se scrie operaţia corespunzătoare, tot acest ansamblu formează un bloc al
schemei logice.
Într-o schemă logică pot să apară blocurile:
Metoda rafinării pas cu pas
- descompunerea unei probleme într-un număr de probleme mai simple care pot fi
Rezolvate pe baza unui algoritm (mai mic mai simplu mai uşor)
Rafinare - detalierea suficientă a fiecărui pas
Exemplu: programarea unui robot să facă ceai
Algoritm iniţial
1. pune frunzele de ceai în vas
2. fierbe apa
3. adaugă apa fiartă în vas
4. aşteaptă 5 minute
5. pune ceaiul în ceaşcă Rafinarea etapei 1.
1.1 deschide cutia de ceai
1.2 scoate o linguriţă de frunze de ceai din cutie
1.3 răstoarnă frunzele din linguriţă în vas 1.4 închide cutia de ceai sau:
2.1 pune apă în fiebător
5
2.2 porneşte fierbătorul
2.3 aşteaptă până când fierbe apa 2.4 opreşte fierbătorul sau:
5.1 pune ceaiul în ceaşcă până când se umple ceaşca
Rafinarea suplimentară a etapei 1.1
1.1.1 scoate cutia de ceai din dulap
1.1.2 scoate capacul cutiei de ceai
1) Operatorii aritmetici
Operatorii aritmetici sunt: + , - , * , / , % , ^
unde semnul de împărţire „/” (DIVIDE) are sensul de cât al împărţirii (în cazul împărţirilor cu
cât şi rest) sau de împărţire reală
iar semnul „%” (MODULO) reprezintă restul împărţirii a două numere întregi,
^ ridicare la putere.
Exemplu : Fie x un numar întreg format din exact 5 cifre. Sa se afiseze cifra unitatilor si cea a miilor, pe
acelasi rând, cu un spatiu între ele.
Exemplu: daca pentru x se citeste valoarea 12345 se va afisa 5 2.
Pasul2 : date de intrare x întreg
date de manevra cu, cm întregi (sa memoreze cifra unitatilor în cu si cifra miilor in cm )
Pasul 3: citeste x
Pasul 4: cu = x % 10 (extrag cifra unitatilor)
x = x/1000 (elimin ultimele cifre din numar)
cm= x % 10 (retin cifra miilor în cm )
Pasul 5: scrie cu, cm
Observatie:
Pentru a obtine cifrele unui numar trebuie sa efectuam împartiri la 10.
Am aratat ca operatorul MODULO „%” returneaza restul împartirii.
În cazul în care un numar se DIVIDE „/” la 10, numarul ramane fara ultima cifra.
În cazul în care un numar se DIVIDE „/” la 1000, numarul ramane fara ultimele 3 cifre.
6
Ordinea de efectuare a operaţiilor este dată de prioritatea operatorilor aritmetici (cea cunoscută în
matematică: înmulţiri şi împărţiri şi apoi adunări şi scăderi). Aceştia sunt operatori binari adică
acţionează asupra a doi operanzi. În plus există şi operatorii unari plus şi minus (+, -), care acţionează
asupra unui singur operand şi au sensul de semn al numărului (pozitiv sau negativ).
2) Operatori relaţionali
Sunt cei folositi şi în matematică:
1) >(mai mare)
2) < (mai mic),
3) ≥ (mai mare sau egal),
4) ≤ (mai mic sau egal),
5) = (egal),
6) ≠ (diferit).
Ei precizează o relaţie de ordine sau de egalitate între date, care poate fi îndeplinită sau nu.
Expresiile construite cu operatorii relaţionali pot fi evaluate la o valoare de adevar:
„adevarat” sau „fals”, după cum este îndeplinită relaţia sau nu.
în funcţie de limbajul de programare folosit, apar convenţii de notaţie specifice pentru operatori (de
exemplu semnul „diferit” va fi implementat în C++ ca „ != ” iar în Pascal ca „ <> ”, pe când semnele ≤
şi ≥ vor fi implementate ca <= şi >=, la fel, în ambele limbaje).
Operatorii relaţionali sunt operatori binari şi se pot aplica numai operanzilor numerici, logici şi de tip
caracter (ordinea caracterelor fiind cea data de codul ASCII). Nu există o ordine specifică a operaţiilor
atunci când folosim operatorii relaţionali.
Operaţiile se efectuează în ordinea apariţiei operatorilor, de la stanga la dreapta.
7
3) Operatori logici Operatorii logici sunt folosiţi pentru
determinarea valorii de adevar a propoziţiilor logice şi
anume „adevarat” sau „fals”, în unele limbaje codificate
cu „1” respectiv „0”. adevărat 6+28 Operatorii logici sunt:
Operatorul „not” este unar, în timp ce „and” şi „or” sunt binari.
Rezultatul expresiilor ce conţin operatori logici este cel prezentat
în logică matematică şi descris în tabelul urmator:
a b a && b
*
a || b
+
!a !b
1 1 1 1 0 0
1 0 0 1 0 1
0 1 0 1 1 0
0 0 0 0 1 1
4) Operatorul sizeof(expresie) sau sizeof(tip)
Exemplu: sa se afiseze numarul de octeti ocupati pentru tipurile de date: