Pagina informaticii

Teste de informatică pentru liceu, articole C#, C/C++, PHP

Lecţia 1 - Aplicaţii elementare în mod consolă

Vom considera că v-aţi instalat Visual C# Express Edition 2008 (sau ediţia mai nouă, 2010). Aceasta se găseşte de descărcat gratuit de pe pagina Microsoft. Primele aplicaţii pe care vi le voi prezenta sunt de tip Console Application. Vom învăţa lucruri elementare în care vom observa faptul că sintaxa C# este asemămătoare cu cea din C++. De asemenea, vom vedea că esenţa C# este Programarea orientată pe obiecte (POO). Aţi dedus deja că ar fi bine ca înainte să vă apucaţi de C# să ştiţi limbajul C/C++. Să trecem la treabă!

P01. Să se creeze o aplicaţie de tip Consolă care afişează un mesaj la ecran.

Din meniul File selectaţi New Project. Se va deschide fereastra:

Selectaţi opţiunea Console Application, apoi daţi un nume acestui proiect (de exemplu, p01_salut). Apoi apăsaţi OK. Veţi putea vedea acum deja mai multe linii de cod, pe care le vom analiza puţin înainte de a scrie ceva în acest program:

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

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

		}
	}
}

Spre deosebire de programele din C++ în care scriam linii de tipul #include<iostream> aici includem spaţiile de lucru predefinite, ceea ce înseamnă că putem lucra cu clasele definite în aceste spaţii. Urmează linia namespace p01_Salut care creează un spaţiu de nume definit de utilizator, spaţiu care poate fi eventual utilizat în alte programe. Pentru că C# înseamnă POO, atunci era normal să apară definită clasa Program, în care apare funcţia membră (metoda) statică Main. Parametrul metodei Main este un tablou de şiruri de caractere.

Înainte să tipărim un mesaj în acest program, să mai menţionăm faptul că în C# există o regulă nescrisă: prima literă din numele funcţiilor se scrie cu majusculă, iar numele variabilelor începe cu literă mică. Iată mai jos programul complet:

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

namespace p01_Salut
{
	class Program
	{
		static void Main(string[] args)
		{
			Console.WriteLine("Bine ati venit in lumea C#!");
		}
	}
}

Compilaţi acest program cu F6 şi executaţi-l apăsând CTRL + F5. Va apărea următoarea fereastră:

Apăsaţi o tastă pentru a închide această fereastră, apoi salvaţi proiectul din File - Save All, apoi închideţi-l cu File - Close Solution.

 

P02. Se citesc două numere întregi. Să se calculeze şi să se afişeze suma lor.

Programul (doar funcţia membră Main) este prezentat mai jos, apoi îl vom comenta.

 
static void Main(string[] args)
{
	int a, b, s;
	string s1, s2;
	
	// citirea datelor
	Console.Write("a = ");
	s1 = Console.ReadLine();
	Console.Write("b = ");
	s2 = Console.ReadLine();

	// conversia
	a = int.Parse(s1);
	b = Convert.ToInt32(s2);
	s = a + b;
	Console.WriteLine(a + " + " + b + " = " + s);
	Console.WriteLine("{0} + {1} = {2}", a, b, s);
}

Să menţionăm un lucru foarte important: toate datele care se citesc, fie de la tastatură, fie din fişier text, sunt considerate şiruri de caractere (string). De aceea am utilizat variabilele s1 şi s2 în citire, apoi mai jos am realizat conversia (în două moduri diferite) lui s1 şi s2 la valori numerice. Afişarea datelor s-a realizat în două moduri diferite. De remarcat la prima afişare faptul că apare operatorul + care înseamnă concatenare de string-uri. Aici se face conversia implicită a valorilor numerice ale lui a, b şi s la string. A doua afişare este elegantă. Scrierea are parametrii a, b, s care sunt numerotaţi cu valorile implicite 0, 1, 2. În şirul "{0} + {1} = {2}" unde apare 0 se înlocuieşte cu valoarea parametrului 0 (adică a), unde apare 1 se se înlocuieşte cu valoarea parametrului 1 (adică b) şi unde apare 2 se înlocuieşte cu valoarea parametrului 2 (adică s).

Programul putea fi scris mai simplu, fără a utiliza stringuri, realizând conversia de la string la int direct la citire, fără a utiliza variabilele s1 şi s2:

 
static void Main(string[] args)
{
	int a, b;
	a = int.Parse(Console.ReadLine());
	b = int.Parse(Console.ReadLine());
	Console.WriteLine("{0} + {1} = {2}", a, b, a + b); 
}

P03. Afişarea valorii radical din 2, a lui pi şi a valorii 210

Se utilizează pentru acest lucru clasa Math, o clasă ce conţine foarte multe funcţii matematice uzuale. De remarcat că şi 210 va fi considerat un număr real.

static void Main(string[] args)
{
	Console.WriteLine(Math.Sqrt(2));
	Console.WriteLine(Math.PI);
	Console.WriteLine(Math.Pow(2, 20));
}

P04. Se citeşte un număr natural nenul n. Să se calculeze suma cifrelor lui n.

Vom utiliza în rezolvare toate cele trei structuri repetitive (for, while şi do-while) care apar şi în C++.

 
static void Main(string[] args)
{
	int n, suma, x;
	n = int.Parse(Console.ReadLine());
	x = n;

	// while
	suma = 0;
	while (n > 0)
	{
		suma += (n % 10);
		n /= 10;
	}
	Console.WriteLine(suma);
	n = x;
	
	// for
	for (suma = 0; n != 0; n /= 10)
		suma += n % 10;
	Console.WriteLine(suma);
	n = x;
	
	//do-while
	suma = 0;
	do
	{
		suma += (n % 10);
		n /= 10;
	} 
	while (n != 0);
	
	Console.WriteLine(suma);
}

 

Despre autor
Author

Dan Pracsiu deţinător www.dponline.ro
Profesor, Liceul Teoretic "Emil Racoviță" Vaslui
Membru în Comisia Naţională a Olimpiadelor de Informatică
Pasiuni: istoria, călătoriile, fotografia, muzica clasică

Comentarii (4)
  • Avatar

    Gabriela 17-12-2015 16:29:39

    Buna ziua!
    Ma intereseaza sa stiu cum pot afisa valoare lui PI cu doar 3 sau 4 zecimale.
    Multumesc

  • Avatar

    eu 28-12-2015 16:2:4

    Afisare cu precizie de 4 zecimale:
    #include <iostream>
    #include <iomanip>
    using namespace std;
    int main()
    {
    double x=12.345678901;
    cout << fixed << setprecision(4) << x;
    return 0;
    }

  • Avatar

    teo 26-2-2016 10:37:14

    Cum citesc un sir de numere separate prin spatiu de pe un singur rand fara sa stiu lungimea sirului de numere?

  • Avatar

    Dan Pracsiu 8-3-2016 16:28:20

    Cam asa:
    ifstream fin("test.in");
    n = 0;
    while (fin >> x)
    {
    n++;
    a[n] = x;
    }

Scrie un comentariu
Nume:

Comentariu:

15 + 10 =