Sunteți pe pagina 1din 3

REFERAT

BAZELE PROGRAMARII

Ioan Alexandru Godri


Grupa 1093
An I - ID

Operatii de Intrare / Iesire cu tastatura / monitorul


Tastatura si monitorul dispozitive asimilate fisierelor ASCII fac
posibile operatiile de intrare/iesire prin realizarea conversiei intre reprezentarea
interna si cea externa a datelor.
Scrierea (afisarea) pe monitor se face in 2 pasi: datele din memoria
principala se convertesc in format extern de reprezentare si sunt transferate intr-o
zona-tampon, unde, in faza a doua, sunt preluate si afisate pe ecran.
Citirea datelor se face tot in 2 pasi: se preiau datele de la tastatura, se depun
in zona-tampon in cod ASCII si in faza a doua se face preluarea lor, conversia in
format intern al datelor si depozitarea lor in memoria principala, in zonele
parametrilor functiilor de citire.
In Limbajul C nu sunt implementate instructiuni de intrare/iesire, acestea
realizandu-se prin apelarea unor functii de biblioteca. Cele mai utilizate sunt:
PRINTF, PUTS, PUTCH si macroul PUTCHAR.
Citirea datelor de la tastatura se poate realize cu functiile: SCANF, GETS,
GETCHE si cu macroul GETCHAR.
Functiile PRINTF si SCANF sunt functii de intrare.iesire cu format, trebuind sa
fie incluse, in programul sursa #include<stdio.h>
Exemplu:

descriptori de format

int a, b;
printf(nr1=% i; nr2=% i; a, b );
sir de caractere

-1-

Fiecarui descriptor de format trebuie sa-i corespunda, exact, un element din


lista de intrari/iesiri, formatele de intrari/iesiri (in/out) indeplinesc, simultan,
rolurile de sabloane si de parametrii. Rolul de sablon ale modului de reprezentare
extern al datelor, ofera un control mai bun al citirii/scrierii datelor, iar rolul de
parametru, ne indica modul de conversie. Forma generala a unui descriptor este:
%[cadraj][latime[.precizie]]cod_conversie

la care, cadrarea se face implicit la dreapta, modul de reprezentare extern fiind


ales automat de compilator, in functie de tipul datei.
Descrierea parametrilor:
- cadrajul datele se aliniaza la dreapta campului, implicit, doar prezenta
caracterului detremina alinierea de la stanga ;
- latimea este un numar, care, daca este mai mic decat valoarea explicita,
se completeaza cu caractere nesemnificative (de la stanga la dreapta),
aceste caractere putand fi spatii sau zero;
- precizia acuratetea datei scrise. Pentru o valoare reala, indica numarul de
zecimale afisate. Daca partea fractionara este mai mare ca precizia (in
caractere) se rotunjeste ultimul character (zecimala).
Pentru un sir de caractere, precizia va indica numarul maxim de caractere
ce se vor afisa, indiferent de lungimea acestuia.
- cod_conversie este format din 1-2 caractere si poate fi: d, i, o, u, x, f, e,
g, E, G, c, s l sau L si %, in functie de doruinta folosirii lui si a datelor.
Pentru citirea datelor de la tastatura, descriptorul de format poate contine si
parametrii optionali:
- latimea reprezentata printr-un numar, fiind latimea maxima a campului;
- asterisc se va citi de la tastaturavaloare respective, nefiind atribuita nici
unei variabile.
Functiile de scriere/citire cu format, PRINTF si SCANF sunt definite in
biblioteca stdio.h (Standard Input Ouput).
PRINTF transfera valori care se vor afisa, iar SCANF transfera adrese (ale
variabilelor) care se vor citi.
La PRINTF parametrii reali pot fi: variablie, constante, expresii sau apeluri de
functii, iar functia returneaza valori.
La SCANF parametrii reali trebuie sa fie adresele variabilelor care se citesc;
trebuie transmise explicit, folsind operatorul & care extrage adresa unei
variabile.
Functia PRINTF executa scrierea datelor pe monitor, returnand numarul de
caractere (in caz de succes) sau -1 (in caz de eroare), poate fi folosita pentru a
afisa unul sau mai multe valori, parametrul <sir descriptor> putand contine
caractere si descriptori care definesc conversiile aplicate obiectelor precizate.
Primul parametru al functiei are semnificatie prestabilita (sir de character
continand descriptori de format pentru datele care urmeaza a fi afisate) putanduse face si verificari asupra rezultatelor de afisare, suplimentar.
-2-

Formatul functiei PRINTF poate cuprinde si secvente escape, cum ar fi:


\n newline cursorul trece la inceputul liniei urmatoare;
\t orizontal TAB 8 spatii spre dreapta fata de pozitia curenta;
\a bell sunet standard;
\v vertical TAB 8 spatii (randuri) mai jos fata de pozitia curenta;
\b backspace se revine la o pozitie inapoi;
\r carriage return se revine la inceputul randului current.
Functia SCANF citeste datele de a tastatura si returneaza numarul de campuri,
putand contine in afara de cod_conversie si caractere introduce de la tastatura,
caractere albe (spatiu, TAB) fiind ignorate.
Campul controlat de un specificator de format, merge la primul caracter care nu
este alb si se termina la caracterul dupa care urmeaza un caracter alb sau un
caracter necorespunzator (litere in loc de cifre) sau la caracterul care ajunge la
lungimea maxima a campului. La citire, datele externe se pot separa prin spatiu,
TAB, CR/LF, virgule sau pot fi texte cu lungimea prestabilita, iar la descoperirea
unei erori, se intrerupe, aceasta fiind cauzata de neconcordantza intre textul
introdus si specificatorul de format sau intre data din camp si specificatorul de
format. Deoarece masivele (numele acestora) sunt pointeri, atunci cand este
posibila specificarea numelui, nu mai este nevoie de operatorul &.
Daca parametrul ia valori intre 32-127 se vor afisa caracterele tastaturii centrale,
afisabile si imprimabile, iar daca aceste valori sunt in intervalul 128-255 se vor
afisa caracterele grafice standard.
Daca parametrul are valoarea in afara intervalului 0-255 se va fisa caracterul
corespunzator interpretarii, ca valoare in virgule fiza aritmetica, a primului octet
(cel mai putin semnificativ).

-3-

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