36
Teorie informatica liceu! STRUCTURA UNUI PROGRAM C++ A. Blocul de biblioteci #include<iostream.h> -> cout,cin,… #include<conio.h> -> getch,… #include<math.h> -> functii matematice (pow, sqrt, etc) #include<string.h> -> caractere, siruri de caractere #include<fstream.h> -> fisiere #include<stdio.h> -> anumite functii de citire B. Blocul de declarari int -> numere intregi [-32000, 32000] long -> numere intregi mai mari ca 32000 (int) sau peste 5 cifre float -> numere reale double -> numere reale mai mari si cu o precizie mai mare decat cele float unsigned -> numere natural [0, 65000] char -> character, sisruri de caractere La declarare se atribuie spatiu de memorie pentru variabilele declarate. 1000 <- adresa la care va fi memorata var a Ex: int a; => a spatiul de memorie

Teorie informatica liceu 1

Embed Size (px)

DESCRIPTION

Chestii utile programare din liceu C++

Citation preview

Teorie informatica liceu!

STRUCTURA UNUI PROGRAM C++A. Blocul de biblioteci#include -> cout,cin,#include -> getch,#include -> functii matematice (pow, sqrt, etc)#include -> caractere, siruri de caractere#include -> fisiere#include -> anumite functii de citire

B. Blocul de declarariint -> numere intregi [-32000, 32000]long -> numere intregi mai mari ca 32000 (int) sau peste 5 cifrefloat -> numere realedouble -> numere reale mai mari si cu o precizie mai mare decat cele floatunsigned -> numere natural [0, 65000]char -> character, sisruri de caractere La declarare se atribuie spatiu de memorie pentru variabilele declarate.1000 a

spatiul de memorie

C. Functii definite de utilizatorAcest pas este optional. Discutam la functii mai detaliat!

D. Programul principalvoid main(){ Instructiunile programului principalgetch();}

MinGW CodeBlocks Devc++Avem biblioteci la care se pune .h si biblioteci la care nu se pune .h.

Ex: #include#include#include#include

Dupa ce includem bibliotecile punem: using namespace std;

Programul principal:int main(){ Instructiunile programului principalreturn 0;}

OPERATORI MATEMATICI+ adunare- scadere* inmultire/ impartire, catul% restul impartiriiEx: 123/10=12123/10=12.3(float)123%10=3

INSTRUCTIUNIA. Instructiunea alternativaif (conditie) Instructiuni1else Instructiuni2In cazul in care conditia este adevarata se va executa setul de Instructiuni1. In cazul in care conditia este falsa se va executa setul de Instructiuni2.Ex: if (nr>0) s=5+nr;else{nr=0-nr;s=5+nr;}Ramura else este optionala => poate lipsi!

B. Instructiuni repetitive1. Cu test initialwhile (conditie_adevarata){Instructiuni}Cat timp conditia este adevarata se vor executa Instructiunile. In momentul in care conditia devine falsa, instructiunea repetitive cu test initial, while, se opreste!!!! Daca, conditia este falsa de la inceput, instructiunile nu se executa deloc!!!

Ex. Structura repetitiva cu test initialCitirea de numere pana la introducerea lui 0.3 5 2 9 7 11 0coutnr;while(nr!=0){lucrez cu nrcoutnr;}

2. Cu test finaldo{Instructiuni}while (conditie_adevarata);Cat timp conditia este adevarata, se vor executa Instructiunile.In momentul in care conditia devine falsa, instructiunea repetitive cu test final, dowhile, se opreste!!!! Daca, conditia este falsa de la inceput, instructiunile se vor executa o sigura data!!!

Ex. Structura repetitiva cu test finalCitirea de numere pana la introducerea aceleiasi valori de doua ori.3 5 2 9 7 11 11coutnr1;do{nr2=nr1;lucrez cu nr2coutnr1;}while(nr1!=nr2);

3. FOR (cu numar cunoscut de pasi/iteratii)for(i=val_initiala; i [1,n]for(i=1; i [1,n)for(i=1; iv[710]) adica (1>6) NuPe prima pozitie a fost adusa cea mai mica valoare.

IIi. i=2Ij. j=3 completam casuta 2 cu urmatoarea cea mai mica valoare s.a.m.d

Algoritmul de sortare a vectorului ne ajuta sa aducem toate valorilenegative/positive la inceputul vectorului respective sfarsitul lui!

CREARE VECTOR

int k, v[100];.....k=0;if (cond){ verificam daca elementul indeplineste conditiak++;v[k]=element;}

3. Interclasare vectori (vectorii trebuie sa fie vectori sortati!!!)

ADAUGARE ELEMENTE INTR-UN VECTOR1. Adaugare la inceputIDEE: Pentru a putea face adaugarea unui nou element la inceput unui vector trebuie sa mutam toate elementele cu o pozitie spre sfarsitul vectorului si apoi sa efectuam adaugarea.1521163542634741

987654321

151521163542634741

x=33331521163542634741

cin>>x;-> elementul ce trebuie introdus pe prima pozitien++;-> adauga o noua casuta goala la sfarsitul vectorului for(i=n; i>1; i--)v[i]=v[i-1];v[1]=x;2. Adaugare in interiorIDEE: Trebuie sa mutam toate elementele incepand de la pozitia in care dorim sa introducem noul element cu o pozitie spre sfarsit vectorului si apoi sa efectuam adaugarea noului element.(pozitia)k=5, x=33543211521163542634741

1 2 3 4 5 6 7 8 9

152116354542634741

1 2 3 4 5 6 7 8 9 10

152116333542634741

1 2 3 4 5 6 7 8 9 10

cin>>k>>x; -> pozitia si elementul ce trebuie introdusn++;-> adauga o noua casuta goala la sfarsitul vectoruluifor(i=n; i>k; i--)v[i]=v[i-1];v[k]=x;3. Adaugare la sfarsitIDEE: Marim numarul elementelor cu o unitate si efectuam introducerea noului element.cin>>x;n++;-> adauga o noua casuta goala la sfarsitul vectoruluiv[n]=x;

STERGERE ELEMENTE DINTR-UN VECTOR1. Stergere de la inceputIDEE: Mutam toate elementele spre inceputul vectorului cu o pozitie si apoi scadem numarul de elemente cu o unitate.for(i=1; i>k;for(i=k; i matrice cu maxim 25 de linii si 25 de coloane cu elemente de tip intfloat a[100][100]; -> matrice cu maxim 100 de linii si 100 de coloane cu elemente de tip floatunsigned a[25][50]; ->matrice cu maxim 25 de linii si 50 de coloane cu elemente de tip unsigned

B. Citirecoutn;coutm;for(i=1; i nou=acalaureat

s=bacalaureat;c=a;nou= strchr(s,c); => nou=acalaureatAceasta functie este utilizata si pentru a stabili daca un caracter din sir este sau nu vocala:Ex: if(strchr(AEIOUaeiou, s[i]) !=0) => s[i] este vocala if(strchr(AEIOUaeiou, s[i]) ==0) => s[i] nu este vocala

7. Strrchr(s,c) -> returneaza subsirul de caractere obtinut incepand cu ultima aparitie a caracterului c in sirul s.Ex:s=bacalaureat;nou=strrchr(s, a); => nou=at

s=bacalaureatc=a;nou=strrchr(s,c); => nou=at

8. Strstr(s1,s2) -> returneaza subsirul de caractere obtinut incepand cu prima aparitie a sirului s2 in s1.Ex:s1=bacalaureat;s2=lau;nou=strstr(s1,s2); => nou=laureat

9. Strcmp(s1,s2) -> compara cele doua siruri de caractere tinand cont de litere mari si mici.10. Strncmp(s1,s2,nr) -> compara primele nr caractere din s1 cu primele nr caractere din s2 tinand cont de litere mari si mici.11. Stricmp(s1,s2) ->compara cele doua siruri de caractere fara a tine cont de litere mari si mici.12. Strnicmp(s1,s2,nr) -> compara primele nr caractere din s1 cuprimele nr caractere din s2 fara a tine cont de litere mari si mici.13. Functii de transformare din sir de caractere in numarnr1=atoi(s1); -> transforma sirul in numar de tip intnr2=atol(s2); -> transforma sirul in numar de tip longnr3=atof(s3); -> transforma sirul in numar de tip float14. Functii de transformare din numar in sir de caractere itoa(nr1, s1, 10); -> transforma din numar de tip int in sirltoa(nr2, s2, 10); -> transforma din numar de tip long in sirftoa(nr3, s3, 10); -> transform din numar de tip float in sir

Functiile strcmp, strncmp, stricmp si strnicmp retuneaza:1, daca s1>s20, daca s1=s2-1, daca s1 6 este tatal cu cei mai multi fii 1 2 3 4 5 6 7 8 (cele 8 noduri) => 4 frunze: 1,2,3,8 frunze!Grafuri orientate: = gradul exterior (arcele care ies din nod) = gradul interior (arcele care intra in nod) = multimea nodurilor care pleaca (ies) din nod = multimea nodurilor care intra in nod = multimea arcelor care ies din nod = multimea arcelor care intra in nod

Algoritmi 1. Algoritmul de divizori.Idee: Un numar il are ca divizor pe d daca numarul impartit la d da restul 0. Adica: n%d=0. Noi trebuie sa il gasim pe d. Un numar are divizori, in afara de 1 si el insusi, de la 2 la n/2.Pas1. Parcurg posibilii divizori ai numarului n, adica [2,n/2].Pas2. Daca n se imparte la vre-un numar din intervalul [2,n/2] atunci numarul respectiv este divizor pentru n.Pas3. Fac ce imi cere problema cu divizorul gasit.

COD:for(div=2;div