Teorie informatica liceu 1

March 21, 2017 | Author: Alex Alex | Category: N/A
Share Embed Donate


Short Description

Chestii utile programare din liceu C++...

Description

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 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 a spatiul de memorie C. Functii definite de utilizator Acest pas este optional. Discutam la functii mai detaliat! D. Programul principal void main(){ … Instructiunile programului principal… getch(); }

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 principal… return 0; } OPERATORI MATEMATICI + adunare - scadere * inmultire / impartire, catul % restul impartirii Ex: 123/10=12 123/10=12.3(float) 123%10=3 INSTRUCTIUNI A. Instructiunea alternativa if (conditie) …Instructiuni1… else …Instructiuni2… In 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 repetitive 1. Cu test initial while (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 initial Citirea de numere pana la introducerea lui 0. 3 5 2 9 7 11 0 coutnr; while(nr!=0){ …lucrez cu nr… coutnr; } 2. Cu test final do{ …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, do…while, se opreste! !!! Daca, conditia este falsa de la inceput, instructiunile se vor executa o sigura data!!! Ex. Structura repetitiva cu test final Citirea de numere pana la introducerea aceleiasi valori de doua ori. 3 5 2 9 7 11 11 coutnr1;

do{ nr2=nr1; …lucrez cu nr2… coutnr1; }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) Nu Pe prima pozitie a fost adusa cea mai mica valoare.

13

10

11

IIi. i=2 Ij. 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 valorile negative/positive la inceputul vectorului respective sfarsitul lui!

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

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

6

ADAUGARE ELEMENTE INTR-UN VECTOR

1. Adaugare la inceput IDEE: 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. 15 21 16 3 54 26 34 7 41 9 8 7 6 5 4 3 2 1 15

15

21

16

3

54

x=33 33

15

21

16

3

54

26

26

34

34

7

41

7

41

cin>>x;-> elementul ce trebuie introdus pe prima pozitie n++;-> 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 interior IDEE: 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=33 5 4 3 2 1 15 21 16 3 54 26 34 7 41 1 2 3 4 5 6 7 8 9 15 1

21 2

15 1

16 3

21 2

3 4

16 3

54 5

3 4

33 5

54 6 54 6

26 7

34 8

26 7

7

41 10

7

41 10

9 34

8

cin>>k>>x; -> pozitia si elementul ce trebuie introdus n++;-> adauga o noua casuta goala la sfarsitul vectorului for(i=n; i>k; i--) v[i]=v[i-1]; v[k]=x; 3. Adaugare la sfarsit

9

IDEE: Marim numarul elementelor cu o unitate si efectuam introducerea noului element. cin>>x; n++;-> adauga o noua casuta goala la sfarsitul vectorului v[n]=x; STERGERE ELEMENTE DINTR-UN VECTOR 1. Stergere de la inceput IDEE: 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 int float a[100][100]; -> matrice cu maxim 100 de linii si 100 de coloane cu elemente de tip float unsigned a[25][50]; ->matrice cu maxim 25 de linii si 50 de coloane cu elemente de tip unsigned B. Citire coutn; coutm; for(i=1; i nou=”acalaureat” s=”bacalaureat”; c=‟a‟; nou= strchr(s,c); => nou=”acalaureat” Aceasta 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=”bacalaureat” c=‟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 cu primele nr caractere din s2 fara a tine cont de litere mari si mici. 13. Functii de transformare din sir de caractere in numar nr1=atoi(s1); -> transforma sirul in numar de tip int nr2=atol(s2); -> transforma sirul in numar de tip long nr3=atof(s3); -> transforma sirul in numar de tip float 14. Functii de transformare din numar in sir de caractere itoa(nr1, s1, 10); -> transforma din numar de tip int in sir ltoa(nr2, s2, 10); -> transforma din numar de tip long in sir ftoa(nr3, s3, 10); -> transform din numar de tip float in sir Functiile strcmp, strncmp, stricmp si strnicmp retuneaza: 1, daca s1>s2 0, 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
View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF