Limbaje de Programare - Operatori în C/C++

ScenicKoala avatar
ScenicKoala
·
·
Download

Start Quiz

Study Flashcards

23 Questions

Care sunt cele 3 categorii de operatori în C/C++?

Operatori unari, binari, ternari

Ce este un pointer?

Un pointer este o variabilă care conține adresa altei variabile.

Un pointer poate primi valoarea null.

True

Operatorul * în C/C++ este utilizat pentru dereferențiere și întoarce _______ înregistrată la adresa respectivă.

valoarea

Potrivirea tipurilor de pointeri cu descrierile lor:

int = Tip de pointer pentru numere întregi float = Tip de pointer pentru numere cu zecimale char = Tip de pointer pentru caractere void = Tip de pointer care poate pointa la orice tip

Care este rolul nivelului de rețea în stiva OSI?

Asigură dirijarea unităților de date între nodul sursă și nodul destinație

IP (Internet Protocol) este utilizat pentru interconectarea rețelelor de Internet.

True

Ce rol are nivelul aplicație din stiva OSI?

Fereastră de comunicare între utilizatori și servicii precum accesul la rețea, refacerea erorilor, transferul de fișiere etc.

Algoritmul produce o funcție care stabilește corespondența între datele de intrare și rezultate scop. Acest proces se numește învățare ______.

supervizată

Potrivirea subdomeniilor ale inteligenței artificiale cu descrierile lor:

Reprezentarea cunoștințelor = Este o formă de reprezentare a cunoștințelor utilizând grafuri cu noduri și arce. Învățare supervizată = Procesul de învățare supervizată se bazează pe seturi de date etichetate. Algoritmi de căutare = Metode de căutare utilizate pentru găsirea soluțiilor în spațiul stărilor. Rețele semantice = Folosite pentru reprezentarea cunoștințelor prin recunoașterea relațiilor dintre obiecte și concepte.

Ce reprezintă algoritmul LRU în contextul cache-ului și cum se implementează?

LRU se înlocuiește linia din cache cea mai puțin recent referită. Se poate implementa prin numărătoare, stiva de regiștri sau matrice de biți de stare.

Care sunt caracteristicile esențiale ale arhitecturilor RISC și CISC?

RISC: Set redus de instrucțiuni; CISC: Set amplu de instrucțiuni

Ce este necesar la activarea excepției page fault pentru algoritmul FIFO: FIFO va evacua pagina din MP care se află de cea mai ______ durată.

lungă

Procesoarele superscalare sunt mai ușor de scalat decât cele cu paralelism exploatat prin optimizări de program.

True

Corelați arhitecturile cu caracteristicile corespunzătoare:

RISC = Set redus de instrucțiuni CISC = Multe moduri de adresare

Ce reprezintă BPB în contextul predicției de salturi?

Branch Prediction Buffer

Care sunt principalele tipuri de predictoare de valori utilizate?

Contextuale

Un fir de execuție este similar cu un proces în sensul că poate rula independent.

False

Partiționarea unui HDD constă în împărțirea fizică a acestuia în mai multe ____________.

discuri logice

Potrivirea următoarelor tipuri de predictoare cu descrierile lor:

BPB = Mică memorie cu cei mai puțini biți ai PC-ului PAg = Predicție pe baza a 3 informații ortogonale GAg = Alcătuit dintr-o tabelă PHT adresată cu un index rezultat din concatenarea PClow + HR

Ce este preemptivitatea în planificarea unității centrale?

Trăsătura SO de a putea interveni și de a muta cu forța un proces în defavoarea celorlalte.

Ce reprezintă memoria virtuală în cadrul unui sistem de operare?

Memoria reală este suplimentată de cea externă, prin tehnica de swapping.

Care sunt proprietățile unei tranzacții?

Atomicitate

Study Notes

Limbaje de Programare

  • Operatorii în C/C++:
    • Unari: un operand, de ex. +1
    • Binari: 2 operanzi, de ex. 1+1
    • Ternari: operatorul de in-line if, de ex. A > B ? True : False
  • Categorii de operatori:
    • Aritmetici: +, -, *, /, %
    • Relaționali: , =
    • De egalitate: ==, !=
    • Logici: && (și), || (sau)
    • La nivel de bit: &, ^ (XOR), |
    • De incrementare sau decrementare: ++, --
    • De atribuire: =, *=, +=, etc.
  • Tipul pointer:
    • Declarare: un pointer se declară folosind tip *numePointer, astfel pointer-ul va indica spre o variabilă de tipul specificat
    • Proprietăți: se pot face atribuiri, pointerul poate primi valoarea null, se pot face comparații între pointeri de același tip, etc.

Programare Orientată pe Obiect

  • Moștenirea multiplă:
    • Crează un graf orientat aciclic
    • Permite tratamente uniforme a obiectelor din clase diferite
  • Clase și obiecte:
    • Clasa: entitate asemănătoare cu o structură, cu diferența că membrii unei structuri sunt implicit publici, iar membrii unei clase sunt implicit privați
    • Obiect: instanță a unei clase
  • Drepturi de acces:
    • Public: membrii cu acest atribut pot fi accesați atât din interiorul clasei cât și din afara acesteia
    • Privat: membrii cu acest atribut pot fi accesați doar din interiorul clasei
    • Protected: comportament ca și privat pentru incapsulare, dar ca și public pentru moștenire
  • Moștenirea:
    • Permite refolosirea codului unei clase de către alta nouă
    • Clasa de bază și cea derivată
  • Polimorfism:
    • Tratarea uniformă a obiectelor din clase diferite, dar legate printr-o clasă de bază comună
    • Clasele derivate pot fi tratate ca și clasele de bază
  • Constructori și destructori:
    • Constructor: metoda cu numele clasei și care nu are tip returnat
    • Destructor: metoda cu numele clasei precedat de caracterul tilda, fără tip returnat

Durata de Viață și Vizibilitatea Variabilelor

  • Variabile globale:
    • Durata de viață: pe toată durata execuției programului
    • Vizibilitate: în toate metodele, însă doar în modulul curent
  • Variabile locale:
    • Durata de viață: de la locul declarării și până la ieșirea din corpul funcției sau a structurii delimitată cu acolade
    • Vizibilitate: în interiorul funcției sau al structurii în care a fost declarată
  • Variabile statice:
    • Durata de viață: valorile lor rămân și la ieșirea din funcție, iar la apelul următor aceasta poate fi folosită în continuare
    • Vizibilitate: doar în interiorul funcției
  • Variabile externe:
    • Durata de viață: pe toată durata execuției programului
    • Vizibilitate: în toate modulele unde este declarată

Tratarea Excepțiilor

  • Mecanismul try-catch:
    • În blocul try adăugăm secvența de cod care ar putea arunca o excepție
    • În blocul catch prindem excepția și o gestionăm, fie prin trimiterea unui mesaj de eroare sau prin alte metode care permit continuarea rulării programului
    • Se poate adăuga și un bloc finally, care se execută indiferent dacă avem o excepție sau nu

Paradigme de Programare

  • RISC:
    • Set redus de instrucțiuni care include instrucțiuni simple
    • Memorii cache on chip, număr mare de registre, un compilator care maximizează utilizarea registrelor și încearcă optimizarea cu structura pipeline
  • CISC:
    • Set amplu de instrucțiuni, multe moduri de adresare, formate de instrucțiuni de lungime variabilă
    • Nu necesită compilator complicat, lucrează mai eficient cu memoria folosind mai puține instrucțiuni ca la RISC
  • Arhitectura lui Tomasulo:
    • Superscalar, având mai multe unități de execuție, însă algoritmul de control al acestei structuri stabilește momentul în care instrucțiunea poate fi lansată în execuție și respectiv unitatea de execuție care va procesa instrucțiunea
  • BTB (Branch Prediction):
    • Metoda de predicție numită “branch target buffer” (BTB)
    • Un BTB este constituit dintr-un BPB (branch prediction buffer) care conține lângă biții de predicție noul PC de după instrucțiunea de salt
  • Arhitecturi superscalare vs paralele:
    • Procesoare paralele: existența mai multor unități de execuție paralele care pot avea latențe diferite
    • Procesoare superscalare: procesoare paralele pentru care decodificarea instrucțiunilor, detecția dependențelor de date dintre ele, rutarea și lansarea lor în execuție din bufferul de prefetch se fac prin hardware### Dificultatea detectării reutilizabilității funcțiilor HLL prin schemele de reutilizare dinamică a instrucțiunilor
  • Funcțiile HLL (High Level Language) sunt dificil de detectat datorită apelurilor indirecte de funcții și utilizării switch-case-uri.
  • Reutilizarea dinamică a instrucțiunilor permite economisirea timpului și reducerea penalităților datorate predicției eronate a adreselor destinate.

Avantaje ale tehnicilor de predicție dinamică a valorilor

  • Reducerea hazardurilor RAW;
  • Exploatarea gradului de localitate pentru instrucțiunile ALU;
  • Predicția valorii reducând timpul de acces la memorie și necesarul de lărgime de bandă al memoriei.

Tipuri de predictoare

  • Computaționale: prezic pe baza valorilor anterioare;
  • Contextuale: prezic pe baza unui pattern generat repetitiv în secvența de valori;
  • Hibride: folosesc 2 sau mai multe predictoare diferite.

Sistem de Operare (SO)

  • Partiționarea HDD: scopul și metoda de realizare;
  • Partiția = zona contiguă pe disc delimitată de două adrese;
  • Scopul partiționării: organizarea discului, folosirea discurilor mai mari decât pot fi manipulate de structura logică a SO.

Noțiunea de preemptivitate în planificarea unității centrale

  • Preemptivitate = trăsătura SO de a putea interveni și de a muta cu forța un proces în defavoarea celorlalte.

Memoria Virtuală

  • Memoria Virtuală (MV) = Memoria Reală (MR) suplimentată de cea externă prin tehnica de swapping;
  • Avantaje: simularea unei memorii mai mari decât cea fizică existentă, îmbunătățirea folosirii resurselor sistemului de calcul.

Rolul SO și hardware în tratarea unei excepții page fault

  • Page fault = întreruperea determinată de încercarea de accesare a unei pagini care nu este în memorie și va trebui adusă pe disc;
  • Rutina de tratare a întreruperii de pagină execută: examinează adresa solicitată, caută un cadru liber, solicită o operație I/O de încărcare a paginii, modifică tabela de pagini.

Sistem de Gestiune a Bazelor de Date (SGBD)

  • Caracteristicile modelului relațional pentru baze de date:
    • DB reprezintă o modalitate de stocare și organizare a datelor pe un suport extern;
    • Datele sunt memorate în tabele;
  • Concurența DB: când mai mulți utilizatori vor să acceseze aceleași date simultan;
  • SGBD asigură concurența la modul următor: utilizatorul care efectuează primul modificarea datelor le blochează.

Proiectarea DB

  • Proiectare = transformarea modelelor informaționale în modele dependente de sisteme de gestiune a bazelor de date;
  • Etapele de proiectare a unei DB:
    • Proiectarea conceptuală;
    • Proiectarea logică;
    • Proiectarea fizică.

Tranzacție și proprietăți ACID

  • Tranzacție = secvență de acțiuni dintr-un program care citește și/ sau scrie date în baza de date;
  • ACID: Atomicitate, Consistență, Izolare, Durabilitate.

Baze de Date Distribuite și Baze de Date Orientate pe Obiect

  • Baze de Date Distribuite: DB logic integrate dar fizic distribuite pe mai multe sisteme de calcul;
  • Baze de Date Orientate pe Obiect: permit crearea de obiecte complexe din componente simple, fiecare având propriile atribute și propriul comportament.

Nivelele ISO-OSI (Stiva OSI) ale rețelei de calculatoare

  • Nivelul fizic: transmite datele de la un calculator la altul prin intermediul unui mediu de comunicare;
  • Nivelul legătură de date: corectează erorile de transmitere apărute la nivelul 1;
  • Nivelul rețea: asigură dirijarea unităților de date între nodul sursă și nodul destinație;
  • Nivelul transport: face conexiunea între 2 host-uri detectând și corectând erorile pe care nivelul 3 nu le tratează;
  • Nivelul sesiune: permite utilizatorilor de pe mașini diferite să stabilească între ei sesiune de comunicare;
  • Nivelul prezentare: face operații de transformare a datelor în formate înțelese de entitățile care intervin într-o conexiune;
  • Nivelul aplicație: rol de fereastră de comunicare între utilizatori.### Învățare Supervizată
  • Învățare supervizată produce o funcție care stabilește corespondența între datele de intrare și rezultate scop
  • Un exemplu este o problemă de clasificare, unde sistemul de învățare etichetează o serie de valori folosind mai multe clase

Învățare Nesupervizată

  • Învățare nesupervizată se realizează pe un set de exemplu format numai din intrări de sistem, fără informații despre categoriile acestor exemple
  • Sistemul trebuie să fie capabil să recunoască modele pentru a eticheta noile intrări

Învățare Parțial Supervizată

  • Învățare parțial supervizată combină cele două tipuri menționate mai sus pentru a clasifica datele în mod corespunzător
  • Aceasta ia în considerare date etichetate și neetichetate

Învățare pe de Rost

  • Învățare pe de rost = memorare, salvarea cunoștințelor noi astfel încât atunci când sunt din nou necesare singura problemă va fi găsirea lor și nu un calcul repetat
  • Poate fi văzută ca un proces elementar de învățare, nu suficient de puternic pentru a obține o învățare inteligentă în sine, dar reprezintă o parte importantă în orice sistem de învățare

Cadre și Scenarii

  • Cadru = șablon general, în care datele noi sunt interpretate în termenii sau conceptele experienței dobândite anterior
  • Scenariu = modalitate de reprezentare a cunoașterii ce descrie o secvență stereotipă de evenimente într-un anumit context

Arbori de Joc

  • Arbori de joc se aplică doar în cazul jocurilor care au 2 jucători care mută pe rând, cunoscând la fiecare mutare pozițiile și alegerile posibile ale adversarului
  • Jocul începe cu o stare specifică și se termină cu victoria unui jucător, sau egalitate
  • Există reguli care definesc dacă o mutare e legală și care sunt efectele ei

Aplicații ale Inteligenței Artificiale

  • Rezolvă probleme dificile în chimie, matematică, geologie, inginerie, biologie, medicina la nivelul de performanță al experților umani
  • Manipulează roboții pentru a realiza sarcini motoare repetitive
  • Recunoașterea automată a formelor și sunetelor
  • Algoritmi genetici
  • Teoria jocurilor
  • Rețele neuronale
  • Sistemele expert
  • Agenți inteligenți

Subdomenii ale Inteligenței Artificiale

  • Rezolvarea problemelor, de exemplu în domeniul jocurilor (dame, șah)
  • Înțelegerea limbajului, de exemplu programe de traducere care acumulează cunoștințe prin citirea de texte scrise și prin construirea unei DB interne
  • Programare automată, folosite la sistemele care pot scrie programe pentru a descrie scopul lor
  • Robotică: mișcarea brațului unui robot, recunoașterea obiectelor și a umbrelor în scene vizuale

Reprezentarea Cunoștințelor

  • Reprezentare = mulțime de convenții pentru a descrie obiectele, în IA reprezintă o combinație de structuri de date pentru memorarea informației în programe și de proceduri de utilizare a acestor structuri pentru realizarea de interfețe
  • Reprezentările sunt alese de programator în funcție de date
  • Reprezentările sunt de două tipuri: declarative și procedurale

Algoritmi de Căutare

  • De obicei, spațiul stărilor este reprezentat printr-un graf orientat în care fiecare nod este o stare și fiecare arc reprezintă aplicarea unui operator de transformare a unei stări într-o stare succesor
  • O soluție este o cale de la o stare start la o stare scop
  • Căutarea oarbă în spațiul stărilor: dacă ordinea în care se iau în considerare stările e arbitrară, nefolosind informația specifică domeniului pentru a presupune (sau calcula) unde este mai probabil să se găsească soluția
  • Căutarea euristică în spațiul stărilor: dacă ordinea în care se iau în considerare se face ținând cont de o informație suplimentară despre proprietățile domeniului specific (informație euristică)

Căutarea în Arbori de Joc

  • Căutarea în arbori de joc: este generat un arbore de joc, fiecare nod reprezintă o poziție în joc
  • Cea mai bună mutare este cea care duce la un nod cu valoare maximă

Rețele Semantice

  • Rețele semantice: sunt folosite ca o formă de reprezentare a cunoștințelor
  • Este reprezentată printr-un graf care are noduri și arce
  • Nodurile reprezintă obiecte, concepte sau situații ale domeniilor, iar arcele sunt relații între acestea

Regula Min-Max și Alfa

  • Procedura min-max e o tehnică de căutare în arbori de joc
  • Numele acestei proceduri vine din felul în care sunt evaluate nodurile
  • Procedura alfa-beta încearcă să optimizeze numărul de noduri care sunt evaluate prin folosirea procedurii min-max

Întrebări pentru licență 2024 despre calculatoare, limbaje de programare și operatorii în C/C++. Acest quiz acoperă tipurile de operatori și exemplele acestora.

Make Your Own Quizzes and Flashcards

Convert your notes into interactive study material.

Get started for free

More Quizzes Like This

Use Quizgecko on...
Browser
Browser