Intrari
In C avem functia scanf care ne permite introducerea datelor de la tastatura.
#include <stdio.h> main() { int n; printf("Introduceti un numar :\n"); scanf("%d", &n); printf("Numarul introdus a fost %d\n", n); }
Functia scanf are doua argumente. Primul ("%d") specifica tipul de date care este asteptat (char, int, float). Cel de-al doilea argument specifica variabila in care valoarea citita va fi plasata. In cazul nostru numarul va fi plasat intr-o locatie de memorie asociata variabilei.
Astfel se explica prezenta caracterului & (care inseamna adresa lui..).
Un alt program pentru citirea a diferitelor tipuri.
#include < stdio.h > main() { int s; char c; float x; printf("n=");scanf("%d", &s ); printf("c=");scanf(" %c", &c ); printf("x=");scanf("%f", &x ); printf("\nVariabilele introduse sunt :"); printf("s = %d c = %c x = %f \n", s,c,x ); }
limbajul C nu are nici un fel de verificare a erorilor pentru introducerea datelor.Utilizatorul trebuie sa introduca tipul de date corect. De exemplu, daca un utilizatorintroduce un caracter cind se asteapta o valoare intreaga, atunci programul poate intraintr-un ciclu infinit.
programatorul trebuie sa valideze datele de intrare
Iesiri
In C avem functia printf care ne permite scrierea datelor la dispozitivul standard de iesire. Aceasta functie permite o multime de parametrii care formateaza output-ul:
% semn a . b f unde: % - semnifica inceperea unei specificatii de format semn - aliniere la stinga sau la dreapta a - dimensiunea cimpului (numarul de coloane pe care se reprezinta) .b - precizia de afisare (la numere reale) f - formatul specific
Exemplu
main() { float f; f=10.4588; printf("%8.1f%8.1f\n",12.5,525.73); printf("%-8.1f\n",12.5); printf("%f\n",f); printf("%5.2f\n",f); printf("%012f\n",f); printf("%-10f\n",f); }
getchar() Getchar citeste cite un caracter de la tastatura, iar putchar scrie un caracter.
#include <stdio.h> main() { int i; int c; for( i = 1; i<= 4; i++ ) { c = getchar(); putchar(c); } }
Forma instructiunii for este :
for ( conditie de start; conditie de continuare; re-evaluare ) instructiune;
#include <stdio.h> main() { int i; for( i = 1; i <= 10; i = i + 1 ) printf("%d ", i ); printf("\n"); }
Programul declara o variabila intreaga i. In prima parte a instructiunii for
for ( i = 1;
se initializeaza valoarea sa cu 1. Ciclul for continua cit timp conditia
i <= 10;
se evalueaza ca TRUE. Cum variabila i tocmai a fost initializata cu 1, aceasta conditie este adevarata si astfel
printf("%d ", i );
este executata. Urmeaza ceea ce a mai ramas din for
i = i + 1 );
Controlul se intoarce la testul conditional
i <= 10;
Cind i ia valoarea 11, testul conditional nu mai este satisfacut, astfel ca instructiunea for se termina iar controlul este transferat instructiunii urmatoare.
Suma primelor 200 numere naturale :
#include <stdio.h> main() { int n, s; s = 0; for ( n = 1; n <= 200; n = n + 1 ) s = s + n; printf("s= %d\n", s); }
Afisarea unor caractere de la 'A' la 'E':
#include <stdio.h> main() { char c; for ( c = 'A'; c <= 'E'; c = c + 1 ) { printf("%c ", c); } }
Forma instructiunii while este :
while (conditie) instructiune;
Atita timp cit conditie este indeplinita se executa instructiune. Instructiunea while mai este cunoscuta si sub numele de ciclare cu test initial. Bucla while este folosita atunci cind numarul de iteratii nu este cunoscut apriori.
void main() { int i=0; printf("Scrieti un text : \n"); while (getche()!='\r') i++; printf("Numarul de caractere este %d\n",i); }
Programul anterior numara caracterele unui text. Introducerea se incheie cu enter.
Un alt program calculeaza factorialul:
main() { long int n, fact; printf("n="); scanf("%ld",&n); fact=1; while (n>1) { fact*=n--; } printf("Factorialul este : %ld",fact); }
Forma instructiunii do..while este :
do instructiune; while (conditie);
Instructiunea este asemanatoare cu instructiunea while cu deosebirea ca, aici, testul se face la sfirsitul buclei. Bucla se va executa cel putin o data, chiar daca testul nu este indeplinit de la inceput.
Instructiunea if permite ramificarea in functie de valoarea unei variabile. Aceasta conduce la executarea sau evitarea unei instructiuni sau bloc de instructiuni. Formatul este
if ( expresie ) instructiune 1; else instructiune 2;
Urmatorul program utilizeaza un if :
#include <stdio.h> main() { int n; int valid = 0; while( valid == 0 ) { printf("Introduceti un numar intre 1 si 10"); scanf("%d", &n); valid = 1; if ( number <1 ) { printf("Numarul este mai mic ca 1\n"); valid = 0; } if ( number > 10 ) { printf("Numarul este mai mare ca 10.\n"); valid = 0; } printf("Este corect numarul %d -- %d\n", n,valid ); }
#include <stdio.h> main() { char c; printf("Introduceti un caracter -->");scanf(" %c", &c ); if ( c >= 'A' && c <= 'Z' ) printf("Caracterul este intre A si Z\n"); }
Instructiunea switch .. case este o modalitate mai buna de a scrie un program atunci cind apar o serie de if else. Sintaxa este,
switch ( expresie ) { case value1: instructiune 1; instructiune 2; ...... break; case valuen: instructiune k_1; ....... break; default: ....... ....... break; }
Cuvintul cheie break trebuie pus la sfirsitul fiecarei instructiuni case. Ramura default este optionala, si se executa atunci cind nici unul din celelalte cazuri nu a fost intilnit.
Reguli:
#include <stdio.h> main() { int m, n1, n2, k; printf("Introduceti doua numere -->"); scanf("%d %d", &n1, &n2 ); printf("Alegeti :\n"); printf("1=adunare\n"); printf("2=scadere\n"); scanf("%d", &m ); switch( m ) { case 1: k = n1 + n2; break; case 2: k = n1 - n2; break; default: printf("Selectia invalida!"); } if( m == 1 ) printf("%d + %d = %d\n", n1, n2, k ); else if( m == 2 ) printf("%d - %d = %d\n", n1, n2, k ); }
Programul anterior simuleaza un meniu simplu.
Operatorul conditional este format din trei operanzi. Primul operand se afla inaintea lui '?', al doilea intre '?' si ':', iar al treilea se afla dupa ':'. Formatul general este :
conditie ? expresie1 : expresie2;
Daca rezultatul conditiei este True atunci este evaluata expresie1 iar rezultatul ei devine rezultatul operatiei. Daca conditia este Falsa, atunci expresie2 este evaluata, valoarea rezultata fiind cea finala.
s = ( x < 0 ) ? -1 : x * x; Daca x este mai mic ca 0 atunci s=-1 Daca x este mai mare ca 0 atunci s = x * x
Un program exemplu:
#include <stdio.h> main() { int nr; printf("Numar="); scanf("%d", &nr); (nr < 0) ? printf("negativ\n") : ((nr > 0) ? printf("pozitiv\n") : printf("zero\n")); }