Sunteți pe pagina 1din 12

CONCURSUL NAŢIONAL DE OCUPARE A POSTURILOR DIDACTICE/CATEDRELOR

VACANTE/REZERVATE DIN ÎNVĂŢĂMÂNTUL PREUNIVERSITAR


12 iulie 2023
Probă scrisă
INFORMATICĂ ȘI TEHNOLOGIA INFORMAȚIEI

SUBIECTUL REZOLVAT
Varianta 3
 Toate subiectele sunt obligatorii. Se acordă zece puncte din oficiu.
 Timpul de lucru efectiv este de patru ore.
 Programele cerute vor fi scrise folosind unul dintre limbajele de programare Pascal, C
sau C++, la alegere. Identificatorii utilizați în programe trebuie să corespundă
semnificației asociate acestora, eventual în formă prescurtată.
SUBIECTUL I (30 de puncte)
1. Prezentați datele de tip real în limbajul de programare ales, după următorul plan de idei:
- un tip real, precizând numărul de octeți alocați pentru reprezentarea în memorie a unei valori de
acest tip;
- patru exemple de declarare a unei variabile de tipul ales, inițializată cu constante reale, fiecare
constantă punând în evidență câte o particularitate distinctă a formei generale prin care se poate
exprima un număr real;
- două exemple de operatori care să pună în evidență operații specifice cu date de tip real;
- trei exemple de funcții predefinite uzuale care prelucrează/furnizează date de tip real;
- un exemplu de utilizare a datelor de tip real și a tipului real ales în rezolvarea unei probleme
(enunț, descriere în limbaj natural a unei soluții, implementare în limbaj de programare a soluției).
(15 puncte)

RĂSPUNS:

Tipul de date real în limbajul de programare C++:


- În limbajul de programare C++, tipul de date real este reprezentat de `float` și `double`. `float` ocupă
4 octeți, iar `double` ocupă 8 octeți în memorie.

Patru exemple de declarare a unei variabile de tipul ales, inițializată cu constante reale, fiecare
constantă punând în evidență câte o particularitate distinctă a formei generale prin care se
poate exprima un număr real;

// Exemplu 1: Declarare și inițializare cu o constantă reală


float numar1 = 3.14;

// Exemplu 2: Utilizarea tipului double și inițializare cu o constantă reală


double numar2 = 2.71828;

// Exemplu 3: Inițializare cu o constantă reală sub formă de fractionară


float numar3 = 5.0;

// Exemplu 4: Inițializare cu o constantă reală sub formă de științifică


double numar4 = 1.2e-5;

Două exemple de operatori care să pună în evidență operații specifice cu date de tip real:

// Exemplu 1: Operatorul de adunare


float suma = numar1 + numar3;

// Exemplu 2: Operatorul de înmulțire


double produs = numar2 * numar4;

Probă scrisă la informatică și tehnologia informației Varianta 3


Pagina 1/12
Trei exemple de funcții predefinite uzuale cu date de tip real:

#include <cmath>

// Exemplu 1: Funcția sqrt() - rădăcina pătrată


float radacina = sqrt(numar3);

// Exemplu 2: Funcția cos() - cosinusul


double cosinus = cos(numar2);

// Exemplu 3: Funcția ceil() - valoarea întreagă superioară


double valoareIntreaga = ceil(numar4);

Exemplu de utilizare a datelor de tip real în rezolvarea unei probleme:


// Problema: Calcularea suprafeței unui cerc dacă se dă valoarea razei
// Formula: Suprafața = π * r^2

const float PI = 3.14159;


float raza = 2.5;

// Calcularea suprafeței
float suprafataCerc = PI * raza * raza;

// Afișarea rezultatului
std::cout << "Suprafata cercului cu raza " << raza << " este: " << suprafataCerc << std::endl;

Probă scrisă la informatică și tehnologia informației Varianta 3


Pagina 2/12
2. Prezentați tabelele într-un procesor de text după următorul plan de idei:
- noțiuni preliminare (elemente de interfață a unui procesor de text, două tipuri de elemente din
conținutul/structura unui document în care se poate insera un tabel);
- două modalități de a insera un tabel într-un document;
- o modalitate de a utiliza/aplica opțiunile de formatare la nivelul tabelului/unui element din
structura tabelului;
- nouă opțiuni de personalizare a unui tabel/element din structura tabelului, vizând dimensiunile
și aspectul, care se pot stabili la inițializarea acestuia.
(15 puncte)

RĂSPUNS:

1. **Noțiuni preliminare:**
- Elemente de interfață includ bara de meniu, bara de instrumente, zona de lucru principală și panoul
de formatare.
- Tipuri de elemente în care se poate insera un tabel: într-o celulă a documentului sau într-un cadru
text.

2. **Două modalități de a insera un tabel:**


a. Prin meniul de inserare:
- Deschide meniul "Inserare".
- Selectează "Tabel" și alege dimensiunile dorite.

b. Prin bara de instrumente:


- Caută sau activează bara de instrumente "Tabel".
- Alege dimensiunile pentru noul tabel.

3. **Modalitate de a utiliza/aplica opțiunile de formatare:**


- Selectează tabelul sau elementul din structura tabelului.
- Accesează opțiunile de formatare din bara de instrumente sau meniul corespunzător.
- Exemplu: Pentru a adăuga o linie, selectează tabelul și utilizează opțiunea "Adaugă rând" din bara
de instrumente.

4. **Nouă opțiuni de personalizare a unui tabel/element din structura tabelului:**


a. **Dimensiuni:**
- Modificarea lățimii și înălțimii celulelor.
- Ajustarea dimensiunii totale a tabelului.

b. **Aspect:**
- Alegerea culorii de fundal pentru celule sau tabel.
- Modificarea stilului și grosimii liniilor tabelului.

c. **Aliniere:**
- Alinierea textului în interiorul celulelor (la stânga, la centru, la dreapta).
- Alinierea tabelului în cadrul documentului.

d. **Merge și Split:**
- Unirea sau separarea celulelor pentru a crea structuri mai complexe.

e. **Sortare:**
- Sortarea datelor în tabel în funcție de anumite criterii.

f. **Formate predefinite:**
- Aplicarea rapidă a unui format predefinit, cum ar fi "Tabel cu sâmburii alternanți".

g. **Adăugare de imagini sau link-uri:**


- Încorporarea de elemente multimedia în celulele tabelului.

Probă scrisă la informatică și tehnologia informației Varianta 3


Pagina 3/12
h. **Formatarea textului în celule:**
- Aplicarea diferitelor stiluri de text, cum ar fi bold sau italic.

i. **Adăugare de formule:**
- Utilizarea funcțiilor de calcul într-o celulă.

Probă scrisă la informatică și tehnologia informației Varianta 3


Pagina 4/12
SUBIECTUL al II-lea (30 de puncte)
1. Numim secvență de tip n-ouroboros într-un cuvânt o secvență formată din primele n litere
ale șirului (prefix) cu proprietatea că este egală cu secvența formată din ultimele n litere ale
acestuia (sufix), iar cele două secvențe nu se suprapun (total sau parțial) în cadrul cuvântului.
Subprogramul ouroboros are un singur parametru, s, prin care primeşte un șir de cel mult 102
caractere, litere mici ale alfabetului englez. Subprogramul returnează valoarea maximă a lui n,
pentru care șirul s admite o secvență de tip n-ouroboros.
Exemplu: pentru șirul arendare subprogramul returnează 3, pentru șirul arara subprogramul
returnează 1, iar pentru șirul arendari subprogramul returnează 0.
Un text are cel mult 100 de caractere, iar cuvintele sale sunt formate din litere mici și mari ale
alfabetului englez și sunt separate prin câte un spațiu.
Scrieți un program Pascal/C/C++ care citește de la tastatură un text de tipul precizat și determină cea
mai mare valoare nenulă a lui n pentru care în text există cuvinte cu secvențe de tip n-ouroboros, fără
a face distincţie între literele mici şi literele mari. Programul afișează pe ecran valoarea determinată
apoi, pe linia următoare, cuvintele corespunzătoare sau mesajul NU dacă nu există o astfel de valoare.
Cuvintele sunt afișate în ordinea în care apar în text și sunt separate prin câte un spațiu. Programul
cuprinde definiția completă a subprogramului precizat mai sus, precum și apeluri utile ale acestuia.
Exemplu: dacă se citește textul
contractele de arendare au etichete cu elementele ARARA sau ARamPaRa
atunci se afișează pe ecran
3
arendare elementele ARamPaRa (15 puncte)

RĂSPUNS:

Pentru a rezolva această problemă, vom împărți problema în două părți: implementarea
subprogramului `ouroboros` și apoi scrierea programului principal care utilizează acest subprogram.

#include <iostream>
#include <cstring>
#include <cctype>

using namespace std;

// Definirea subprogramului ouroboros


int ouroboros(const char *s) {
int maxN = 0; // Variabila pentru a stoca valoarea maximă a lui n

for (int n = 1; n < strlen(s); ++n) {


int i = 0;

// Verificăm dacă există o secvență de tip n-ouroboros


while (i + 2 * n < strlen(s)) {
bool isOuroboros = true;

for (int j = 0; j < n; ++j) {


if (s[i + j] != s[i + n + j]) {
isOuroboros = false;
break;
}
}

if (isOuroboros) {
maxN = max(maxN, n);
break; // Trecem la următoarea poziție în șir

Probă scrisă la informatică și tehnologia informației Varianta 3


Pagina 5/12
}

++i;
}
}

return maxN;
}

int main() {
char text[100];
cin.getline(text, 100);

int maxN = 0; // Variabila pentru a stoca valoarea maximă a lui n

char *token = strtok(text, " ");


while (token != NULL) {
// Ignorăm diferențele de litere mari/mici
for (int i = 0; i < strlen(token); ++i) {
token[i] = tolower(token[i]);
}

// Apelăm subprogramul ouroboros pentru fiecare cuvânt


int n = ouroboros(token);

// Actualizăm valoarea maximă a lui n


maxN = max(maxN, n);

token = strtok(NULL, " ");


}

// Afișăm rezultatele
cout << maxN << endl;

// Afișăm cuvintele cu secvențe de tip n-ouroboros


token = strtok(text, " ");
while (token != NULL) {
for (int i = 0; i < strlen(token); ++i) {
token[i] = tolower(token[i]);
}

if (ouroboros(token) == maxN) {
cout << token << " ";
}

token = strtok(NULL, " ");


}

if (maxN == 0) {
cout << "NU";
}

return 0;
}
```

Acest program citește un text de la tastatură, utilizează subprogramul `ouroboros` pentru a determina
cea mai mare valoare nenulă a lui n, și afișează apoi cuvintele corespunzătoare sau mesajul "NU"
dacă nu există o astfel de valoare.

Probă scrisă la informatică și tehnologia informației Varianta 3


Pagina 6/12
2. Fișierul titu2023.in conține un șir de cel mult 106 numere naturale distincte din intervalul
[1,109], separate prin câte un spațiu.
Se cere să se afișeze pe ecran mesajul DA, dacă se poate obține valoarea 2023 ca sumă de
termeni distincți ai șirului dat în fișier, sau mesajul NU în caz contrar. Utilizați un algoritm eficient
din punctul de vedere al timpului de executare.
Exemplu: dacă fișierul conține numerele 11 2000 6 20 3 sau numerele 1000 2023 30
se afișează pe ecran mesajul DA
iar dacă fișierul conține numerele 1000 10 3 se afișează pe ecran mesajul NU
Scrieți programul Pascal/C/C++ corespunzător cerinței și explicați în limbaj natural metoda de
rezolvare, justificând eficiența acesteia.
(15 puncte)

RĂSPUNS:

Pentru a rezolva această problemă, putem utiliza un algoritm eficient de căutare într-un set.

#include <iostream>
#include <fstream>
#include <unordered_set>

using namespace std;

int main() {
ifstream inputFile("titu2023.in");

if (!inputFile) {
cerr << "Nu am putut deschide fisierul." << endl;
return 1;
}

unordered_set<int> numbers;
int currentNumber;

// Citim numerele din fișier și le adăugăm într-un set


while (inputFile >> currentNumber) {
numbers.insert(currentNumber);
}

inputFile.close();

bool found = false;

// Parcurgem fiecare pereche de numere distincte pentru a verifica suma


for (auto it1 = numbers.begin(); it1 != numbers.end() && !found; ++it1) {
for (auto it2 = next(it1); it2 != numbers.end() && !found; ++it2) {
int sum = *it1 + *it2;

// Verificăm dacă valoarea necesară pentru suma 2023 există în set


if (numbers.find(2023 - sum) != numbers.end()) {
found = true;
}
}
}

// Afișăm rezultatul
if (found) {
cout << "DA" << endl;
} else {
cout << "NU" << endl;

Probă scrisă la informatică și tehnologia informației Varianta 3


Pagina 7/12
}

return 0;
}

Explicație a metodei de rezolvare:

1. **Citirea datelor:**
- Se deschide și se citește fișierul `titu2023.in`.
- Numerele din fișier sunt adăugate într-un set (`unordered_set`) pentru a elimina duplicatele și
pentru a eficientiza căutarea.

2. **Verificarea sumei:**
- Se parcurg toate perechile distincte de numere din set.
- Pentru fiecare pereche, se calculează suma și se verifică dacă valoarea necesară pentru a obține
suma 2023 există în set.

3. **Afișarea rezultatului:**
- Se afișează pe ecran mesajul "DA" dacă se găsește o pereche de numere cu suma 2023, altfel se
afișează "NU".

Eficiența algoritmului:

- Algoritmul are o complexitate de timp de O(N^2), unde N este numărul total de numere distincte din
fișier.
- Utilizarea unui set (implementat sub formă de tabel de dispersie) pentru stocarea numerelor permite
accesul rapid și eficient pentru a verifica existența unui număr în set.
- Algoritmul evită verificarea perechilor duplicate și utilizează un set pentru a evita duplicatele, ceea ce
contribuie la eficiența sa.

Probă scrisă la informatică și tehnologia informației Varianta 3


Pagina 8/12
SUBIECTUL al III-lea (30 de puncte)
Se consideră secvențele de mai jos, notate cu A și B, extrase din programele școlare de liceu
pentru disciplinele informatică și tehnologia informației și a comunicațiilor:
A:
Competențe specifice Conținuturi
1.3. Descrierea unor algoritmi simpli de Grafuri neorientate şi grafuri orientate
verificare a unor proprietăţi specifice grafurilor […]
1.4. Descrierea algoritmilor fundamentali de  Tipuri speciale de grafuri ([...] graf
prelucrare a grafurilor şi implementarea acestora hamiltonian […])
într-un limbaj de programare
(Programe școlare de INFORMATICĂ, OMECI nr. 5099/09.09.2009)
B:
Competenţe specifice Conţinuturi
1.1. Identificarea componentelor hard şi soft ale unui  Dispozitive de intrare
calculator personal
(Programe școlare de TEHNOLOGIA INFORMAȚIEI ȘI A COMUNICAȚIILOR, OMECI nr. 5099/09.09.2009)

1. Pentru secvența A, prezentați aspecte ale activității didactice de predare corespunzătoare, în


care utilizați exercițiul ca metodă didactică, având în vedere:
- precizarea a trei caracteristici ale metodei și a două tipuri de exerciții;
- exemplificarea utilizării metodei, precizând unele elemente ale proiectării didactice: un mijloc
de învățământ utilizat, o formă de organizare a clasei, o activitate de învățare și scenariul didactic
pentru aceasta, detaliind activitatea profesorului și activitatea elevilor, cu respectarea corectitudinii
științifice a informației de specialitate.
(15 puncte)

RĂSPUNS:

**Aspecte ale activității didactice de predare pentru secvența A:**

1. **Caracteristici ale Metodei:**


a. **Interactivitate:** Exercițiile permit interacțiunea activă între profesor și elevi, precum și între
elevi.
b. **Aplicabilitate practică:** Exercițiile sunt concepute pentru a aplica și practica conceptele
teoretice legate de algoritmi și grafuri.
c. **Progresie didactică:** Exercițiile pot fi structurate în ordine crescătoare de dificultate,
oferind elevilor o progresie adecvată în învățarea algoritmilor și grafurilor.

2. **Tipuri de Exerciții:**
a. **Exerciții de Verificare a Proprietăților Grafurilor:** Elevii pot fi solicitați să demonstreze sau
să verifice anumite proprietăți ale grafurilor, cum ar fi existența unui ciclu Hamiltonian.
b. **Exerciții de Implementare Practică:** Elevii pot fi încurajați să implementeze algoritmi
fundamentali pentru prelucrarea grafurilor într-un limbaj de programare.

3. **Exemplificare a Utilizării Metodei:**


a. **Mijloc de Învățământ Utilizat:** Tablă interactivă sau proiector pentru a prezenta
conceptele și exercițiile.
b. **Formă de Organizare a Clasei:** Activitate frontală, dar și lucrul în echipe pentru
rezolvarea exercițiilor practice.
c. **Activitate de Învățare:** Elevii vor începe cu o scurtă prezentare a noțiunilor teoretice
despre grafuri, apoi vor fi implicați în rezolvarea exercițiilor.
d. **Scenariul Didactic:**
- **Activitatea Profesorului:**
- Introducerea conceptelor de bază despre grafuri neorientate și orientate.
- Prezentarea tipurilor speciale de grafuri, cu accent pe grafurile hamiltoniene.
Probă scrisă la informatică și tehnologia informației Varianta 3
Pagina 9/12
- Explicarea algoritmilor fundamentali de prelucrare a grafurilor.
- Prezentarea exercițiilor pentru a verifica și a aplica aceste concepte.
- **Activitatea Elevilor:**
- Participarea activă la discuțiile despre noțiunile teoretice.
- Lucrul în echipă pentru rezolvarea exercițiilor practice.
- Prezentarea rezultatelor și discutarea soluțiilor în clasă.

Această abordare combină prezentarea teoretică cu activități practice și interacțiunea activă a


elevilor, promovând înțelegerea și aplicarea concretă a conceptelor din domeniul grafurilor în
informatică.

Probă scrisă la informatică și tehnologia informației Varianta 3


Pagina 10/12
2. Pentru secvența B elaborați un test și baremul de evaluare și de notare corespunzător acestuia,
test care să fie utilizat în cadrul unei probe scrise ca instrument de evaluare a competenţelor
specifice indicate pe baza conținuturilor corespunzătoare. Testul cuprinde enunțurile a trei itemi, iar
baremul de evaluare și de notare distribuie 90 de puncte, acordând 10 puncte din oficiu, și cuprinde,
pentru fiecare item, răspunsul așteptat, precum și criterii de evaluare și de notare analitică a
acestuia.
(15 puncte)

RĂSPUNS:

**Test Tehnologia Informației și a Comunicațiilor (TIC) - Secvența B**

**Itemul 1: (30 de puncte)**

1. **Enunț:**
Identificați și enumerați cel puțin cinci dispozitive de intrare ale unui calculator personal.

2. **Răspuns Așteptat:**
- Tastatură
- Mouse
- Cameră Web
- Microfon
- Scanner

3. **Criterii de Evaluare:**
- 6 puncte pentru fiecare dispozitiv de intrare identificat și enumerat corect, pentru un total de 30 de
puncte.

**Itemul 2: (30 de puncte)**

1. **Enunț:**
Explicați diferența dintre componentele hardware și software ale unui calculator personal.

2. **Răspuns Așteptat:**
- **Componente Hardware:** Sunt componentele fizice ale calculatorului, cum ar fi procesorul,
memoria RAM, hard disk-ul, placa de bază.
- **Componente Software:** Sunt programele și instrucțiunile de control care rulează pe calculator,
cum ar fi sistemul de operare, aplicațiile.

3. **Criterii de Evaluare:**
- 15 puncte pentru descrierea corectă a componentelor hardware.
- 15 puncte pentru descrierea corectă a componentelor software, pentru un total de 30 de puncte.

**Itemul 3: (30 de puncte)**

1. **Enunț:**
Alegeți un dispozitiv de intrare și explicați cum funcționează.

2. **Răspuns Așteptat (Exemplu: Mouse):**


- **Funcționare:** Mouse-ul detectează mișcarea prin intermediul senzorului. Informația este
transmisă la calculator, care interpretează mișcarea și o transformă în mișcare pe ecran.

3. **Criterii de Evaluare:**
- 15 puncte pentru alegerea și denumirea corectă a unui dispozitiv de intrare.
- 15 puncte pentru explicația corectă a modului de funcționare a dispozitivului ales, pentru un total de
30 de puncte.

Probă scrisă la informatică și tehnologia informației Varianta 3


Pagina 11/12
---

**Baremul de Evaluare și Notare:**

- **Total Puncte: 90**


- **Puncte din Oficiu: 10**

1. **Itemul 1:**
- Corectitudinea identificării și enumerării dispozitivelor de intrare: 30 puncte

2. **Itemul 2:**
- Corectitudinea descrierii componentelor hardware: 15 puncte
- Corectitudinea descrierii componentelor software: 15 puncte

3. **Itemul 3:**
- Corectitudinea alegerii și denumirii dispozitivului de intrare: 15 puncte
- Corectitudinea explicației funcționării dispozitivului ales: 15 puncte

Probă scrisă la informatică și tehnologia informației Varianta 3


Pagina 12/12

S-ar putea să vă placă și