
7 minute read
Algorithms and programming languages
Florin POSTOLACHE
Programarea calculatoarelor şi limbaje de programare prin exemple practice
Advertisement

Editura Academiei Navale „Mircea cel Bătrân” Constanţa, 2018
Cuprins
BAZELE INFORMATICII ............................................................................................... 15
NOȚIUNI INTRODUCTIVE ................................................................................................... 15 INFORMAȚII ȘI PRELUCRĂRI .............................................................................................. 16 Date ............................................................................................................................. 16 Informație .................................................................................................................... 18 Cunoștințe .................................................................................................................... 19 Sistemul informațional................................................................................................. 19 Sistemul de calcul ........................................................................................................ 20
REPREZENTAREA ȘI STRUCTURAREA INFORMAȚIEI ...................................... 22
BIT, OCTET ȘI MULTIPLII ACESTORA .................................................................................. 22 TIPURI DE DATE SIMPLE .................................................................................................... 24 SISTEME DE NUMERAȚIE ................................................................................................... 24 Sistemul de numerație zecimal (baza 10) .................................................................... 25 Sistemul de numerație binar (baza 2) .......................................................................... 26 Sistemul de numerație octal (baza 8)........................................................................... 27 Sistemul de numerație hexazecimal (baza 16) ............................................................. 27 Interdependența sistemelor de numerație .................................................................... 28 Conversia binar – octal - hexazecimal și invers .......................................................... 29 Conversia binar – zecimal și invers ............................................................................ 30
REPREZENTAREA NUMERELOR ÎNTREGI ............................................................................ 31 PROBLEME PROPUSE: ........................................................................................................ 33
ALGORITM ....................................................................................................................... 34
REPREZENTAREA ALGORITMILOR ..................................................................................... 34 Scheme logice .............................................................................................................. 36 Pseudocod ................................................................................................................... 37
ELABORAREA ALGORITMILOR .......................................................................................... 39 Analiza și complexitatea algoritmilor ......................................................................... 40 Complexitatea algoritmului ......................................................................................... 40
PRELUCRAREA INFORMAȚIEI .................................................................................. 42
IDENTIFICATOR, VARIABILĂ, CONSTANTĂ, LITERAL ......................................................... 42
EXPRESII ........................................................................................................................... 43
OPERATORI ....................................................................................................................... 44
TIPURI DE EXPRESII ........................................................................................................... 45
INSTRUCȚIUNI ................................................................................................................ 47
INSTRUCȚIUNI SIMPLE (SECVENȚIALE) .............................................................................. 48 INSTRUCȚIUNI STRUCTURATE (STRUCTURI DE CONTROL) ................................................. 49 Instrucțiuni decizionale (de selecție) ........................................................................... 50
....................................................................................................................................................................
...................................................................................................
Algoritmică şi programare
Instrucțiuni repetitive (bucle sau cicluri) .................................................................... 53PROGRAME ȘI SUBPROGRAME ................................................................................. 56
SUBPROGRAME ................................................................................................................. 57
PROGRAMUL PRINCIPAL .................................................................................................... 58 REALIZAREA PROGRAMELOR ȘI PROGRAME SUPORT ......................................................... 59 PROBLEMATICA PROGRAMĂRII ......................................................................................... 60 Etape în ciclul de viață ale unui produs program ....................................................... 61 Limbaje de programare ............................................................................................... 68
MEDIUL DE PROGRAMARE RAPTOR ....................................................................... 88
INTERFAȚA GRAFICĂ UTILIZATOR ..................................................................................... 88 STRUCTURA UNUI PROGRAM ............................................................................................. 89 Operații de intrare(input) ............................................................................................ 91 Operații de prelucrare procesare ................................................................................ 92 Operații de ieșire (output). .......................................................................................... 93 Execuția algoritmului/programului ............................................................................. 93
SCHEME LOGICE. APLICAȚII PRACTICE UTILIZÂND RAPTOR ........................................... 95 Algoritm pentru calculul Sumei a două numere .......................................................... 95 Algoritm pentru calculul ariei si perimetrului unui dreptunghi .................................. 95 Algoritm pentru rezolvarea ecuației de gradul I: a*x+b=0, unde a și b sunt numere reale inserate (citite) de la tastatură ........................................................................... 97 Algoritm pentru rezolvarea ecuației de gradul 2: ax 2 +bx+c=0 .................................. 97 Algoritm pentru Suma Gauss (suma primelor n numere naturale) ............................. 99 Algoritm pentru Suma pătratelor/cuburilor primelor n numere naturale ................. 100 Algoritm pentru calculul k = 1n kk + 139T................................................................. 100 Algoritm pentru calculul k = 1nkk + 139T 101 Algoritm pentru calculul k = 1nk2 + 2k + 1k2 + 2k + 239T 101 Schema logică pentru calcului factorialului (n!)....................................................... 102 Algoritm pentru calculul Cnk39T 102 Algoritm pentru calculul Ank39T 103 Algoritm pentru numere prime .................................................................................. 103
SCHEME LOGICE. SUBSCHEME SI PROCEDURI .................................................................. 104 Schemă logică pentru citirea unui număr natural nenul, determinarea și afișarea cifrelor sale................................................................................................................ 105 Schemă logică pentru citirea unui număr natural nenul și afișarea inversului numărului .................................................................................................................. 106 Test palindrom pentru un număr natural nenul, citit de la tastatura ........................ 106 Mulțimea de palindromuri pana la n ......................................................................... 107 Mulțimea de palindromuri dintr-un interval ............................................................. 107 Schema logică pentru citirea unui număr natural nenul, determinarea și afișarea sumei/produsului cifrelor sale ................................................................................... 108 Schema logică pentru afișarea produsului cifrelor unui număr natural, utilizând o subschemă logică ...................................................................................................... 108 Schema logică pentru afișarea produsului cifrelor unui număr natural, utilizând o procedură .................................................................................................................. 109
ii
Algoritmică şi programare
Schema logică și pseudocod pentru calculul sumei/produsului cifrelor unui număr natural nenul utilizând proceduri. ............................................................................. 109 Aranjamente și combinări utilizând o subschemă logică .......................................... 110 Sisteme de numerație. Conversia unui număr din binar (baza 2) în zecimal (baza 10) ................................................................................................................................... 110 Conversia unui număr din zecimal (baza 10)în binar (baza 2) ................................. 111
SCHEME LOGICE. TABLOURI ........................................................................................... 111 Algoritm pentru scrierea si citirea elementelor unui vector ...................................... 111 Algoritm pentru: ........................................................................................................ 112 Algoritm pentru elementele comune a doi vectori ..................................................... 113 Algoritm pentru sortarea elementelor vectorului ...................................................... 113 Matrice. Algoritm (pseudocod si schema logică) pentru scrierea si citirea elementelor ................................................................................................................................... 114 Schemă logică și pseudocod pentru citirea/scrierea elementelor matricei, suma elementelor diagonalei principale si secundare ........................................................ 114 Algoritm sortare elemente matrice pe linia k ............................................................ 117
LIMBAJUL DE PROGRAMARE C/C++ ..................................................................... 118
NOȚIUNI INTRODUCTIVE ................................................................................................. 118 STRUCTURA UNUI PROGRAM C/C++ ............................................................................... 119 UNITĂȚI LEXICALE C/C++ .............................................................................................. 120 Mulțimea caracterelor ............................................................................................... 120 Comentariul ............................................................................................................... 121 Tipuri de date primare............................................................................................... 122 Constante ................................................................................................................... 124 Constante de tip caracter .......................................................................................... 124 Constante de tip șir de caractere ............................................................................... 125 Constante de tip întreg .............................................................................................. 125 Constante de tip real ................................................................................................. 125 Cuvinte cheie ............................................................................................................. 125 Separatori .................................................................................................................. 126 Variabile .................................................................................................................... 126
EXPRESII. OPERANZI. OPERATORI .................................................................................. 127 Expresii ...................................................................................................................... 127 Operanzi .................................................................................................................... 127 Conversii implicite de tip ........................................................................................... 127 Operatori ................................................................................................................... 127 Operatori de adresare ............................................................................................... 129 Operatori unari ......................................................................................................... 129 Operatori multiplicativi ............................................................................................. 130 Operatori aditivi ........................................................................................................ 131 Operatori pentru deplasare ....................................................................................... 131 Operatori relaționali ................................................................................................. 131 Operatori de egalitate ............................................................................................... 132 Operatori logici ......................................................................................................... 132 Operatorul condițional .............................................................................................. 132
iii
Algoritmică şi programare
Operatori de atribuire ............................................................................................... 132 Operatorul virgulă .................................................................................................... 133
STRUCTURI ALGORITMICE. INSTRUCȚIUNI ...................................................... 134
INSTRUCȚIUNI SIMPLE ..................................................................................................... 135 INSTRUCȚIUNI COMPUSE ................................................................................................. 135 Blocul ........................................................................................................................ 135 Structuri decizionale(ramificate) ............................................................................... 136 Structuri repetitive (bucle sau cicluri) ....................................................................... 139 Descriptori de format ................................................................................................ 143
APLICAȚII PRACTICE ....................................................................................................... 143
MASIVE DE DATE ......................................................................................................... 149
MASIVE DE DATE UNIDIMENSIONALE .............................................................................. 149 APLICAȚII PRACTICE ....................................................................................................... 150 Algoritm pentru citirea elementelor unui vector ....................................................... 150 Algoritm pentru scrierea elementelor unui vector ..................................................... 150 Algoritm pentru citirea și scrierea elementelor unui vector ...................................... 150 Suma elementelor unui vector ................................................................................... 151 Suma elementelor cu valoare para, produsul elementelor cu valoare impara ale unui vector ......................................................................................................................... 152 Sortarea elementelor unui vector in ordine crescătoare ........................................... 152 Determinarea valorii minime și poziția sa într-un vector de numere reale ............... 153 Produsul scalar a doi vectori .................................................................................... 154
MASIVE DE DATE BIDIMENSIONALE ................................................................................ 155 APLICAȚII PRACTICE ....................................................................................................... 155 Algoritm pentru citirea/scrierea elementelor unei matrice ....................................... 155 Suma elementelor matricei situate pe diagonala principală si secundară ................ 156 Suma elemente matrice pe coloana k ........................................................................ 157 Suma elemente matrice de pe linia k ......................................................................... 158
MASIVE DE DATE N-DIMENSIONALE ................................................................................ 158
FUNCȚII ALE LIMBAJULUI DE PROGRAMARE C/C++ ...................................... 160
DECLARAȚII ȘI DEFINIȚII DE FUNCȚII .............................................................................. 161 Aplicații practice ....................................................................................................... 162
ITERAȚIA SI RECURSIVITATEA ......................................................................................... 166 Aplicații practice ....................................................................................................... 168
DEFINIREA ȘI TRANSMITEREA PARAMETRILOR. PARAMETRI FORMALI ȘI ACTUALI ......... 178
ADRESE DE MEMORIE. POINTERI .......................................................................... 186
Operatorii de adresare si dereferenţiere ................................................................... 189 Pointeri la funcții ....................................................................................................... 191 Aplicații practice ....................................................................................................... 192
STRUCTURI ȘI UNIUNI ................................................................................................ 199
STRUCTURI ..................................................................................................................... 199 Pointeri către structuri .............................................................................................. 203
iv
Algoritmică şi programare
Typedef. Crearea unor noi tipuri de date .................................................................. 204
UNIUNI ........................................................................................................................... 205
STRUCTURI ȘI UNIUNI. DIFERENȚE .................................................................................. 208
DIRECTIVE PRE-PROCESOR ..................................................................................... 210
MACRO-DEFINIȚII ........................................................................................................... 210 Directiva #define ....................................................................................................... 211 Comparație între macro-definiții și funcții C/C++ ................................................... 212 Directiva #undef ........................................................................................................ 212 Directive de compilare condiționată ......................................................................... 213 Directivele #if, #else, #elif și #endif .......................................................................... 213 Directivele #ifdef şi #ifnde ......................................................................................... 215 Directiva #include ..................................................................................................... 216 Directiva #error ........................................................................................................ 217
FUNCȚII DE INTRARE/IEȘIRE .................................................................................. 218
FUNCȚII DE INTRARE/IEȘIRE PENTRU CARACTERE ........................................................... 218 FUNCȚII DE INTRARE/IEȘIRE CU FORMAT ........................................................................ 219 FUNCȚII CU FORMATARE PENTRU ȘIRURI DE CARACTERE ................................................ 220 FUNCȚII PENTRU GESTIUNEA TIMPULUI .......................................................................... 220 Aplicații practice: ...................................................................................................... 223
FUNCȚII PENTRU OPERAȚII MATEMATICE ........................................................................ 226 Constante simbolice................................................................................................... 226 Funcții trigonometrice ............................................................................................... 226 Funcții putere și radical ............................................................................................ 227 Funcții exponențiale, logaritmice și hiperbolice ....................................................... 227 Funcții de conversie .................................................................................................. 228 Funcții parte întreagă, de rotunjire și de trunchiere ................................................. 229 Funcții modul ............................................................................................................ 229 Funcții pentru generarea numerelor aleatoare ......................................................... 229 Aplicații practice ....................................................................................................... 230
FUNCȚII PENTRU OPERAȚII CU ȘIRURI DE CARACTERE ..................................................... 232 Aplicații practice ....................................................................................................... 236
FUNCȚII PENTRU CLASIFICAREA CARACTERELOR ........................................................... 245 Aplicații practice ....................................................................................................... 247
ALOCAREA DINAMICĂ A MEMORIEI .................................................................... 254
Funcțiile standard pentru gestiunea dinamică a memoriei ....................................... 256 Alocarea dinamică a memoriei .................................................................................. 257 Alocarea dinamică a memoriei utilizând pointeri ..................................................... 258 Aplicații practice ....................................................................................................... 258 Funcții pentru operații cu blocuri de memorie .......................................................... 264 Aplicații practice ....................................................................................................... 264
FIȘIERE I/O. FUNCȚII PENTRU OPERAȚII ASUPRA FIȘIERELOR .................. 272
FIȘIERE DE DATE. INTRODUCERE .................................................................................... 272 DESCHIDEREA ȘI/SAU CREAREA UNUI FIȘIER ................................................................... 274
v
Algoritmică şi programare
Deschiderea și/sau crearea unui fișier text ............................................................... 275 Deschiderea și/sau crearea unui fișier binar ............................................................ 275 Poziționarea indicatorului de citire/scriere .............................................................. 279 Funcții pentru tratarea erorilor ................................................................................ 281 Funcții de citire/scriere fără format .......................................................................... 282 Funcții de citire/scriere șir de caractere ................................................................... 284 Aplicații practice ....................................................................................................... 285
METODE DE PROGRAMARE ..................................................................................... 288
METODA “DIVIDE ET IMPERA” ....................................................................................... 288 Pașii metodei ............................................................................................................. 289 Aplicații practice ....................................................................................................... 290
METODA “BACKTRACKING” ........................................................................................... 298 Backtracking nerecursiv ............................................................................................ 299 Backtracking recursiv ................................................................................................ 300 Pașii metodei ............................................................................................................. 302 Aplicații practice ....................................................................................................... 303
BIBLIOGRAFIE .............................................................................................................. 309
vi