Scrigroup - Documente si articole

     

HomeDocumenteUploadResurseAlte limbi doc
AccessAdobe photoshopAlgoritmiAutocadBaze de dateCC sharp
CalculatoareCorel drawDot netExcelFox proFrontpageHardware
HtmlInternetJavaLinuxMatlabMs dosPascal
PhpPower pointRetele calculatoareSqlTutorialsWebdesignWindows
WordXml


INSTRUCTIUNEA DE ATRIBUIRE. OPERATORI ARITMETICI: scanf, printf

c



+ Font mai mare | - Font mai mic



INSTRUCTIUNEA DE ATRIBUIRE. OPERATORI ARITMETICI

1. SCOPUL LUCRARII

In aceasta lucrare se vor studia urmatoarele:



-Functii de citire / scriere:

-Instructiunea de atribuire

-Operatori aritmetici

2. BREVIAR TEORETIC

2.1. Functii de citire / scriere

Orice program are anumite date de intrare, pe care le prelucreaza si in final afiseaza rezultatul. Datele de intrare, cat si rezultatele partiale si finale, sunt stocate (memorate) in variabile.

Datele de intrare ale programului pot fi:

- citite de la tastatura (tastatura este principala sursa de date de intrare)

- initializate direct prin instructiunea de atribuire

- initializate cu numere generate aleator

- citite dintr-un fisier de pe disc

- receptionate dintr-un port de intrare al calculatorului (de exemplu de pe portul serial sau paralel al PC-ului)

Astfel, functia scanf() este folosita pentru a citi date de la tastatura sub controlul unui format de citire. Datele citite sunt memorate in variabilele specificate prin argumentele functiei.

Modul de utilizare tipic:

scanf(sirul de formate, adresele variabilelor in care se citesc datele);

Formatele de citire cele mai folosite sunt:

%d pentru tipul de date int

%c pentru tipul de date char

%lf pentru tipul de date double (Atentie: este lf si nu 1f)

Exemplu:

Pentru a citi un numar intreg de la tastatura pe care sa-l memoram in variabila numar, se foloseste secventa de program:

int numar;

scanf('%d",&numar);

Exemplu:

Pentru a citi de la tastatura, folosind o singura instructiune scanf(), 4 valori numerice, si anume: doua numere intregi, un caracter si un numar real, se foloseste secventa de program:

int i1,i2;

char c; double r;

scanf("%d%d%c%lf",&i1,&i2,&c,&r);

Datele de citit, se tasteaza separate prin caracterele: spatiu (blank) sau TAB sau ENTER.

Pentru a citi date de tip caracter se poate folosi si instructiunea getch(). Aceasta functie returneaza codul ASCII al tastei apasate.

Exemplu:

int c=getch();

Folosind functia getch(), caracterului tastat nu i se face ecou pe ecran. Pentru a i se face ecou, se foloseste o varianta a acestei functii, si anume functia getche().

Atat functia getch(), cat si functia scanf(), asteapta pana cand utilizatorul tasteaza datele.

Pentru a detecta daca s-a apasat sau nu o tasta, fara a astepta apasarea efectiva, se foloseste functia kbhit(). Aceasta functie nu are nici un parametru. Ea intoarce ca rezultat, valoarea 0, daca nu a fost apasata nici o tasta, si o valoare diferita de 0, daca a fost apasata o tasta. Functia kbhit(), examineaza bufferul tastaturii in care sunt automat stocate caracterele tastate. Daca nu este nici un caracter prezent, intoarce drept rezultat valoarea 0. Functia kbhit() nu asteapta apasarea unei taste, programul continuand cu urmatoarea instructiune din program.

Exemplu:

int este=kbhit();

Pentru a afisa date pe monitor, in modul text, se foloseste functia printf(). Ea afiseaza texte si eventual, continutul unor variabile, sub controlul unor formate de afisare, incepand de la pozitia curenta a cursorului. In cazul textului, pot aparea anumite caractere speciale, ce nu sunt afisate ca atare, denumite secvente escape.

Caractere speciale uzual folosite in textul de afisat sunt:

n - are rolul de a muta cursorul la inceputul liniei urmatoare

t - are rolul de a avansa cursorul cu un TAB.

- afiseaza caracterul

" - afiseaza caracterul "

Exemplu:

printf('Numele directorului curent este:    C:TURBO');

Pentru a afisa, pe langa texte, si continutul unor variabile, sintaxa, in cazul general, este urmatoarea:

printf('Sirul de texte si formate',lista de variabile);

Cele mai utilizate formate de afisare, sunt urmatoarele:

%d pentru variabile de tipul int

%c pentru variabile de tipul char

%lf pentru variabile de tipul double. (Atentie: este lf si nu 1f)

%f pentru variabile de tipul float

Exemplu:

printf('x=%d,y=%d',x,y);

2.2. Instructiunea de atribuire

Valoarea depozitata intr-o locatie de memorie, poate fi schimbata printr-o operatie de atribuire. Ca operator de atribuire, in limbajul C, se foloseste semnul egal.

Sintaxa operatiei de atribuire este urmatoarea:

nume_variabila = expresie ;

Exemplu:

x=2.5;

Se citeste: x "primeste" valoarea 2.5.

In urma acestei operatii, in variabila x se memoreaza valoarea 2.5 . Variabila x trebuie declarata de tipul real (float sau double).

Exemplu:

x=x+1;

Se citeste: x "primeste" vechea valoare a lui x crescuta cu 1.

Aceasta operatie de crestere a continutului unei variabile cu o unitate, se cheama incrementare. Incrementarea fiind o operatie des intalnita in programe, in limbajul C exista un operator special ce o realizeaza: operatorul ++ . Acesta este un operator unar si el poate fi plasat fie la stanga, fie la dreapta unui operand. Actiunea lui va fi diferita insa, depinzand de pozitia lui (in stanga sau in dreapta operandului).

Exemplu:

int x,y;

x=7;

y=x++;

Operatorul ++, in acest exemplu, este plasat la dreapta unui operand: intai se va face operatia de atribuire (y=x) si apoi se va face incrementarea variabilei x (x=x+1). Astfel, in final se va obtine y=7 si x=8.

Exemplu:

int x,y;

x=7;

y=++x;

Operatorul ++, in acest exemplu, este plasat la stanga unui operand: intai se va face incrementarea variabilei x (x=x+1) si apoi se va face operatia de atribuire (y=x). Astfel, in final se va obtine y=8 si x=8.

Pentru decrementarea unei variabile (scaderea valorii variabilei cu o unitate ), exista in limbajul C un operator special: operatorul -- . Acest operator se foloseste la fel ca operatorul de incrementare.

2.3 Operatori aritmetici

Sunt 5 operatori aritmetici de baza, si anume:

+ adunare

- scadere

* inmultire

/ impartire

% restul impartirii ( modulo)

Operatorul de impartire / , in cazul numerelor intregi, calculeaza trunchind rezultatul exact.

Astfel 7 / 2 este evaluat ca 3 si nu ca 3.5



Toti acesti operatori sunt operatori binari ( adica cu operanzi si in stanga si in dreapta).

Operatorul % poate avea drept operanzi doar numere intregi.

Operatorii aritmetici, au prioritatile cunoscute de la aritmetica. Astfel, in expresia a+b*c intai se calculeaza produsul si apoi suma.

Observatie importanta:

Deoarece limbajul C are foarte multi operatori, a caror prioritate nu mai este chiar asa de evidenta ca la cei aritmetici, se recomanda, atat pentru claritatea programului, cat si pentru evitarea greselilor, folosirea parantezelor. Totdeauna operatiile cuprinse intre paranteze se executa primele.

3. DESFASURAREA LUCRARII

Se vor edita si apoi executa programele descrise in continuare.

Programul nr. 1

Sa se afiseze urmatorul text, citat din Biblie:

'Cautati mai intai Imparatia lui Dumnezeu !'

Se vor afisa inclusiv ghilimelele.

Sursa programului:

#include<stdio.h>

#include<conio.h>

void main(void)

Programul nr. 2

Sa se comute continutul a doua variabile a si b, intre ele.

Algoritm:

-se salveaza in variabila auxiliara aux, variabila a

-se copiaza in a variabila b

-se copiaza in b variabila aux

Greseli frecvente:

-Nu se foloseste o variabila auxiliara, ci se face comutarea direct:     a=b si apoi b=a.

Sursa programului:

#include <stdio.h>

#include <conio.h>

void main()

Programul nr. 3

Calculul mediei aritmetice a 3 numere intregi, citite de la tastatura.

Algoritm:

- se calculeaza suma numerelor, si rezultatul se imparte la 3.

Greseli frecvente:

- se declara variabila medie, de tip intreg

- se calculeaza medie=(a+b+c)/3 , ceea ce este gresit caci rezultatul

se trunchiaza la intreg.

Sursa programului:

#include <stdio.h>

#include <conio.h>

void main()

Programul nr. 4

Se citesc trei numere intregi a, b si c de la tastatura, coeficienti ai polinomului de gradul doi P(x)=ax2+bx+c. Sa se calculeze si afiseze valoarea polinomului pentru o valoare particulara intreaga x, citita de la tastatura.

Sursa programului:

# include <conio.h>

# include <stdio.h>

void main (void)

Programul nr. 5

Se citeste un numar intreg de la tastatura. Acest numar are semnificatia unui interval de secunde. Sa se afiseze intervalul in ore, minute si secunde.

Exemplu:

Daca numarul citit este 61, trebuie sa se afiseze:

Nr. Ore = 0; Nr. Minute = 1; Nr. Secunde = 1

Sursa programului:

#include <stdio.h>

void main(void)

Programul nr. 6

Se citeste un numar intreg, pozitiv, de la tastatura. Sa se calculeze cifra unitatilor,    cifra zecilor si cifra sutelor.

Algoritm:

- cifra unitatilor este restul impartirii numarului la 10

- pentru calcul cifrei zecilor, se imparte numarul initial la 10. In noul numar obtinut, vechea cifra a zecilor a devenit cifra unitatilor. Aceasta se afla ca restul impartirii noului numar la 10.

- cifra sutelor se obtine dupa acelasi algoritm ca si cifra zecilor.

Greseli frecvente:

- se imparte direct numarul la 10, pentru a afla cifra zecilor

- se imparte direct numarul la 100, pentru a afla cifra sutelor

Sursa programului:

#include <stdio.h>

#include <conio.h>

void main()

Programul nr. 7

Se citeste un numar natural de la tastatura, care consta din cel putin doua cifre. Sa se calculeze noul numar obtinut prin comutarea cifrei unitatilor cu cifra zecilor. Exemplu:

Pentru numarul initial 4532, dupa comutare se obtine 4523.

Sursa programului:

# include <stdio.h>

void main (void)

Programul nr. 8

Se citesc doua numere naturale a si b, capetele unui interval inchis. Sa se genereze un numar aleatoriu in intervalul [a, b]. Sa se afiseze acest numar.

Sursa programului:

#include<stdio.h>

#include<stdlib.h>

void main(void)

4. PROBLEME PROPUSE

1.Sa se afiseze un dreptunghi ale carui linii sunt formate din stelute (caracterul *)

2. Se citeste un numar natural care are cel putin trei cifre. Sa se calculeze noul numar obtinut prin comutarea cifrei unitatilor cu cifra sutelor.

3. Sa se genereze si afiseze trei numere intregi, aleatoare in intervalul inchis [10,100].




Politica de confidentialitate | Termeni si conditii de utilizare



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 1117
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved