Sunteți pe pagina 1din 15

ACTIVITĂȚI 4

ELEMETELE LIMBAJELOR C#.


CLASE CREATE DE UTILIZATOR

1. Aria cercului – metoda 1


2. Aria cercului – metoda 2
3. Duritatea Brinell

1. Operatori binari
2. Metodele Write(…), WriteLine(…) cu specificatori de
format
3. Versiunea C++

1. Poligoane regulate
2. Arii și greutăți
3. Suprafața anvelopei

Consultați Cursul 04.

1
Notițe ELEMENTELE LIMBAJELOR C/C++ ACTIVITĂȚI 4

Aria cercului – metoda 1

a) Scrieţi un program care determină aria unui cerc prin apelul unei
4_1 metode, definită de utilizator în clasa program principal class
Program.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace c04
{
class Program
{

//definirea metodei
static double AriaCerc(float R) //antetul functiei aCerc
{
double S;
S = 3.14159 * R * R; //calculeaza aria in variabila S
return S; //returneaza valoarea calculata
}

static void Main(string[] args)


{
string sir;
float raza;
double aria; //variabilele aria, raza
Console.WriteLine("\nARIA CERCULUI\n"); //afiseaza
titlu
Console.WriteLine("\nIntroduceti raza R = ");

sir = Console.ReadLine();
raza = float.Parse(sir);

aria = AriaCerc(raza); //apelul functiei aCerc(raza)

Console.WriteLine("\nAria cercului de raza {0} este


{1}.\n\n", raza, aria); //afiseaza rezultat

}
}

2
ACTIVITĂȚI 4 ELEMENTELE LIMBAJELOR C/C++ Notițe

b) Pentru punctul zecimal, la introducerea valorii razei, este valid caracterul ”.” sau
caracterul ”,” ?

c) Știind că raza se introduce în ” (inchi), afișați aria în inchi2 și în m2.

d) Modificați programul pentru a calcula și afișa și lungimea cercului.

e) Adăugați linia de program prin care programul afișează un titlu sugestiv la


începutul execuției. Introduceți comentariile informative la început de program
sursa. Adăugați programul la Portofoliul de programe.

Aria cercului – metoda 2

a) Scrieţi un program care determină aria unui cerc prin apelul metodelor
4_2 unei clase definită de utilizator class Cerc{…}, în afara clasei
program principal class Program.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ae4_1
{
class Program
{
static void Main(string[] args)
{

Console.WriteLine("ARIA CERCULUI\n"); //titlul

Cerc c = new Cerc(); //creare obiect c de tip


(clasa) Cerc

//apeluri metode obiect c


c.valInitiala();
c.outDate();

c.inDate();
c.outDate();

Console.Write("\nApasati orice tasta pentru a


termina...");
Console.ReadKey();
}
}

3
Notițe ELEMENTELE LIMBAJELOR C/C++ ACTIVITĂȚI 4

class Cerc
{
// Membrii clasei (obiectului)
// campuri (variabile)
double raza;

//metode (functii)
public void valInitiala()
{
raza = 1.0;
}

public void inDate() // date de intrare


{
string sir;
Console.Write("\nIntroduceti Raza: ");
sir = Console.ReadLine();
raza = double.Parse(sir);
}

public double calcAria() // calculeaza si retuneaza aria


{
return Math.PI * raza * raza;
}

public void outDate() // date de iesire


{
Console.WriteLine("Pentru cercul de Raza: {0}", raza);
Console.WriteLine("\tAria = {0}.", calcAria());
}
}

b) Identificați elementele clasei class Cerc{…}. Explicați linia de program Cerc c


= new Cerc();

c) Înlocuiți valoarea constantei Math.PI cu o constantă simbolică pi definită cu


declarația const float pi = 3.14f;.

d) Modificați programul pentru a calcula și afișa ariile folosind cele două valori
pentru constanta pi, precum și diferența dintre ariile (eroarea). Tipăriți
rezultatele prin numere reale cu fix trei zecimale.

e) Adăugați linia de program prin care programul afișează un titlu sugestiv la


începutul execuției. Introduceți comentariile informative la început de program
sursa. Adăugați programul la Portofoliul de programe.

4
ACTIVITĂȚI 4 ELEMENTELE LIMBAJELOR C/C++ Notițe

Duritatea Brinell

Introduceți și executați acest program. Programul calculează duritatea


4_3 Brinell dacă se cunoaște diametrul d măsurat al amprentei bilei de
diametru D=10 mm, lasată pe proba de material metalic, dacă este
apăsată T=15 secunde cu o forță de F=3000 N.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ae4_2
{
// I. Clasa Program principal
class Program
{
static void Main(string[] args)
{
Console.WriteLine("DURITATEA MATERIALELOR\n"); //titlul

Brinell b = new Brinell(); //creare obiect b de tip


(clasa) Brinell

//apeluri metode obiect b


b.inDate();
b.outDate();

Console.Write("\nApasati orice tasta pentru a


termina...");
Console.ReadKey();

}
}
// II. Clase definite de utilizator
class Brinell
{
// Membrii clasei (obiectului)
// campuri (variabile)
const int D = 10, F = 3000, T = 15;
double d;

// metode (functii)
public void inDate() // date de intrare
{
string sir;
Console.Write("\nIntroduceti diametrul amprentei d: ");
sir = Console.ReadLine();
d = double.Parse(sir);
}

5
Notițe ELEMENTELE LIMBAJELOR C/C++ ACTIVITĂȚI 4

public void outDate() // date de iesire


{
Console.WriteLine("Duritatea Brinell este: {0}",
hbDuritate(d));

public double hbDuritate(double d) // calculeaza si


retuneaza duritatea
{
return 0.102 * (2 * F) / (Math.PI * D * (D -
Math.Sqrt(D * D - d * d)));
}
}

a) Explicați funcționarea în execuție a programului, identificați clasele, variabilele,


metodele, tipul acestora și relațiile de calcul utilizate.
Care este formula de calcul a durității Brinell ?

b) Ce este Sqrt(D*D-d*d) ? În ce bibliotecă se găsește ?

c) Care sunt secțiunile unui program sursă C#?

d) Completați programul pentru calcularea durităților prin metodele Vickers,


Rockwell, Poldy. (documentați formulele utilizând căutări pe Internet!).

e) Introduceți comentariile informative la început de program sursa. Adăugați


programul la Portofoliul de programe.

Operatori binari

4_1 a) Introduceți și executați următorul program.

using System;
namespace OperatoriBinari
{
class Program
{

6
ACTIVITĂȚI 4 ELEMENTELE LIMBAJELOR C/C++ Notițe

static void Main(string[] args)


{
int a = 60; /* 60 = 0011 1100 */
int b = 13; /* 13 = 0000 1101 */
int c = 0;

Console.WriteLine("a = {0} = {1}", a,


GetIntBinaryString(a));
Console.WriteLine("b = {0} = {1}\n", b,
GetIntBinaryString(b));

c = a & b; /* 12 = 0000 1100 */


Console.WriteLine("a & b = {0} = {1}", c,
GetIntBinaryString(c));

c = a | b; /* 61 = 0011 1101 */
Console.WriteLine("a | b = {0} = {1}", c,
GetIntBinaryString(c));

c = a ^ b; /* 49 = 0011 0001 */
Console.WriteLine("a ^ b = {0} = {1}", c,
GetIntBinaryString(c));

c = ~a; /*-61 = 1100 0011 */


Console.WriteLine(" ~a = {0} = {1}", c,
GetIntBinaryString(c));

c = a << 2; /* 240 = 1111 0000 */


Console.WriteLine("a << 2 = {0} = {1}", c,
GetIntBinaryString(c));

c = a >> 2; /* 15 = 0000 1111 */


Console.WriteLine("a >> 2 = {0} = {1}", c,
GetIntBinaryString(c));
Console.ReadKey();
}

static string GetIntBinaryString(int n)


{
char[] b = new char[32];
int pos = 31;
int i = 0;

while (i < 32)


{
if ((n & (1 << i)) != 0)
{
b[pos] = '1';
}
else
{

7
Notițe ELEMENTELE LIMBAJELOR C/C++ ACTIVITĂȚI 4

b[pos] = '0';
}
pos--;
i++;
}
return new string(b);
}

}
}

b) Identificați operatorii binari, observați/verificați efectul acestora asupra


variabilelor int.

c) Metoda static string GetIntBinaryString(int n) afișează formatul


binar argumentului. Care sunt tiprile parametrilor și al valorii întoarse la apel ai
metodei ?

d) Încercați să explicați, cu ajutorul profesorului, funcționarea instrucțiunilor while


și if - else !

e) Cum se evaluează expresia ((n & (1 << i)) != 0) ?

f) Adăugați linia de program prin care programul afișează un titlu sugestiv la


începutul execuției. Introduceți comentariile informative la început de program
sursa. Adăugați programul la Portofoliul de programe.

Metodele Write(…), WriteLine(…) cu specificatori de format

4_2 a) Introduceți și executați următorul program.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace as4_1
{
class Program
{
static void Main(string[] args)
{
// int a,b,c;
float x, y; // declaratie variabile de tip float
x = 1.0f;
y = 2.0f;

8
ACTIVITĂȚI 4 ELEMENTELE LIMBAJELOR C/C++ Notițe

sbyte sb = 120; /* short byte */


byte b = 120; /* byte */
short sa = -98; /* intreg scurt */
ushort usa = 201; /* intreg scurt fara semn*/
int a = -2012; /* intreg simplu */
uint ua = 201; /* intreg simplu fara semn */
long lb = 9999; /* intreg lung */
ulong ulb = 9999999999999; /* intreg lung */

char e = 'A'; /* caracter simplu */


string sir = "Imi place programarea!"; /* Constanta
sir caractere */

float f = 3.14159f; /* numar zecimal in simpla


precizie*/
double g = 3.1415926535898; /* numar zecimal in dubla
precizie*/
decimal dg = 3.1415926535898m; /* numar zecimal in
precizie decimal*/

Console.WriteLine("\nAfisare numere intregi");


Console.WriteLine("a = {0:d}", a); /* afisare folosind
baza 10 de numeratie */
Console.WriteLine("a = {0:x}", a); /* afisare folosind
baza 16 de numeratie */

Console.WriteLine("{0:d} , tip sbyte \t{0:d} bytes.",


sb, sizeof(sbyte)); /* bytes */
Console.WriteLine("{0:d} , tip byte \t{1:d} bytes.", b,
sizeof(byte)); /* bytes */
Console.WriteLine("{0:d} , tip short int \t{1:d}
bytes.",sa, sizeof(short)); /* bytes */
Console.WriteLine("{0:d} , tip ushort int \t{1:d}
bytes.", usa, sizeof(ushort)); /* bytes */
Console.WriteLine("{0:d} , tip int \t{1:d} bytes.", a,
sizeof(int)); /* bytes */
Console.WriteLine("{0:d} , tip int \t{1:d} bytes.", ua,
sizeof(uint)); /* bytes */
Console.WriteLine("{0:d} , tip long \t{1:d} bytes.",
lb, sizeof(long)); /* bytes */
Console.WriteLine("{0:d} , tip ulong \t{1:d} bytes.",
ulb, sizeof(ulong)); /* bytes */

Console.WriteLine("\nAfisare numere reale");


Console.WriteLine("float \t{0:d}", sizeof(float));
/* bytes */
Console.WriteLine("double \t{0:d}", sizeof(double));
/* bytes */
Console.WriteLine("decimal \t{0:d}", sizeof(decimal));

9
Notițe ELEMENTELE LIMBAJELOR C/C++ ACTIVITĂȚI 4

/* bytes */
Console.WriteLine("bool \t{0:d}", sizeof(bool));
/* bytes */

Console.WriteLine("\nAfisare caractre, siruri");


Console.WriteLine("char \t{0:d}", sizeof(char)); /*
bytes */

//Console.WriteLine("char \t{0:d}", sizeof(void));


/* bytes */
//Console.WriteLine("object \t{0:x}", sizeof(object));
/* bytes */

/*
Console.WriteLine("\nAfisare date de tip pointer");
unsafe
{
int var = 20;
int* p = &var;

Console.WriteLine("Data is: {0} ", var);


Console.WriteLine("Data is: {0:d} ", p-
>ToString());
Console.WriteLine("Address is: {0:x} ", (int)p);
Console.WriteLine("Bytes: {0:d} ", sizeof(int*));
}
*/
Console.ReadKey();

}
}
}

b) Observați efectul utilizării identificatorilor de format la afișarea diferitele tipuri


de date simple.

c) Adăugați linia de program prin care programul afișează un titlu sugestiv la


începutul execuției. Introduceți comentariile informative la început de program
sursa. Adăugați programul la Portofoliul de programe.

10
ACTIVITĂȚI 4 ELEMENTELE LIMBAJELOR C/C++ Notițe

Versiunea C++

Funcțiile scanf() și printf(). Specificatori de format

4_3 a) Observați diferențele de format între C# și C++.

/*
Tipuri simple de date. Functiile printf(), scanf(). Identificatori
de format. Secvente de control
*/
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>

void main()
{
int a; /* intreg simplu */
long int b; /* intreg lung */
short int c; /* intreg scurt */
unsigned int d; /* intreg fara semn */
char e; /* caracter simplu */
float f ; /* numar zecimal in simpla precizie*/
double g; /* numar zecimal in duba precizie */
char sir[]="Imi place programarea!";
/* Constanta sir caractere */
a = 2012;
b = 9999; c = -199; d = 1234; e = 'A';
f = 3.14159;
g = 3.1415926535898;

printf("\nTipuri de date. Identificatori de format\n");


printf("\n----------------------------------------\n");

printf("\n\nNumere intregi\n");
printf("a = %d\n",a);
/* afisare folosind baza 10 de numeratie */

11
Notițe ELEMENTELE LIMBAJELOR C/C++ ACTIVITĂȚI 4

printf("a = %o\n",a);
/* afisare folosind baza 8 de numeratie */
printf("a = %x\n",a);
/* afisare folosind baza 16 de numeratie */
printf(" \n"); /* salt la line noua */
printf("b = %ld\n",b);
/* afisare specifica pentru intreg lung */
printf("c = %d\n",c);
/* afisare specifica pentru intreg scurt */
printf("uc= %u\n",c);
/* afisare specifica pentru intreg fara semn */
printf("d = %u\n",d);
/* afisare specifica pentru intreg fara semn */
printf("d = %.6d\n",d);
/* afisare pentru intreg pe 6 pozitii - justified */
printf("a = %7d\n",a);
/* afisare alocand 7 caractere in dreapta */
printf("a = %-7d\n",a);
/* afisare alocand 7 caractere în stânga */

printf("\n\nNumere zecimale\n");
printf("f = %f\n",f );
/* afisare specifica pentru numar in simpla precizie */
printf("g = %f\n",g);
/* afisare specifica pentru numar in dubla precizie */
printf("f = %12f\n", f);
/* folosim un camp de 12 caractere */
printf("f = %12.3f\n", f);
/* folosim un camp de 3 caractere dupa virgula */
printf("f = %12.5f\n", f);
/* folosim un camp de 5 caractere dupa virgula */
printf("f = %-12.5f\n",f);
/* afisare specifica alocand 7 caractere în stanga */
printf("f = %.5f\n", f);
/* folosim un camp de 5 caractere dupa virgula */

12
ACTIVITĂȚI 4 ELEMENTELE LIMBAJELOR C/C++ Notițe

printf("f = %e\n", f);


/* folosim formatul stiintific */
printf("f = %E\n", f);
/* folosim formatul stiintific */
printf("f = %g\n",f);
/* afisare specifica %f sau %e, cea mai compacta */

printf(" \n\nCaractere\n");
printf("e = %c\n",e);
/* afisare specifica pentru caracter */
printf("e = %5c\n",e);
/* folosim un camp de 5 caractere */
printf("e = %10c\n",e);
/* folosim un camp de 8 caractere */

printf(" \n\nSir de caractere\n");


printf("sir = %s\n",sir);
/* afisare specifica pentru sir de caractere */
printf("sir = %25s\n",sir);
/*folosim un camp de 25 caractere */
printf("sir = %10.2s\n",sir);
/*folosim un camp de 2 caractere din coloana 10*/
printf("sir = %25.9hs\n",sir);
/*folosim un camp de 9 caractere din coloana 25*/

printf(" \n\nAdrese de memorie (pointer)\n");


printf("&a= %p\n",a);
/* adresa de memorie a variabilei a */
printf("a = %d\n",sizeof(a));
/* nr bytes de memorie pentru variabila a */
printf("\n\nApasati orice tasta pentru a termina...");
getch ();
}

b) Încercați să utilizați cerințele de format din varianta C++ în C# (as4_1).

13
Notițe ELEMENTELE LIMBAJELOR C/C++ ACTIVITĂȚI 4

Poligoane regulate

Scrieţi un program, care apelează o funcție prin care se calculează și se


1 afișează lungimea laturii și aria unui poligon regulat cu n laturi, înscris în
cercul de rază R.
𝑙𝑛 = 𝑅 ∙ cos(𝜋⁄𝑛) ; 𝐴𝑛 = 𝑛 ∙ 𝑅 2 ∙ sin(𝜋⁄𝑛) ∙ cos(𝜋⁄𝑛)

Arii și greutăți

După modelul ae2 scrieți un program care sa calculeze ariile câtorva figuri
2 geometrice simple (triunghi, dreptunghi, trapez etc.). Considerând că
acestea sunt table din oțel cu grosimea g, calculați și afișați și greutatea
acestora.

Suprafața anvelopei

3 Utilizând datele din codul ISO, cu explicațiile din Anexă, scrieți un program
care să calculeze aria anvelopei de cauciuc pentru o roată a automobilului.

14
ACTIVITĂȚI 4 ELEMENTELE LIMBAJELOR C/C++ Notițe

Anexă

Sursa: http://www.atao.ro/2008/02/20/informatii-despre-codurile-de-pe-anvelope/

15

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