marți, 29 ianuarie 2019

De ce algoritmi?

    Un prim "hop" când începi să  înveți informatică este noțiunea de algoritm,la început poate părea ceva abstract mai ales felul în care este reprezentat,în special pseudocod,dar nu este chiar așa.
    Algoritmii la fel cum îți poți da seama din nume sau poate chiar ai auzit de această sintagmă,este un "set de reguli" ce determină etape în rezolvarea unei anumite probleme.
O definiție mai riguroasă a noțiunii de algoritm se poate găsi aici.

Principal ce ar trebui să reți tu ca un neofit în acest domeniu numit generic informatică,este faptul că un algoritm descrie modul de rezolvare a unei probleme incluzând specific pași ce trebuie urmați înspre a ajunge la o soluție,foarte important aspect.

Deși descrierea pare simplă și poți spune "algoritmii sunt chiar banali",ar trebui să nu te pripești totuși,algoritmii în esență ca scop al lor sunt ușor de înțeles dar totuși adevărata problemă vine la implementare și chiar eficentizarea acestuia.
Așa că vom parcurge algoritmii în acest articol doar așa ca să stabilim o cunoaștere amicală.

1.Proprietăți ale unui algoritm

Un algoritm are anumite proprietăți fundamentale,pe care trebuie să le respectăm și ve-ți observa cu ușurință de ce și poate va fi clar de ce informatica este definită în esență ca știința ce rezolvă probleme cu ajutorul unui sistem de calcul.

 a) Finitudinea - orice algoritm(descriere a soluției unei probleme) trebuie să aibă un final ,este logic în primă fază deoarece nimic nu este infinit plus ca noi nu trăim infinit astfel nu putem aștepta chiar atât după o soluție.

b)Generalitate - ne dorim ca algoritmul nostru să rezolve o problemă și este bine când reușim să concepem un astfel de algoritm DAR ideal și chiar necesar ar fi ca algoritmul să rezolve o anumită sferă de probleme nu un caz particular a acesteia.

c)Determinismul - un algoritm trebuie să returneze un rezultat care este în concordanță cu cerința problemei,astfel să rezolve problema pentru toate cazurile posibile ale datelor de intrare.

d)Claritatea - algoritmul trebuie să fie descris clar și concis astfel să cunoaștem la orice operație executată ce operație urmează a fi executată,să știm ce și cum urmează a fi calculat/prelucrat.

2.Etape ale unui algoritm

Simplificat un algoritm cunoaște trei etape principale inițializarea datelor,prelucrarea acestor date,returnarea rezultatului.

Orice problemă deține anumite date,iar acestea trebuie identificate și inițializate conform cerinței problemei în cauză,ca o echivalare așa oarecum simplificată poți vedea un algoritm ca o "rețetă",are toate elementele unui algoritm.
Ca un exemplu de rețetă,o omletă să analizăm umpic această rețetă,avem următoarele elemente.

Enunțul problemei: Vreau să gătesc o omletă,voi avea nevoie de 4 ouă,ulei,sare,o tigaie,un aragaz(o sursă de căldură )
Datele problemei/inițializare: ouă-4 , ulei , sare , aragaz.
Rezultatul: omletă

Relativ ușor și intuitiv,dar hai să și creăm un algoritm pentru această problemă existențială 😁

Elemente necesare 4 ouă,ulei,sare,tigae,aragaz/plită
Dacă avem toate elementele necesare,continuăm,dacă nu procurăm elementele
Turnăm ulei în tigaie
Dacă aragazul/plita a fost pornită punem tigaia pe foc
Spargem ouăle și le turnăm în tigaie
Cât timp ouăle nu s-au făcut amestecăm sau adăugăm sare după preferință

Deși ce am descris mai sus este ceva relativ banal,aș vrea să fi atent la operatorii logici pe care i-am folosit aceștia sunt sau,și,dacă,cât timp . Acești operatori dau structura logică al algoritmului,de multe ori se pot face greșeli logice în descrierea unui algoritm sau chiar în implemetare fapt ce conduce la erori.

3.Date de intrare și ieșire

 Datele de intrare așa cum le spune și denumirea sunt datele pe care le introducem noi astfel încât după prelucrarea acestor date pe care le-am introdus vom obține date de ieșire care implicit ar trebui să fie rezultatul problemei noastre,ca un exemplu avem următoarea problemă:

Se introduce de la tastatură un șir de numere întregi pozitive până la întâlnirea unui număr negativ , să se afișeze elementul maxim din șir
Date de intrare: 1,1,2,3,8,5,0,45,10,-89
Date de ieșire: 45

Un element important al enunțului este faptul că oferă o "condiție de terminare" astfel algoritmul va respecta una dintre proprietăți și anume finitudinea.

4.De ce algoritmi?

    Deși poate a fost o introducere mai lungă pentru a oferi un răspuns,dacă ai citit cu atenție cel mai probabil ți-ai dat seama că este fundamental să deți aceste cunoștințe.
    Chiar și dacă pe viitor te pui și rezolvi probleme cu ajutorul calculatorului,deși programul implementat de tine este un succes,tu tot un algoritm ai folosit,ceea ce vreau să subliniez este faptul că noțiunea de algoritm este esențială în domeniul informaticii,este poate char una dintre pietrele pe care a fost fondată această știință atât de nelipsită în zilele noastre.
   Eu ce am explicat este doar un grăunte de informație , am încercat să te introduc puțin într-un aspect esențial pentru a putea păși mai departe în programare de exemplu.
    Pe acest blog voi posta în timp implementarea unor algoritmi clasici,care sper că te vor ajuta atât la școală/bacalaureat dar poate chiar să-ți pui fundația carierei tale ca viitor specialist IT.



luni, 28 ianuarie 2019

Programare

Când am ajuns la liceu atunci a fost prima dată când mă lovisem de informatică în adevăratul sens al cuvântului.
    Și mi-a plăcut încă de pe atunci,îmi amintesc și acum atât de clar cât de mult a început să mă absoarbă acest domeniu încă de la lecțiile de pseudocod.

Probabil și tu care citești acum acest articol cauți ce căutam eu și nu găseam așa cum percepeam eu ca mi-aș dori să fie “livrată” această materie.
De aceea mi-aș dori să-mi urmărești blogul și să devină un loc la care vei reveni poate din drag,poate din curiozitate sa vezi ce am mai postat sau poate din nevoie ,o temă sau ceva de genul acesta.

Voi încerca pe cât posibil să acopăr materia de liceu ,dar mi-aș dori să adaug elemente pe care le consider vitale dar în școală nu te învață,totuși dacă vrei sa devi profesionist și vrei bani din asta va trebui sa deții acele cunoștințe.

Acest articol este doar unul de prezentare al planului meu ,eu totuși mi-aș dori să revi constant și dacă vrei poți să-mi scri pe următoarea adresă

sâmbătă, 26 ianuarie 2019

Ecuația de gradul II



    Ecuațile,în umila mea opinie,sunt o piatră de susținere a matematicii ca ștință care a ajuns să ne domine viața chiar dacă este pasiv și tindem să neglijăm importanța ei,probabil și pentru că pare atât de inaccesibilă.
    Sincer,consider că ține foarte mult de muncă și probabil cum și dacă iți plac lucruri ciudate cum ar fi numerele.Totuși dacă ai ajuns aici ori te pasionează numerele,ori te pasionează să-ți termini temele adică ești cel mai probabil nevoit.
    Oricare ar fi cazul sper să-ți fie de folos acest scurt articol despre ecuația de gradul II.

    Un prim pas în a înțelege această temută himeră,ecuația de gradul II,consider că ideal ar fi să observăm forma generală în care ea apare.

Forma generală:,putem ușor observa de unde vine acest grad II și anume primul termen a care îl conține pe ,la fel putem intui că soluția va fi formată din doua numere și da așa este totuși să vedem de ce tip sunt aceste numere și cum determinăm soluția.

Etape de rezolvare

Etapa 1. Determinăm delta()

Formula pentru acest „delta” este urmatoarea ,unde cum am putut observa din forma generala conține toți termenii,dacă ești umpic debusolat nu-ți fă griji voi face un exemplu explicat la finalul articolului.

Etapa 2. În funcție de valoarea lui delta avem trei cazuri

a) Delta este pozitiv(),atunci formula de calcul este următoarea solutile x1 și x2 sunt,probabil ești umpic confuz în privința +- ei bine este simplu o solutie va fi cu semnul + alta cu – la calcul, dar nu-ți fă griji la final voi face exemplu și atunci sper să fie totul clar.



b) Delta este egal cu 0(), dacă ești atent umpic la formulă vei realiza că cele două soluții sunt defapt o singură soluție deoarece delta este 0 și rădăcină pătrată din 0 este 0 astfel formula este următoarea .

c)Delta este negativ() , lucrurile se complică puțin în cazul acesta deoarece soluțile nu există...cel puțin nu în mulțimea numerelor reale , soluțile în acest caz sunt o pereche de numere „imaginare” cunoscute matematic ca numere complexe,dacă nu ai studiat încă aceste numere nu-ți fă griji,reține momentan doar că în cazul acesta nu există soluții numere reale.Formula în acest caz este următoarea,astfel obținem două numere complexe conjugate.

Exemplu



Pentru orice nelămuriri sau întrebări aștept mesajul pe care dorești să mi-l transmiți pe următoarea adresă

vineri, 25 ianuarie 2019

Algoritmi Elementari:Fibonacci


Șirul lui Fibonacci este construit din suma a două numere anterioare,în faza de început șirul este construit cu elementele 0 și 1 astfel avem primele elemente și putem construi ulterior șirul.

De exemplu dacă vrem să construim un șir care să conțină primele 5 elemente din șir îl vom construi in felul urmator

T0=0 și T1=1 astfel vom avea mai departe T2=T0+T1 astfel puteam deduce următoarea formulă de calcul Tn=Tn-2+Tn-1

0 1 apoi 0+1=1 iar șirul devine 0,1,1 al patrulea element va fi construit din termenii T2 și T3 rezultând 1+1=2 șirul devine 0,1,1,2
iar elemntul cu indicele 5 devine 1+2=3
Astfel șirul cu n=5 este 0,1,1,2,3
   Șirul lui Fibonacci este unul cel puțin interesant pentru că dacă vom crea pătrate ce au laturile egale cu numărul elementelor din șir putem observa un aspect ca de spirală foarte intrigant mai ales în natură cât și în artă.
   În perioada renascentistă șirul a atras atenția multor pictori mai ales datorită acestei proprietăți interesante al șirului.
Dacă doriți să aflați mai multe puteți accesa această pagină.

    Utilizând calculatorul și folosind un limbaj de programare putem crea un mic program care poate rezolva această mică problemă.Ceea ce și voi prezenta la finalul articolului,un program care calculează șirul lui Fibonacci cu o anumită lungime dată.
    Programul va conține comentarii care sper să vă ajute în a înțelege cât mai bine conceptul și algoritmul prezentat.

Vă aștept cu păreri,sugestii în comentarii sau puteți să-mi scrie-ți la următoarea adresă.

Programul în C:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int t0=0,t1=1,tn,i,numar_elemente; // Dupa cum am spus se incepe cu t0=0 si t0=1 in tn   vom crea urmatorul element
    printf("Introduceti numarul de elemente:");//afisam un mesaj
   scanf("%d",&numar_elemente); //citim de la tastatura cate elemente dorim sa afisam din sir
  printf("\n%d %d",t0,t1);//afisam primele 2 elemente din sir 0 si 1
 for(i=2;i<numar_elemente;i++) //Iteram si construim sirul incepand de la elementul al treilea pana la elementul ce-l dorim
{
   tn=t0+t1; //Construim urmatorul element prin adunarea celor 2 elemente din urma
   printf(" %d",tn);// afisam elementul
  t0=t1; // actualizam valorile din sir T0 devine T1
  t1=tn;// T1 devine elemntul curent astfel putem calcula mai departe
}
return 0;
}


Ecuația de gradul I

Ecuația de ordinul I
De multe ori am auzi acest termen destul de obscur,dar oare ce înseamnă aceste ecuații?
Ei bine ecuațile nu sunt altceva decât aflarea unui termen necunoscut,după ce am modelat o problemă și am modelat datele astfel încât vrem să aflăm o anumită parte.

Ordinul ecuației este dat de puterea dominantă a termenului necunoscut.în acest caz puterea este 1,de aceea avem doar o singura soluție unică pentru ecuația de gradul 1.
Forma acestei ecuații este una simplă și anume:

ax+b=c , termenul x care de altfel poate fi notat cu orice altă literă este necunoscuta pe care trebuie să o aflăm.

Să luăm un exemplu de ecuație de ordinul I,să zicem următoarea ecuație 7x-3=11 și să încercăm să rezolvăm pe etape.

Etapa 1 Izolăm termenii care nu conțin necunoscute de cei pe care conțin
necunoscute în cazul nostru x.
ATENȚIE! Trecerea dintr-o parte în alta a ecuației se va face cu semn schimbat

7x=11+3

Etapa 2 Acum putem afla necunoscuta x astfel după ce efectuăm calculul în partea stângă vom putea afla valoarea lui x

7x=14
x==> x=2

Etapa 3 Verificăm corectitudinea rezultatului nostru,înlocuind în formulă rezultatul obținut,astfel avem

7*2-3=11
14-3=11 după cum se poate observa este adevărat.

Mă bucur că ai urmărit până aici și sper că ai înțeles cum funcționează,aștept întrebări,sugestii,propuneri în comentarii.