Sunteți pe pagina 1din 16

Proiectarea Asistata de Calculator

pentru Avionica
PACA

LABORATOR 1
Introducere in limbajul C, C++, C#

Scurt istoric
• Limbajul C a fost inventat de catre Dennis Ritchie in anii ‘70 pe un calculator pe care rula sistemul de operare
UNIX. Limbajul C s-a dezvoltat in urma revolutiei programarii structurate din anii ’60. Inainte de programarea
structurata, programele erau greu de scris si de inteles din cauza logicii. O masa incalcita de salturi, apelui si
reveniri, greu de urmarit era cunoscuta sub numele de cod spaghetti. Datorita sintaxei sale concise si usor de
utilizat, in anii ‘80, limbajul C a devenit cel mai raspandit limbaj structurat.
• Limbajul C are insa limitele sale. Una dintre acestea o reprezinta incapacitatea de a lucra cu programe mari.
Limbajul C ridica o bariera atunci cand programul atinge o anumita dimensiune.
• Limbajul C# a fost dezvoltat de o echipa restransa de ingineri de la Microsoft, echipa din care s-a evidentiat Anders
Hejlsberg (autorul limbajului Turbo Pascal si membru al echipei care a proiectat Borland Delphi). A fost lansat
publicului in iunie 2000 si oficial in primavara anului 2002 Desi limbajul este creat de Microsoft, acesta nu este
destinat doar platformelor Microsoft. Compilatoare C# exista si pentru alte sisteme precum Linux sau Macintosh.
Creat ca instrument de dezvoltare pentru arhitectura .NET, limbajul ofera o modalitate facila si eficienta de a scrie
programe pentru sistemul Windows, internet, componente software etc.
• C# deriva din doua dintre cele mai de succes limbaje de programare: C si C++. De asemenea, limbajul este o “ruda”
apropiata a limbajului Java.
C# este un limbaj simplu, cu circa 80 de cuvinte cheie si 12 tipuri de date predefinite. El permite programarea
structurata, modulara si orientata obiectual, conform perceptelor moderne ale programarii profesionale.
Principiile de baza ale programarii orientate pe obiecte (INCAPSULARE, MOSTENIRE, POLIMORFISM) sunt
elemente fundamentale ale programarii C#. In mare, limbajul mosteneste sintaxa si principiile de programare din
C++. Sunt o serie de tipuri noi de date sau functiuni diferite ale datelor din C++, iar in spiritul realizarii unor
secvente de cod sigure (safe), unele functiuni au fost adaugate (de exemplu, interfete si delegari), diversificate
(tipul struct), modificate (tipul string) sau chiar eliminate (mostenirea multipla si pointerii catre functii). Unele
functiuni (cum ar fi accesul direct la memorie folosind pointeri) au fost pastrate, dar secventele de cod
corespunzatoare se considera "nesigure".
• Microsoft Visual Studio este un mediu de dezvoltare integrat
(integrated development environment - IDE) de la Microsoft. Acesta
poate fi folosit pentru a dezvolta aplicaţii consolă şi aplicații cu
interfaţă grafică pentru toate platformele suportate de Microsoft
Windows (ex. .NET Framework, Windows Mobile etc).

• Microsoft Visual Studio oferă editor, compilator/debugger și mediu


de proiectare (designer) pentru mai multe limbaje de programare.
Limbaje de programare incluse: Microsoft Visual C++, Microsoft
Visual C#, Microsoft Visual Basic, Microsoft Visual Web
Developer, Team Foundation Server.
• Limbaje anterioare: Visual FoxPro (eliminat în 2007), Visual SourceSafe
(întrerupt începând cu Visual Studio 2008), Microsoft Visual J++/ Microsoft
Visual J # (întrerupt începând cu Visual Studio 2008), Visual InterDev
(înlocuit cu Microsoft Visual Web Developer).
• Pe lângă limbajele amintite anterior, Microsoft Visual Studio oferă
suport și pentru alte limbaje, cum ar fi M, Python, Ruby. De
asemenea, sprijină XML/XSLT, HTML/XHTML, JavaScript și CSS.
• .NET Framework este o platformă/cadru (Framework) de dezvoltare software
unitară, înzestrată cu un set mare de clase, structuri, enumerări etc., organizate
într-un set de spaţii de nume (namespaces) bazate pe un limbaj comun.
• .NET Framework este o componentă livrată împreună cu sistemul de operare
Windows. Ultima versiune de .NET Framework este .NET Framework 4.6 și este
inclusă în Windows 10.
• Tehnologia .NET pune laolaltă mai multe tehnologii (ASP, XML, OOP, SOAP,
WDSL, UDDI) şi limbaje de programare (ex.: C++, VB, C#) asigurând, totodată,
atât portabilitatea codului compilat între diferite calculatoare cu sistem Windows,
cât şi reutilizarea codului în programe, indiferent de limbajul de programare
utilizat. Pentru a fi integrate în platforma .NET, limbajele de programare sus
amintite respectă un set de caracteristici de bază Common Language
Specification (CLS), astfel asigurându-se interoperabilitatea între aplicaţii,
indiferent de limbajul folosit pentru crearea acestora. CLS-ul definește și un set
de tipuri - Common Type System (CTS). Ca elemente de bază, limbajele de
programare au: clase, interfeţe, delegări, tipuri valoare şi referinţă, iar ca
mecanisme: moştenirea, polimorfismul şi tratarea excepţiilor. Limbajele au o
platformă comună de executare numită Common Language Runtime (CLR).
Toate aceste limbaje folosesc un ansamblul de biblioteci necesare în realizarea
aplicaţiilor desktop sau Web, numit Framework Class Library (FCL).
• Componenta .NET Framework este formată din compilatoare, biblioteci şi alte
executabile utile în rularea aplicaţiilor .NET. Fişierele corespunzătoare se află, în
general, în directorul C:\WINDOWS\Microsoft.NET\Framework\V….
(corespunzător versiunii instalate).
Arhitectura platformei Microsoft.NET
Trasaturi ale platformei .NET
• Dezvoltarea multilimbaj: Deoarece exista mai multe limbaje pentru aceasta platforma, este mai usor de implementat
parti specifice ın limbajele cele mai adecvate. Numarul limbajelor curent implementate este mai mare decat 10.
• Independenta de procesor si de platforma: Odata scrisa si compilata, orice aplicatie .NET (al carei management este
facut de catre CLR) poate fi rulata pe orice platforma. Aplicatia este izolata de particularitatile hardware sau ale
sistemului de operare.
• Managementul automat al memoriei: Problemele de tipul memory leakage nu mai trebuie sa preocupe
programatorii; overhead-ul indus de catre mecanismul de garbage collection este suportabil, fiind implementat ın
sisteme mult mai timpurii.
• Suportul pentru versionare: Daca o aplicatie a fost dezvoltata si testata folosind anumite componente, instalarea unei
componente de versiune mai noua nu va atenta la buna functionare a aplicatiei ın discutie: cele doua versiuni vor
coexista pasnic.
• Sprijinirea standardelor deschise: Nu toate dispozitivele ruleaza sisteme de operare Microsoft sau folosesc
procesoare Intel. Din aceasta cauza orice este strans legat de acestea este evitat.
• Distribuirea usoara: Actualmente instalarea unei aplicatii sub Windows ınseamna copierea unor fisiere ın niste
directoare anume, modificarea unor valori ın registri, instalare de componente COM, etc. Dezinstalarea completa a unei
aplicatii este in majoritatea cazurilor o utopie. Aplicatiile .NET, datorita metadatelor si reflectarii trec de aceste
probleme. Se doreste ca instalarea unei aplicatii sa nu ınsemne mai mult decat copierea fisierelor necesare ıntr-un
director, iar dezinstalarea aplicatiei sa se faca prin stergerea acelui director.
• Arhitectura distribuita: Noua filosofie este de a asigura accesul la servicii Web distribuite; acestea conlucreaza la
obtinerea informatiei dorite. Platforma .NET asigura suport si unelte pentru realizarea acestui tip de aplicatii.
• Interoperabilitate cu codul “unmanaged”: Codul “unmanaged” se refera la cod care nu se afla ın totalitate sub
controlul CLR. El este rulat de CLR, dar nu beneficiaza de CTS sau garbage collection. Este vorba de apelurile functiilor
din DLL-uri, folosirea componentelor COM, sau folosirea de catre o componenta COM a unei componente .NET. Codul
existent se poate folosi ın continuare.
• Securitate: Aplicatiile bazate pe componente distribuite cer automat securitate.
Crearea aplicatiilor consola
Pentru a realiza aplicatii consola in mediul de dezvoltare Visual Studio, trebuie
sa instalam o versiune a acestuia, eventual de la adresa:
https://www.visualstudio.com/downloads/download-visual-studio-vs
Dupa lansarea aplicatiei, din meniul File se alege optiunea NewProject, apoi
alegem ConsoleAplication, modificand numele aplicatiei in caseta Name.
Crearea aplicatiilor consola
• La crearea unei aplicatii consola se genereaza un fisier cu extensia .c (de la C), .cpp (de la C++) sau .cs. (de la C
Sharp).
• Exemplu de cod sursa generat in C# este:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Exemplu1
{
class Program
{
static void Main(string[ ] args)
{
string nume = “Cristina”;
Console.WriteLine("Primul program realizat de “ + nume);
}
}
}

Pentru compilarea programului, selectati Build din meniul principal sau apasati tasta F6. In cazul in care aveti erori,
acestea sunt afisate in fereastra Error List. Efectuand dublu-clic pe fiecare eroare in parte, cursorul din program se
pozitioneaza pe linia continand eroarea.
Rularea programului se poate realiza in mai multe moduri:
- rapid fara asistenta de depanare (Start Without Debugging Ctrl+F5);
- rapid cu asistenta de depanare (Start Debugging F5);
- rulare pas cu pas (Step Into F11 si Step Over F10);
- rulare rapida pana la linia marcata ca punct de intrerupere (Toggle Breakpoint F9 pe linia respectiva si
apoi Start Debugging F6). Incetarea urmarii pas cu pas (Stp Debugging Shift+F5) permite iesirea din modul
depanare si revenirea la modul normal de lucru. Toate optiunile si rulare si depanare se gasesc in meniul Debug al
mediului de programare.
Structura unui program C#
using System;
namespace Salut
{
class Program
{
static void Main()
{
Console.WriteLine(“Salut!");
}
}
}
In C#, simplificat vorbind, un program poate fi privit ca avand mai multe "straturi":
avem cod in interiorul metodelor, care, la randul lor, se afla in interiorul claselor, aflate in interiorul namespaces-
urilor. O aplicatie C# este formata din una sau mai multe clase, grupate in spatii de nume (namespaces). Este
obligatoriu ca doar una din aceste clase sa contina "un punct de intrare" si anume metoda (functia) Main.
- Clasa (class), in termeni simplificati, reprezinta principalul element structural si de organizare in limbajele
orientate spre obiecte, grupand date cat si functii care prelucreaza respectivele date.
- Spatiul de nume (Namespaces): din ratiuni practice programele mari sunt divizate in module, dezvoltate separat,
de mai multe persoane. Din acest motiv, exista posibilitatea de a aparea identificatori cu acelasi nume. Pentru a
evita erori furnizate din acest motiv, in 1995 limbajul C++ introduce notiunea si cuvantul cheie namespace. Fiecare
multime de definitii dintr-o librarie sau program este grupata intr-un spatiu de nume, existand astfel posibilitatea
de a avea intr-un program definitii cu nume identic, dar situate in alte spatii de nume.

linia 1: este o directiva care specifica faptul ca se vor folosi clase incluse in spatiul de nume System. In cazul nostru se va folosi clasa
Console;
linia 2: spatiul nostru de nume;
linia 4: orice program C# este alcatuit din una sau mai multe clase;
linia 6: metoda Main, "punctul de intrare" in program
linia 8: clasa Console, amintita mai sus, este folosita pentru operatiile de intrare/iesire. Aici se apeleaza metoda WriteLine din aceasta
clasa, pentru afisarea mesajului dorit pe ecran.
Sintaxa limbajului
➢ Comentarii
- comentariu pe un rand prin folosirea //. Tot ce urmeaza dupa caracterele // sunt considerate, din acel loc pana la sfarsitul
randului, drept comentarii.
Exemplu: // Acesta este un comentariu pe un singur rand

- comentariu pe mai multe randuri prin folosirea /* si */. Orice text cuprins intre simbolurile mentionate mai sus se considera a fi
comentariu. Simbolurile /* reprezinta inceputul comentariului, iar */ sfarsitul respectivului comentariu.
Exemplu: /* Acesta este un
comentariu care se
intinde pe mai multe randuri */

- creare document in format XML folosind ///. XML a fost proiectat in scopul transferului de date intre aplicatii pe Internet.
➢ Nume
Prin nume dat unei variabile, clase, metode etc. intelegem o succesiune de caractere care indeplinesc urmatoarele reguli:
- numele trebuie sa inceapa cu o litera sau cu unul dintre caracterele "_" si "@";
- primul caracter poate fi urmat numai de litere, cifre sau un caracter de subliniere;
- numele care reprezinta cuvinte cheie nu pot fi folosite in alt scop decat acela pentru care au fost definite;
- cuvintele cheie pot fi folosite in alt scop numai daca sunt precedate de @;
- doua nume sunt distincte daca difera prin cel putin un caracter (fie el si litera mica ce difera de aceeasi litera majuscula);
- In cazul numelor claselor, metodelor, a proprietatilor, enumerarilor, interfetelor, spatiilor de nume, fiecare cuvant care compune
numele incepe cu o majuscula;
- In cazul numelor variabilelor, daca numele este compus din mai multe cuvinte, primul incepe cu minuscula, celelalte cu
majuscula;
➢ Constante
In C# exista doua modalitati de declarare a constantelor: folosind const sau folosind modificatorul readonly. Constantele declarate
cu const trebuie sa fie initializate la declararea lor.
Exemple
Afisarea unui mesaj
// Primul program in C#. pe ecran in C#
using System;
namespace Salut
{
class Salut
{
static void Main()
{
Console.WriteLine("Salutari si felicitari pentru primul program in C#");
// Pastram fereastra deschisa in modul debug
Console.WriteLine("Apasati orice tasta pentru a iesi");
Console.ReadKey();
}
}
}
Exemple
Afisarea unui mesaj
// Primul program in C++. pe ecran in C
#include "stdafx.h"
#include "conio.h"
int main()
{
printf("Salutari si felicitari pentru primul program in C\n");
// Pastram fereastra deschisa in modul debug
printf("Apasati orice tasta pentru a iesi\n");
_getch();
return 0;
}
Exemple
Afisarea cu 4 zecimale
a constantei PI in C#
using System;
using System.Collections.Generic;
using System.Text;

namespace Exemplu1
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Valoarea constantei matematice PI este {0:#.####}", Math.PI);
Console.ReadKey();
}
}
}
Exemple
//Aplicatie de afisare tabel Fahrenheit-Celsius pentru fahr= 0,20,...300

#include "stdafx.h"
#include "conio.h"
int main() Afisarea tabel
{
int fahr, celsius; Fahrenheit-Celsius in C
int prim, ultim, pas;
prim=0; // limita inferioara a scarii
ultim =300; // limita superioara
pas=20; // pasul
fahr= prim;
while (fahr<= ultim)
{ celsius =5 * (fahr-32)/9;
printf("%d\t%d\n", fahr, celsius);
fahr=fahr+pas;}
_getch();
return 0;
}
Exemple
#include "stdafx.h"
#include "conio.h"
int main()
{ Afisarea tabel
float fahr, celsius;
float prim, ultim, pas; Fahrenheit-Celsius in C
prim=0; // limita inferioara a scarii
ultim =300; // limita superioara Aliniere prin format
pas=20; // pasul
fahr= prim;
while (fahr<= ultim)
{ celsius =5 * (fahr-32)/9;
printf("%3.0f\t%6.1f\n", fahr, celsius);
fahr=fahr+pas;}
_getch();
return 0;
}
Exemple
using System;
using System.Collections.Generic;
using System.Text; Transformarea unui nr
de secunde in ore, min
namespace Exemplu2
{ si secunde – in C#
class Program
{
static void Main(string[] args)
{
int sec, h, m, s;
Console.Write(“nr. Secunde:”);
sec=int.Parse(Console.ReadLine());
m=sec/60;
s=sec%60;
h=m/60;
m=m%60;
Console.WriteLine(“{0} secunde reprezinta: {1} ore, {2} min, {3} s”, sec, h,m,s);
Console.ReadKey();
}
}
}

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