ALGORITMII ŞI REPREZENTAREA LOR Noţiunea de algoritm Noţiunea de algoritm este foarte veche. Ea a fost introdusă în secolele VIII-IX de către Abu Ja f

Documente similare
Programarea şi utilizarea calculatoarelor

ALGORITMICĂ. Seminar 3: Analiza eficienţei algoritmilor - estimarea timpului de execuţie şi notaţii asimptotice. Problema 1 (L) Să se determine număru

E_d_Informatica_sp_SN_2014_bar_10_LRO

Operatorii in C Expresii Operatori aritmetici Operatori de asignare Operatori de incrementare si decrementare Operatori relationali Operatori logici O

Microsoft Word - CarteC.doc

ALGORITHMICS

E_d_Informatica_sp_MI_2015_bar_02_LRO

Școala: Clasa a V-a Nr. ore pe săptămână: 4 Profesor: MATEMATICĂ Clasa a V-a Aviz director PLANIFICARE CALENDARISTICĂ ORIENTATIVĂ Nr. crt. Unitatea de

Fâciu N. Maria-Ema CASA CORPULUI DIDACTIC BRĂILA PROGRAM DE FORMARE INFORMATICĂ ȘI TIC PENTRU GIMNAZIU CLASA A V-A SERIA 1 GRUPA 2 CURSANT: Fâciu N. M

MergedFile

Lecţia 2 Structura liniară, alternativă şi repetitivă Clasa a V-a Structuri de bază(liniară, alternativă şi repetitivă) Programarea structurată este o

Microsoft PowerPoint - Curs_SDA_10_RO_2019_v1.pptx

Microsoft Word - Curs_08.doc

tehnologii web

Microsoft Word - Curs1.docx

Curs 3 Permutari cu repetitie. Combinari. Algoritmi de ordonare si generare

PROIECT DIDACTIC DATE DE IDENTIFICARE Data: Școala : Școala Gimnazială Grigore Moisil Ploiești Clasa: a VI-a Profesor: Ilie Oana Magdalena Disciplina:

Coman Marinela Furnizor program formare acreditat: CCD BRĂILA Denumire program: INFORMATICĂ ŞI TIC PENTRU GIMNAZIU Clasa a V-a Categorie: 1; Tip de co

Ministerul Educatiei, Cercetarii si Tineretului Grup Scolar Gh. Asachi Galati Proiect pentru obtinerea certificatului de competente profesionale Speci

GHERCĂ MAGDA CASA CORPULUI DIDACTIC BRĂILA PORTOFOLIU EVALUARE INFORMATICĂ ȘI TIC PENTRU GIMNAZIU CLASA A V-A Neamț SERIA 1 GRUPA 1 CURSANT: GHERCĂ G

Logică și structuri discrete Limbaje regulate și automate Marius Minea marius/curs/lsd/ 24 noiembrie 2014

Metode de programare Proiectarea algoritmilor

LOGICA MATEMATICA SI COMPUTATIONALA Sem. I,

1. Operatii cu matrici 1 Cerinte: Sa se realizeze functii pentru operatii cu matrici patratice (de dimensiune maxima 10x10). Operatiile cerute sunt: A

Programarea şi utilizarea calculatoarelor

PowerPoint Presentation

Declararea variabilelor

Microsoft PowerPoint - Curs_SDA_9_RO_2019_v2.pptx

SSC-Impartire

SUBPROGRAME

Diapositive 1

Algoritmi elementari Metode de căutare secvenţială binară Metode de ordonare metoda bulelor metoda inserţiei metoda selecţiei metoda numărării Intercl

Matrici și vectori în VBA În VBA, o matrice este un grup de variabile de același tip. De ce ar trebui să utilizați o matrice? Presupunem că ați vrut s

Logică și structuri discrete Logică propozițională Marius Minea marius/curs/lsd/ 3 noiembrie 2014

Ecuatii si sisteme de ecuatii neliniare 1 Metoda lui Newton Algorithm 1 Metoda lui Newton pentru ecuaţia f(x) = 0. Date de intrare: - Funcţia f - Apro

Slide 1

Probleme proiect TP BITPERM Implementați un algoritm care citește de la intrarea standard două numere naturale și scrie la ieșirea standard da

PowerPoint-Präsentation

Microsoft Word - Curs_09.doc

Microsoft Word - O problema cu bits.doc

Lecții de pregă,re la informa,că Admitere 2019 Tema: Discutarea problemelor date la ul,mele sesiuni de admitere Bogdan Alexe

Microsoft Word - Software pentru ordonarea multirang a componentelor unei colectivitati.doc

Analiză statică Analiza fluxului de date 23 octombrie 2014

Analiză de flux de date 29 octombrie 2012

Modelarea si Simularea Sistemelor de Calcul

Metode de sortare - pregătire admitere - Conf.dr. Alexandru Popa Lect. dr. Andrei Pătraşcu Universitatea din Bucureşti 1

Capitole Speciale de Informatică Curs 1: Extragerea informaţiilor. Modelul boolean şi modelul boolean extins 27 septembrie 2018 Extragerea informaţiil

Elemente de aritmetica

Laborator 2: Instrucţiuni Java şi lucru cu şiruri de caractere Întocmit de: Adina Neculai Îndrumător: Asist. Drd. Gabriel Danciu 18 octombrie 2011

Curs 8: Tehnica divizării (I) Algoritmi si structuri de date - Curs 8 1

Secţiunea 5-6 avansaţi PROBLEMA 1 Concurs online de informatică Categoria PROGRAMARE 100 puncte NR Un număr natural nenul V care se plictisea singur,

Gheorghe IUREA Adrian ZANOSCHI algebră geometrie clasa a VII-a ediţia a V-a, revizuită mate 2000 standard EDITURA PARALELA 45 Matematică. Clasa a VII-

ALGORITHMICS

ExamView Pro - Untitled.tst

Microsoft Word - CarteC.doc

Introducere în statistică

Laborator 2 Incompatibilităţi/Diferenţe între C şi C++ Completări C++ Supraîncărcarea (redefinirea) numelui de funcţii În C nu este permisă existenţa

Universitatea Lucian Blaga Sibiu Facultatea de inginerie-Departamentul de calculatoare şi Inginerie Electrică Titular curs: Şef lucrări dr.mat. Po

Adresarea memoriei Modurile de adresare constituie un instrument principal pentru reprezentarea în memorie a imaginii datelor, aşa cum este ace

PROGRAMA CONCURSULUI NAŢIONAL

CASA CORPULUI DIDACTIC BRĂILA PORTOFOLIU EVALUARE INFORMATICĂ ȘI TIC PENTRU GIMNAZIU CLASA A V-A Neamț SERIA 1 GRUPA 1 CURSANT: ALTERESCU V. IULIA-CRI

Concurs online de informatică Categoria PROGRAMARE Secţiunea 5-6 avansaţi PROBLEMA puncte DANS De 1 Iunie - Ziua Copilului se organizează un spe

OPERATII DE PRELUCRAREA IMAGINILOR 1

Microsoft Word - CarteC.doc

Microsoft Word - Algoritmi genetici.docx

1

Prelegerea 4 În această prelegere vom învăţa despre: Algebre booleene; Funcţii booleene; Mintermi şi cuburi n - dimensionale. 4.1 Definirea algebrelor

carteInvataturaEd_2.0_lectia5.pdf

Programarea calculatoarelor. Note de curs Marius Minea 1 Introducere în programarea în C 1.1 Funcţii în limbajul C Calcule şi funcţii La origine, rolu

LUCRAREA 8 PROGRAMAREA NELINIARĂ ÎN REZOLVAREA PROBLEMELOR DIN ENERGETICĂ. METODE DE ORDINUL Aspecte generale Programarea neliniară are o foart

Microsoft Word - Lucrarea_10_t.doc

Laborator 9: Fire de execuţie Întocmit de: Adina Neculai Îndrumător: Asist. Drd. Gabriel Danciu 20 noiembrie 2011

Microsoft Word - Mihailesc Dan_Test logica (1).doc

Laborator 3

Subiectul 1

Microsoft Word - Curs_07.doc

Spatii vectoriale

I. INTRODUCERE 1. Necesitatea studiului logicii Teodor DIMA În activitatea noastră zilnică, atunci când învăţăm, când încercăm să fundamentăm o părere

Retele Petri si Aplicatii

Logică și structuri discrete Relații. Funcții parțiale Marius Minea marius/curs/lsd/ 20 octombrie 2014

Limbaje de Programare Curs 6 – Functii de intrare-iesire

Ghidul Autorului (titlul lucrării)

Slide 1

Microsoft Word - a5+s1-5.doc

Microsoft PowerPoint - Fp_2.ppt

Curs 6: Clasificarea surselor de informatii - Clasificarea Bayes Naiva. Modelul Bernoulli

Microsoft Word - cap1p4.doc

DAN LASCU ADRIANA-LIGIA SPORIŞ ANDA OLTEANU PAUL VASILIU MATEMATICĂ. CULEGERE DE PROBLEME TIP GRILĂ PENTRU ADMITEREA ÎN ACADEMIA NAVALĂ MIRCEA CEL BĂT

UNIVERSITATEA DE STAT "ALECU RUSSO"

Utilizare Internet

1. a. Să se scrie un algoritm care să afişeze toate numerele de patru cifre care au cifra sutelor egală cu o valoare dată k, şi cifra zecilor cu 2 mai

I. Partea introductivă Proiectul unității de învățare CONCEPTUL DE MATRICE ŞCOALA: Colegiul Național Petru Rareș Suceava CLASA: a XI a- matematică / a

Microsoft Word _POO_Lab_1_Modificari_v01.htm

Microsoft Word - Lab1a.doc

Backtracking_2018

CASA CORPULUI DIDACTIC BRAILA PROGRAM DE FORMARE INFORMATICA SI TIC PENTRU GIMNAZIU CLASA A V-A SERIA 1 GRUPA 2 CURSANT: TIMOFTI V. AFRODITA COLEGIUL

Microsoft Word - Curs_10.doc

Curs8

Interfețe și Protocoale de Comunicații Arduino-Port Paralel Arduino. Laborator 1- Portul Paralel 1 Caracteristici generale Arduino UNO este o placă de

Transcriere:

ALGORITMII ŞI REPREZENTAREA LOR Noţiunea de algoritm Noţiunea de algoritm este foarte veche. Ea a fost introdusă în secolele VIII-IX de către Abu Ja far Mohammed ibn Musâ al- Khowârizmî în cartea sa intitulată Kitab al jabr w aimuquabala, cunoscută în traducere latină ca Algorithmi de numero indorum. Cuvântul algoritm provine de la al-khorezmi, ceea ce înseamnă din oraşul Khorezmi, oraş care în prezent se numeşte Khiva şi se află în Uzbechistan. O definire matematică riguroasă a noţiunii de algoritm este imposibil de dat fără a introduce şi alte noţiuni. De aceea, vom încerca o descriere a noţiunii de algoritm şi vom spune că: un algoritm este o succesiune de prelucrări necesare rezolvării unei probleme. Un algoritm este un text finit de propoziţii, fiecare propoziţie precizând o anumită regulă de calcul în scopul rezolvării problemei. În termeni generali, un algoritm este o metodă pas cu pas de rezolvare a problemei. O problemă este determinată de datele de intrare și un enunț, care specifică relația între acestea și soluție. Pornind de la datele de intrare, algoritmul va descrie prelucrările necesare pentru a se ajunge la soluția problemei. Pentru rezolvarea algoritmică a problemelor trebuie să parcurgem următoarele etape: 1. Formularea clară a problemei. 2. Identificarea clasei din care face parte problema 3. Identificarea unui algoritm care permite construcția soluției pornind de la specificatiile problemei 4. Analiza corectitudinii algoritmului în scopul verificării că algoritmul corespunde specificațiilor problemei 5. Analiza eficieței algoritmului verificarea găsirii soluției cu un număr rezonabil de resurse 6. Implementarea algoritmului și execuția sa. Un algoritm are următoarele caracteristici: 1. generalitate = un algoritm rezolvă problema în general, pentru orice date iniţiale, prelucrarea se poate aplica la orice mulţime de date de intrare care îndeplineşte condiţiile din enunţul problemei; 2. finitudine = procesul de prelucrare se termină după aplicarea unui număr finit de paşi; 3. rigurozitate prelucrările algoritmului trebuie specificate riguros, astfel ca în fiecare etapă a algoritmului să se știe ce etapă va urma și cum se va executa; 4. eficiență algoritmii se pot utiliza dacă folosesc resurse de calcul în volum acceptabil spațiul necesar stocării datelor și timpul de execuție necesar prelucrărilor. 1

Studiul agoritmilor presupune parcurgerea mai multor etape: Elaborarea algoritmilor - proces ce se bazează pe o serie (tehnici de elaborare a algoritmilor), dar şi pe intuiţia umană. de reguli cunoscute Reprezentarea algoritmilor se realizează prin limbaje de descriere, dintre care cele mai larg utilizate sunt limbajul schemelor logice şi limbajul pseudocod. Un algoritm scris într-un limbaj de programare se numeşte program. Corectitudinea algoritmilor. Pentru a ne asigura că un algoritm funcţionează corect, acesta trebuie validat (trebuie să i se verifice corectitudinea), indiferent de limbajul de programare în care se va face implementarea. Analiza algoritmilor. Deoarece pentru o anumită problemă pot fi elaboraţi mai mulţi algoritmi, este necesar să decidem care din aceştia este cel mai bun, deci trebuie definit un criteriu de apreciere al unui algoritm. În general, un astfel de criteriu se referă la timpul de execuţie al algoritmului. Elaborarea programelor. În general un algoritm este implementat într-un limbaj de programare pentru a fi utilizat pe calculator. Testarea programelor - constă din două faze: depanarea şi execuţia. Depanarea (debugging) este procesul de execuţie al programului cu date de test şi corectarea eventualelor erori. Prin depanare, aşa cum afirma E.W.Djikstra, putem evidenţia doar prezenţa erorilor, nu şi absenţa lor. În schimb, demonstararea faptului că un program este corect este mai importantă decât oricâte teste, deoarece prin demonstraţie se poate garanta că programul funcţionează corect în orice situaţie. Execuţia este procesul prin care, cu ajutorul datelor de test, se determină timpul de calcul, precum şi memoria neceară. Rezultatele astfel obţinute vor fi comparate cu rezultatele din faza de analiză a algoritmului. Tipuri de date Prelucrările specific în cadrul unui algoritm se efectuează asupra unor date. Acestea sunt entități purtătoare de informație, valaoarea curentă a unei date fiind informația ce o conține la un moment dat. Datele pot fi constante (valaoarea lor rămîne neschimbată pe parcursul algoritmului) sau variabile (valaoarea lor se poate schimba pe parcursul execuției algoritmului). Datele pot fi simple (conțin o singură valoare) sau structurate (colecții care conțin mai multe date simple între care pot exista relații de structură- mulțime, șir, matrice, arbre, graf). Prelucrările ce intervin în cadrulunui algoritm sunt simple și structurate. Prelucrările simple: Atribuire permite asignarea unei valori unei variabile. Valoarea poate fi rezultatul evaluării unei expresii. O expresie descrie un calcul asupra unor date și conține operanzi (datele asupra cărora se efctuează operațiile) și operatori (care permit specificarea operațiilor ce se vor efectua). 2

Transfer permite prelucrarea datelor de intrare ale problemei și furnizarea rezultatului/rezultatelor Control în cazul în care se dorește modificarea ordinii natural a operațiilor se transferă controlul execuției la o anumită prelucrare ( de exemplu o prelucrare prin care se specifică trecerea la un anumit pas al algoritmului este o prelucrare de control) Structurile principale de prelucrare sunt: Secvențială o succesiune de prelucrări simple sau structurate. Execuția structurii secvențiae consta în execuția prelucrărilor în ordinea în care sunt precizate. De decizie (condițională) permite specificarea situatiilor în care se va executa o prelucrarea sau alt ape baza îndeplinirii sau neindeplinirii a unei condiții. De ciclare (repetitivă) permite modelarea situațiilor cand o prelucrare trebuie repetată. Se caracterizată prin existența unei condiții de oprire (sau de continuare). În funcție de momentul în care se testeaza condiția există prelucrări repetitive condiționate anterior (condiția este analizată înainte de a efectua prelucrarea) sau prelucrări repetitive condiționate posterior (condiția este analizată după efectuarea prelucrării). Descrierea algoritmilor Pentru descrierea algoritmilor se folosesc - schemele logice - un mijloc de descriere a algoritmilor prin reprezentare grafică sau - limbajul algorithmic sau pseudocod Pseudocul prezentat permite specificarea prelucrărilor simple ți structurate după cum urmează: Atribuire. Pentru atribuirea valorii obținute prin evaluarea unei expresii variabilei v se folosește: v (expresie) Operanzii pot fi constant sau variabile. Opearatorii utilizați sunt: - aritmetici: + (adunare), - (scădere), * (înmulțire), /(împărțire), DIV (împărțire numere întregi), MOD sau % (restul împărțirii a două numere întregi) - relaționali: = (egal),!= (diferit), <,, >,. - logici: or (disjuncție), and (conjunție), not (negație) Citire. read v Scriere. write v 3

În specificarea oricărui algoritm este suficientă utilizarea următoarelor structure e prelucrare: secvențială, condițională și repetitivă. Structura secvențială. O succesiune de n prelucrări se specific prinș Structura condițională. (prelucrare 1) (prelucrare 2). (prelucrare n) if (condiţie) then (prelucrare1) else (prelucrare2) unde (condiţie) este o expresie logică, prelucrare1 descrie procesul de calcul care se execută la îndeplinirea condiţiei (condiţia este adevărată), iar prelucrare2 descrie procesul de calcul executat la neîndeplinirea condiţiei (condiţia este falsă). Caz particular: if (condiţie) then (prelucrare) În acest caz prelucrare se efectuează doar dacă conditia este adevărată, altfel se trece la următoarea prelucrare din algoritm. Structuri repetitive. Permit descrirea prelucrărilor ce se vor efectua în mod repetat. În funcție de modul de plasare a condiției există două tipuri de structuri repetitive: structuri repetitive condiționate anterior și structuri repetitive condiționate posterior. Varianta condiționată anterior se specifică prin: while (condiţie) do (prelucrare) unde condiţie reprezintă o condiţie logică la îndeplinirea căreia se execută prelucrarea. Dacă valoarea de adevăr pentru condiţie este fals, se trece la prelucrarea următoare din algoritm. Dacă la prima testare a condiţiei aceasta are valoarea fals secvenţa indicată nu se execută niciodată. Structura repetitivă while se mai numeşte structură repetitivă cu test initial. O formă particulară a structurii repetitive condiționate anterior este structura repetitivă cu contor. Ea se foloseşte pentru a specifica realizarea unui ciclu în care pentru control se utilizează un indice căruia i se specifică modul de variaţie. Structura se indică prin construcţia for contor= v1,v2, pas do (prelucrare) end for Se folosește o variabilă contor care variază intre o valoare inițială v1 și o valoare finală v2, fiind modificată la fiecare ciclu cu pasul pas. În cazul în care valoarea pas este pozitivă, structura for este echivalentă cu: 4

v v1 while (v v2) do (prelucrare) v v+pas În cazul în care valoarea pas este negativă condiția din while devine v v2. Structura condiționată posterior se specifică prin: repeat (prelucrare) until (condiţie) La execuție prelucrare se execută până când condiție este adevărată. Prelucrarea se execute cel puțin o dată. La oricare din variantele de structuri repetitive trebuie precizate: valorile inițiale ce intervin în prelucrare, prelucrarea care se repeat și o condiție de oprire (sau de continuare). Exemple. 1. Determinarea maximului a două numere întregi a şi b Maximul (integer a,b) integer a,b read a,b; if (a>=b) then max a else max b return max 2. Să se calculeze suma cifrelor unui număr natural Cifrele numărului se extrag prin împărțiri succesive la 10. La fiecare etapă restul va reprezenta ultima cifră a valorii curente, iar câtul împărțirii întregi va reprezenta următoarea valoare ce se va împărți la 10. suma cifre(integer n) integer S S 0 while n > 0 do S S + n MOD 10 n n DIV 10 return S 3. Să se calculeze valoarea obținută prin inversarea ordinii cifrelor unui număr natural inversare cifre(integer n) integer m m 0 5

while n > 0 do m m * 10 + n MOD 10 n n DIV 10 return m 4. Să se determine toți divizorii proprii ai lui n. Pentru determinarea divizorilor proprii ai lui n (divizori diferit i de 1 și n) este suficient să se analizeze toate valorile cuprinse între 2 și [n/2]. Algoritmul care afișează valorile divizorilor proprii poate fi descries prin: divizori(integer n) integer i for i 2, [n/2] do if n MOD i = 0 then write(i) end for 5. Determinarea tuturor cifrelor binare ale lui n. Se determină fiecare cifră a numărului și se testează dacă este egală cu 0 sau 1, caz în care variabila auxiliară test va lua valoarea 1. Dacă valoarea lui test rămâne 0 (neschimbată de la inițializarea făcută) se va afișa mesajul "nr nu are cifre binare". cifre_binare (integer n) integer n, test=0 while n!= 0 do if (n mod 10 =0 or n mod 10 =1) then write ( n mod 10 ) test 1 n n div 10 Bibliografie: 1. D. Zaharie Introducere în proiectarea și analiza algoritmilor, Ed. Eubeea, 2008 2. V. Iordan- Algoritmi si programare in C, Ed.Eurostampa, 2007 6