Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Presbiopia - la 43 ani ?

Termen transcriere autovehicul

Cazare Timisoara pe 4-5 zile

Primele zile ale internetului per...
 Ditra 25

Casti USB-C ptr A-54

Aplicatie medicala / asistent med...

De ce vor atația politicieni...
 ERR_ADDRESS_UNREACHABLE

Legea 18/1968 Se mai aplica?

Digi conectare 2 routere prin fir

Succesiune notar versus instanta ...
 Montaj aer conditionat in balcon ...

Cont curent mulți valuta far...

Sugestii plan casa

Experiente cu firme care cumpara ...
 

Pseudocodul. Cum descriem solutiile problemelor

- - - - -
  • Please log in to reply
3 replies to this topic

#1
pale_and_pale

pale_and_pale

    Junior Member

  • Grup: Members
  • Posts: 187
  • Înscris: 11.07.2012
Mai demult am zis că principalul motiv pentru care sunt folosite calculatoarele/sistemele de calcul este că acestea pot efectua sarcini/''rezolvă'' probleme într-un mod rapid și totodată corect, deci ușurează activitatea omului.

Apoi, am dat exemplul cu calculul mediei la o materie pentru 150 de elevi și timpul necesar în care calculatorul rezolvă această problemă vs timpul necesar în care un om o rezolvă.


O problemă este compusă în general din :


+ unul sau mai multe enunțuri în care se precizează datele de intrare.
- exemplu : " Se dau trei numere întregi ce reprezintă notele la materia Matematică a unui elev."

   - exemplu 2 :" Se citesc de la tastatură trei numere ce reprezintă notele unui elev la Matematică."

+unul sau mai multe enunțuri care prezintă cerința problemei
- exemplu :" Se cere să se calculeze media la Matematică a elevului .... "


  + unul sau mai multe enunțuri în care se precizează cum sunt afișate rezultatele:
- exemplu :" Să se afișeze media elevului pe ecran."

- exemplu 2 :" Să se afișeze mai întâi notele elevului apoi media acestuia."

- exemplu 3 :" Să se afișeze mai întâi media elevului apoi notele acestuia."
  Și exemplele pot continua.

Pe baza cerinței, noi vom construi soluția problemei. Apoi, această soluție va fi ''transpusă'' într-un limbaj de programare și astfel se creează programul de calculator care ''rezolvă'' acea problemă, când este lansat în execuție și i se dau datele de intrare..


Un program este compus din mai multe instrucțiuni sau ''comenzi'' (mai pe înțelesul vostru), specificate într-un anumit limbaj de programare. Fiecare limbaj are propriile reguli asupra felului în care sunt scrise instrucțiunile.


Cam așa arată structura unui program :


instrucțiune1;
instrucțiune2;
instrucțiune3;
.
.
.
instrucțiuneN;





Se mai numește și ''structură liniară a programului'', deoarece instrucțiunile sunt executate (de calculator) în ordinea în care apar ele.


Unele dintre acestea vor avea ca scop preluarea datelor de intrare, următoarele vor prelucra aceste date și restul vor afișa rezultatele prelucrărilor de mai înainte. Este evident că nu se pot scrie instrucțiunile care afișează rezultatele înaintea celor care prelucrează datele, sau cele care prelucrează datele înaintea celor care le preiau.


Dacă ar fi să descriem activitatea programului într-un limbaj mai ''omenesc'', ar fi așa :


+ citește datele de intrare
+ prelucrează datele de intrare
+ afișează rezultatele

Însă cea mai mare parte din timp va fi ocupată cu construirea soluției problemei. Odată găsită, aceasta va fi ușor de implementat în orice limbaj de programare.


Prin ''soluție'' mă refer la acea parte a programului care se ocupă  în special cu prelucrarea datelor de intrare. Mai este cunoscută și sub numele de ''algoritm''. De acum voi folosi numai denumirea din urmă.




Algoritmul este o noțiune fundamentală cu care lucrează Informatica. El înseamnă de fapt '' Un set de pași elementari care rezolvă o anumită problemă sau o categorie de probleme.'' . În viața reală îi folosim mai tot timpul, chiar dacă nu ne dăm seama.


Câteva exemple și situații ar fi :
+ instrucțiunile de asamblare ale unui produs care vine în piese.
+ rețetele culinare,
+ orice activitate care presupune să știi niște pași și ordinea în care să-i execuți

Insăși activitatea programului, descrisă mai sus, este un algoritm.


Noi vom fi preocupați însă cu crearea algoritmilor de prelucrare a datelor de intrare, pentru a rezolva cerințele problemelor.



Deci, cum descriem algoritmii?


   O modalitate ar fi prin fraze coerente. Descriem fiecare pas prin câte o propoziție, simplu și nimic mai mult. Un dezavantaj ar fi că ne-ar lua câteva pagini scrise dacă sunt mulți pași și va fi și mai greu de urmărit, mai ales când îl vom implementa într-un limbaj de programare.



   O altă modalitate ar fi schemele logice, cu care nu am să va complic.


   Și în final, pseudocodul. Acesta este o combinație între rigiditatea scrierii într-un limbaj de programare și folosirea unor cuvinte din limba română pentru a exprima pașii algoritmului/instrucțiunile/ comenzile. Pseudocodul nu e ceva bătut în cuie și poate diferi de la programator la programator, dar ideea este să fie ușor de înțeles pentru oricine îl citește.




Să revenim acum la probleme și cum putem descrie soluțiile, adică algoritmii de rezolvare, în pseudocod (varianta în care îl scriu eu ).


Am zis mai sus că în orice problemă se precizează datele de intrare. Mai demult am zis că pentru a putea fi prelucrate, aceste date de intrare trebuie memorate, în variabile și/sau constante. Nu am să discut mai mult despre acestea pentru că am facut-o deja în lecția cu același titlu.


Primul pas în rezolvarea unei probleme este să identifici datele de intrare și apoi să decizi câte variabile sunt necesare pentru a le memora.

La începutul fiecărui program scris în pseudocod, vom ''declara'' variabilele pe care le vom folosi, scriind în felul următor:

tip_variabila nume_variabila1, nume_variabila2, ...., nume_variabilaN


Numele alese pentru variabile sunt la îndemâna voastră, și pot fi orice doriți.


Exemplu :

  
întreg a,b,c,d,e,f,g,h

sau
  
real x,z,y,var1

sau :
  
întreg arie, perimetru
real volum, densitate

Apoi, urmează instrucțiunea de citire a variabilelor, pe care o vom scrie așa :

citește nume_variabila1, nume_variabila2, etc...


Practic, pasul acesta simbolizează că au fost introduse valori de la tastatură pentru variabilele respective și sunt gata de prelucrare.


Apoi, urmează instrucțiunile/ pașii de prelucrare a variabilelor. E partea la care vom petrece cel mai mult timp gândindu-ne, și nu pot să vă dau o schemă exactă pentru că acestea vor fi diferite de la problemă la problemă deoarece și cerințele vor fi diferite.


Am să introduc însă un nou operator, operatorul = egal. Cu acesta vom atribui valori variabilelor. Felul în care scriem este așa:


  
nume_variabila = ''valoare''.

În loc de ''valoare'', poate fi :

  + o valoare concretă  : a = 15

  + o expresie numerică a= 15 + 7 sau a= 15%7

  + o altă variabilă   a=x sau a=b , etc...

  + o expresie numerică ce conține și variabile   a= b+c sau  a= (b + c)/2 sau a= 2*b + 2*c + x%3

  + o expresie numerică ce conține chiar acea variabilă   a= a+1 sau a= a%2 , etc...




Cam așa vor arăta instrucțiunile de prelucrare. Folosim  în general operatorul = pentru a salva în alte variabile rezultatele prelucrărilor



În cele din urmă trebuie afișate rezultatele cerute, în forma precizată în enunțul problemei. Felul în care scriem este :

  
afișează nume_variabila1, nume_variabila2, etc...... 



Și cam astea ar fi primele reguli în care vom descrie algoritmii folosind pseudocodul.

Mai jos aveți niște exemple concrete.


Enunt

Se citesc doua numere de la tastatura. Sa se afiseze media lor aritmetica apoi semiprodusul lor.


Rezolvare
real a,b,medie,semiprodus

citeste a,b

medie=(a+b)/2
semiprodus= (a*b)/2

afiseaza medie, semiprodus


Enunt

Se citesc trei numere de la tastatura, reprezentand notele unui elev la matematica. Sa se afiseze media elevului apoi notele sale.


Rezolvare
real nota1, nota2, nota3, medie

citeste nota1, nota2, nota3

medie=(nota1+nota2+nota3)

afiseaza medie, nota1, nota2, nota3



Exercitii

1. Se citesc doua numere reprezentand lungimea si latimea unui dreptunghi. Sa se afiseze aria si apoi perimetrul dreptunghiului.

2. Se citeste un numar intreg N. Afisati suma primelor N numere naturale. (hint: aveti o formula pentru treaba asta)

3. Se citeste un numar real reprezentand latura unui patrat. Afisati perimetrul si aria acestuia.

  Trimiteti-le prin PM si nu le postati ca raspuns.

#2
pax0xFF

pax0xFF

    Member

  • Grup: Members
  • Posts: 869
  • Înscris: 21.10.2012
Și cu asta s-a terminat seria de tutoriale?

#3
pale_and_pale

pale_and_pale

    Junior Member

  • Grup: Members
  • Posts: 187
  • Înscris: 11.07.2012
Nup, doar am amanat-o pentru ca am fost si voi fi cam ocupat pana incep facultatea, adica pana pe 1 octombrie. Oricum, cred ca am sa scriu toate articolele intr-un pdf, apoi pun un link aici.

#4
TS030

TS030

    Guru Member

  • Grup: Senior Members
  • Posts: 15,193
  • Înscris: 25.06.2012
Interesant, dar procedand astfel practic scrii de doua ori acelasi program, mai intai in pseudocod, apoi intr-un limbaj de programare. Poate e util la inceput, cand esti inca nefamiliarizat cu scrierea de programe, dar apoi devine redundant si va fi abandonat.

O alta abordare este sa descrii (in limbaj natural) intentia din spatele fiecarei secvente ale algoritmului. De exemplu, "Calculeaza media aritmetica a datelor de intrare" fata de "medie=(a+b)/2".
Sa zicem (cam simplist, dar...):
Citeste notele (numere reale) din fisierul de intrare
Calculeaza media aritmetica a notelor
Afiseaza media, apoi notele citite

In acest stadiu inca nu ai stabilit ce variabile vei folosi, si nu esti legat de-o anumita secventa de instructiuni (ceea ce este logic, de multe ori poti implementa intentia in mai multe moduri. Pasul urmator este sa detaliezi fiecare linie de pseudocod in limbajul de programare, sau daca aceasta e prea complexa sa o spargi in "instructiuni" pseudocod mai simple - apoi repeti procesul, pana cand totul e translatat in cod.
Partea frumoasa este ca liniile de pseudocod scrise astfel vor deveni in mod natural comentarii.

Edited by TS030, 28 September 2013 - 18:50.


Anunturi

Bun venit pe Forumul Softpedia!

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate