Metode evoluate de programare Limbajele c şi C++


Intrări / ieşiri standard



Yüklə 1,64 Mb.
səhifə8/44
tarix07.04.2018
ölçüsü1,64 Mb.
#46828
1   ...   4   5   6   7   8   9   10   11   ...   44

4. Intrări / ieşiri standard

Limbajul C nu posedă instrucţiuni de intrare / ieşire. Aceste operaţii se realizează prin apeluri de funcţii din bibliotecile standard ale mediului de programare. De obicei astfel de funcţii asigură interfaţa programului cu terminalul de la care s-a lansat, cu imprimanta, etc. Se numesc intrări standard şi ieşiri standard intrările respectiv ieşirile de la terminalul de la care s-a lansat programul. Totodată se presupune că datele de intrare / ieşire sunt organizate în fişiere.

Unui program C i se ataşează în mod implicit următoarele fişiere:
- stdin intrare standard;

- stdout ieşire standard;

- stderr ieşire standard pentru erori;

- stdprn ieşire pe imprimantă;

- stdaux intrare / ieşire serială.


4.1. Funcţia standard printf

Funcţia printf realizează ieşiri cu format la ieşirea standard stdout, deci afişare la terminalul la care care s-a lansat programul. Funcţia printf se apelează printr-o instrucţiune cu formatul:


int printf (control, lista_expresii);
unde control este un şir de caractere care conţine:

  1. texte de scris;

  2. specificatori de format pentru datele care se scriu din lista_expresii.

lista_expresii conţine expresii; valoarea fiecărei expresii se scrie conform unui specificator de format corespondent din parametrul control.

Parametrul control este inclus între ghilimele, iar numărul specificatorilor de format coincide cu numărul expresiilor din lista_expresii. Dacă dorim să scriem numai un text atunci parametrul de control nu conţine nici un specificator de format iar lista_expresii este vidă (practic este absentă).

Un specificator de format are formatul BNF următor:
%[-][d..d][.d..d][l1]l2
După cum se observă un specificator de format începe întotdeauna cu caracterul procent (“%”). După acest caracter poate urma una din construcţiile următoare:

- un caracter “-“ opţional; prezenţa acestui caracter indică cadrarea la stânga a datei în câmpul în care se scrie (implicit data se scrie cadrată la dreapta);

-un şir de cifre zecimale opţional, care defineşte lungimea minimă a câmpului în care se scrie data corespunzătoare din lista_expresii; data se scrie astfel:



  1. în cazul în care necesită o lungime mai mică se scrie cadrată la dreapta sau stânga (în funcţie de absenţa sau prezenţa semnului “-“)

  2. în cazul în care necesită o lungime mai mare se va scrie pe atâtea poziţii câte îi sunt necesare;

-un punct urmat de un şir de cifre zecimale (după cum se observă opţional); acest element indică precizia datei care se scrie:

  1. dacă data se scrie în virgulă flotantă, precizia defineşte numărul de cifre aflate după marca zecimală (deci câte zecimale);

  2. dacă data este un şir de caractere atunci indică câte caractere se scriu.

-una sau două litere, care definesc tipul de conversie din formatul intern în formatul extern:

  1. prima litera poate fi “l”, ceea ce semnifică conversia din formatul intern long în formatul extern definit de specificator;

  2. a doua literă este obligatorie întotdeauna şi are semnificaţiile de mai jos:

litera tipul de conversie realizat


d - din int intern în zecimal extern

o - din int intern în octal extern

x - din int intern în hexazecimal extern (litere mici pentru cifrele mai mari ca 9 deci a,b,c,d,e,f,)

X - din int intern în hexazecimal extern (litere mici pentru cifrele mai mari ca 9 deci A,B,C,D,E,F)

u - din unsigned intern în zecimal extern fără semn

c - din binar intern (cod ASCII) în caracterul corespunzător

s - din şir de coduri ASCII într-un şir de caractere (atenţie

ultimul cod este NUL (adică ‘\0’)

f - din float sau double intern în d...d.d...d (implicit 6 cifre

zecimale la partea fracţionară dacă nu e prezentă precizia)

e - din float sau double intern în d.d...de±ddd (implicit 6

cifre zecimale la partea fracţionară dacă nu e prezentă

precizia)

E - din float sau double intern în d.d...dE±ddd (implicit 6

cifre zecimale la partea fracţionară dacă nu e prezentă

precizia)

g - se aplică una din conversiile definite de literele f şi e

alegându-se aceea care are un număr minim de poziţii

G - se aplică una din conversiile definite de literele f şi E

alegându-se aceea care are un număr minim de poziţii


Literele d, o, x, u pot fi precedate de litera l conversia realizându-se din formatul intern long în loc de int.
Observaţie.

1o. Dacă caracterul % nu este urmat de una din construcţiile de mai sus atunci nu reprezintă un specificator de format.

Funcţia printf întoarce lungimea totală în octeţi a datelor scrise la terminal sau valoarea simbolică EOF în caz de eroare. Precizăm că EOF este definită în fişierul header stdio.h astfel:

#define EOF –1.
Totodată funcţia printf poate fi testată şi astfel:

EOF = = printf (control, lista_expresii)


Dacă are valoarea adevărat atunci la scrierea datelor s-a produs o eroare.

Exemple:


1)

#include

#include

void main(void)

{ int i=10; long j=11;

float a=1.2, b=1.3;

double A=1.4; B=1.5;

clrscr(); // inceputul instructiunilor executabile; se sterge ecranul

printf ("\ni*j = %d",i*j); // incep afisarile

printf ("\ni*j = %5d",i*j);

printf ("\ni*j = %-5d",i*j);

printf ("\ni*j = %5.5d",i*j);

printf ("\ni*j = %05d",i*j);

printf ("\na*b = %10.1f",a*b);

printf ("\nA*B = %10.5lf",A*B);

printf ("\nradical(a*b) = %lf",sqrt((double) a*b));

printf ("\nradical(A*B) = %15.10lf",sqrt(A*B));

printf ("\nradical(A*B) = %25.17lf",sqrt(A*B));

printf ("\nradical(A*B) = %25.19lf",sqrt(A*B));

getche(); // asteapta citirea unui caracter de la terminal

}
Rezultatele execuţiei programului sunt:

i*j = 110

i*j = 110

i*j = 110

i*j = 00110

i*j = 00110

a*b = 1.6

A*B = 2.10000

radical(a*b) = 1.249000

radical(A*B) = 1.4491376746

radical(A*B) = 1.44913767461894372

radical(A*B) = 1.4491376746189437200


2)

#define sir “PC WORLD”

void main (void)

{ printf(“*%10s*“,sir);

printf(“*%-10s*“,sir);

printf(“*%10.5s*“,sir);

printf(“*%-10.5s*“,sir);

}
Rezultatele execuţiei programului sunt:

* PC WORLD*

*PC WORLD *

* PC WO*

*PC WO *




Yüklə 1,64 Mb.

Dostları ilə paylaş:
1   ...   4   5   6   7   8   9   10   11   ...   44




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©muhaz.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin