Documente Academic
Documente Profesional
Documente Cultură
Noiuni fundamentale
1.1.
DATE DE INTRARE
ALGORITM
DATE DE IESIRE
Soluia unei probleme, din punct de vedere informatic, este dat printr-o mulime de comenzi
(instruciuni) explicite i neambigue, exprimate intr-un limbaj de programare.
Aceast mulime de instruciuni prezentat conform anumitor reguli sintactice formeaz un program.
Algoritmul descrie soluia problemei independent de limbajul de programare n care este redactat
programul.
1
1.2.
Reprezentarea algoritmilor
1.2.1. Pseudocod
Limbajul pseudocod are o sintax i semantic asemntoare limbajelor de programare moderne,
avnd o anumit flexibilitate n ceea ce privete sintaxa, n ideea c prin codificarea unui algoritm ntr-un
limbaj de programare, operaia s fie ct mai comod. Semantica pseudocodului este apropiat de limbajele
de programare utiliznd ns cuvinte i expresii uzuale din limbajul natural.
4
READ lista_variabile
Blocul de citire (doua variante)
- se citesc de la dispozitivul de
intrare valorile variabilelor
specificate in lista_variabile
WRITE lista_expresii
Blocul de scriere (doua variante
) - se scriu la dispozitivul de
iesire valorile obtinute in urma
evaluarii expresiilor din lista
Blocul de atribuire - se
evalueaz expresia, iar valoarea
obtinuta este memorata n
variabil, vechea valoare a
variabilei pierzndu-se
Variabila = expresie
1
1
Orice schem logic care are un singur punct de intrare i un singur punct de ieire poate fi reprezentat cu
ajutorul a trei structuri de baz: structura secvenial (liniar), structura alternativ, structura repetitiv
O schem logic construit numai cu structuri de acest tip este numit schem logic structurat. Un
algoritm structurat conine doar cele 3 structuri enumerate mai sus.
Structura secvenial
Reprezint un proces de calcul format dintr-o operaie elementar, cum este citirea unei valori sau o operaie
de atribuire, dar poate fi i o combinaie de alte structuri. Structura secvenial indic execuia succesiv a
operaiilor de baz i a structurilor de control n ordinea n care apar n schema logic; n general, orice
schem logic cuprinde secvenele:
citirea datelor
iniializarea variabilelor
prelucrri
tiprirea rezultatelor
Structura alternativ
In funcie de valoarea de adevr a condiiei, se execut una din secvene, dup care se trece la prelucrarea
urmtoare; cele dou ramuri se exclud mutual; este posibil ca una din ramuri sa fie vid.
6
In pseudocod avem:
WHILE condiie
Secven instructiuni
ENDWHILE
Cele 3 structuri prezentate (secvenial, alternativ i repetitiv cu condiionare anterioar) sunt denumite
structuri de baz. Orice algoritm poate fi reprezentat folosind cele 3 structuri de baz.
n continuare prezentm nc 2 tipuri de structuri, care sunt folosite n practic, dar care au la baz i deci
pot fi nlocuite de structurile de baz.
Structura repetitiv cu condiionare posterioar (REPEAT-UNTIL)
Condiia se evalueaz dupa o prim execuie a secvenei (deci secvena se execut cel puin o dat); se
revine la execuia secventei, dac nu este adevrat. Dac condiia este adevrat se ncheie aceast
secven.
In pseudocod avem:
7
Universul
problemei
Simulare
Elaborare
program
Compilare
Universul limbajului
de programare
Figura 1.
Fiecare funcie are un nume precedat de un cuvnt cheie care desemneaz tipul funciei (tipul valorii
returnate de funcie).
Numele funciei este urmat de o pereche de paranteze rotunde ntre care se specific tipul i numele
parametrilor funciei. Parantezele sunt necesare chiar dac nu exist parametri.
n limbajul C nu este permis definirea unei funcii n interiorul altei funcii (lucru care este permis
n limbajul Pascal). n limbajul C, toate funciile trebuie definite n mod independent.
Un program C se compune din una sau mai multe funcii, dintre care una este funcia principal. Fiecare
funcie are un nume propriu, cu excepia funciei principale care se numete main. Orice program trebuie
s aib o funcie main iar execuia programului ncepe cu prima instruciune din aceast funcie.
Structura general a unei funcii C este urmtoarea:
tipreturn numefunctie(lista_parametri)
{
instruciuni specifice funciei: declarare variabile locale,instruciuni executabile
return expresie;
Dac tipul returnat de funcie nu este specificat, acesta este implicit considerat int. Dac lista parametrilor
nu este vid, fiecare parametru poate fi eventual specificat doar prin numele su, tipurile parametrilor fiind
precizate prin declaraii care preced corpul funciei.
Prima linie este headerul (antetul) funciei iar ceea ce este inclus ntre acolade se numete corpul funciei.
Corpul funciei este un bloc care poate conine definiii, declaraii de variabile locale i instruciuni necesare
realizrii scopului funciei. De altfel, corpul funciei poate fi considerat o instruciune compus care descrie
prelucrrile necesare pentru a ajunge la valoarea funciei pornind de la valorile parametrilor.
Rezultatul aciunii funciei este dat de expresia coninut de instruciunea (sau instruciunile) return aflat
n corpul funciei.
Exist funcii care nu au parametri i/sau care nu returneaz nici un rezultat. Specificarea acestui aspect se
face utiliznd cuvntul cheie void . Utilizarea lui void pentru a indica o list de parametri vid este
redundant n C++.
Afiarea unui mesaj pe ecranul utilizator necesit prezena unei instruciuni printf (Exemplul 2).
Exemplu 2:
#include<stdio.h>
int main()
11
Observaii:
prima linie: obligatorie pentru orice program care citete sau scrie, este o directiv de preprocesare,
include fiierul stdio.h care conine declaraiile funciilor standard de intrare/ieire adic
informaiile (nume, parametri) necesare compilatorului pentru a le folosi corect
printf (print formatted): o funcie standard implementat ntr-o bibliotec care e inclus
Exemplul 4: Citete de la tastatur numele unei persoane, afieaz pe ecran o urare de bun venit n lumea
C, folosind acest nume
#include <stdio.h>
int main()
{
char nume[10];
printf("Numele dumneavoastra:");
scanf("%s", nume);
printf("Bine ai venit in lumea C! %s\n", nume);
return 0;
}
Exemplu: Pentru dou variabile de tip intreg , interschimbai coninutul lor. Nu se folosete o variabil
suplimentara.
#include <stdio.h>
int main() {
int a,b;
printf("Introduceti cele doua variabile (a,b):");
scanf("%d,%d",&a,&b);
a=a-b;
b=a+b;
a=b-a;
printf("Dup interschimbare: a=%d, b=%d\n",a,b);
return 0;
}
Bibliografie
1. Negrescu Liviu, Limbajul C, ed. Agora 1997
2. Logoftu Doina, Bazele programrii n C, Ed. Polirom 2006
3. Cerchez Emanuela i erban Marinel, Programarea n limbajul C/C++, Ed.
Polirom 2005
4. Bologa Cristian., Algoritmi, ed. Risoprint
5. G.C. Silaghi, Mircea Moca, Limbaje de programare. Metode obiectuale. Ed.
Risoprint 2008
13