Documente Academic
Documente Profesional
Documente Cultură
Laurian” Botoşani
Profilul matematică-informatică intensiv engleză
Profesor coordonator:
Nume candidat:
Mai 2018
Lucrare de atestat 2018
Tema Lucrării:
Pagina | 2
Lucrare de atestat 2018
Cuprins
ARGUMENT................................................................................................................................................................ 4
LIMBAJUL C#.............................................................................................................................................................. 4
DESCRIEREA APLICAŢIEI ŞI A CODULUI SURSĂ............................................................................................................. 7
CONCLUZII.................................................................................................................................................................. 7
BIBLIOGRAFIE........................................................................................................................................................... 17
Pagina | 3
Lucrare de atestat 2018
Argument
Am recreat în C# jocul clasic de tetris. Obiectivul jocului este de a muta piesele care
cad astfel încât acestea să formeze o linie orizontală. Când o astfel de linie este creată,
aceasta dispare iar pieseleurmătoare cad. Jocul se continuă până când se omite
accidental o piesă sau mai multe la bază şi deci, nu se mai formează o linie. Piesele nu
mai dispar şi se aglomerează astfel încheindu-se jocul.Când nu mai puteţi face mutări,
pe ecran va apare mesajul: „Ai pierdut. Vrei sa reincepi jocul?”.
Limbajul C#
Pagina | 4
Lucrare de atestat 2018
Urmatoarele șase trăsături caracterizează limbajul C#: este simplu, este modern, este orientat pe
obiecte, este type safe, este interoperabil, este scalabil și poate fi adus la zi (updated).
I. Simplitate
1. În C# nu exista pointeri.
2. Operatii nesigure cum ar fi manipularea directa a memoriei nu sunt permise.
3. În C# nu sunt folositi operatorii "::" si "->".
4. Întrucât este integrat pe platforma .NET, "mosteneste" facilitatile de "garbage
collection" si management-ul automat al memoriei.
5. Ofera intervale variabile pentru tipurile primitive ca Integer, Float.
6. Valorile întregi 0 si 1 nu mai sunt acceptate ca si valori Booleene. Aceste valori
Booleene sunt pur si simplu true si false în C#, astfel ca nu vor mai aparea erori la
folosirea operatorului "=" si a operatorului "=="; în C# operatorul "==" este folosit
doar pentru operatia de comparatie, iar operatorul "=" doar pentru operatia de
atribuire.
II. Modernitate
1. C# a fost scris în acord cu tendintele actuale, fiind un foarte puternic si simplu limbaj
de programare pentru construirea unor aplicatii interoperabile, scalabile si robuste.
2. C# include suport "built in" pentru a transforma orice componenta într-un serviciu
web, care sa poata fi accesat pe Internet de orice fel de aplicatie care ruleaza pe orice
fel de platforma.
III. Orientat pe obiecte
1. C# suporta încapsularea datelor, mostenirea, polimorfismul si interfetele.
2. În Java, "int, float si double" nu sunt obiecte, dar C# a introdus structurile (structs)
care permit tipurilor primitive sa devina obiecte:
int i=1;
String a=i Tostring();//conversie sau Boxing.
IV. Type safe
1. În C# nu este permis sa se execute cast-uri nesigure, cum ar fi convertirea unei
variabile double în variabila Booleana.
Pagina | 5
Lucrare de atestat 2018
2. Tipurile primitive sunt initializate cu zero si tipurile de referinta (obiecte si clase) sunt
initializate cu null de catre compilator automat.
3. Tablourile sunt neindexate si sunt verificate.
4. Depasirea tipurilor poate fi verificata.
V. Interoperabilitate
1. C# include suport pentru COM si pentru aplicatii bazate pe ferestre.
2. Permite uzul pointerilor, dar cu restrictii.
3. Programatorul nu mai trebuie sa implementeze explicit interfetele unknown si COM;
aceste trasaturi sunt "bilt in".
4. C# permite programatorilor sa foloseasca pointerii ca "unsafe code blocks" pentru a
manipula codul vechi.
5. Componente din VB.NET si din alte limbaje pot fi folosite direct în C#.
VI. Scalabilitate si update
1. Platforma .NET a introdus ansamble (assemblies) care sunt auto-descrise de felul lor
de manifestare. Felul de manifestare stabileste identitatea ansamblului, versiunea si
semnatura digitala. Aceste ansamble nu trebuie sa fie înregistrate niciunde.
2. Pentru a scala aplicatia, programatorul trebuie sa stearga fisierele vechi si sa le aduca
la zi (update) cu cele noi. Nu trebuie înregistrate DLL-urile (dynamic link libraries).
3. Aducerea la zi (update) a componentelor software este o sarcina (task) predispusa la
erori; revizuirea codului poate afecta versiunea suportului programului C# în limbaj.
4. Suportul oferit pentru interfete si redefinirea metodelor face posibil ca aplicatiile
complexe cu frame-uri sa fie elaborate si dezvoltate de-a lungul timpului.
Pagina | 6
Lucrare de atestat 2018
Programul emite un nou bloc la un interval de 1 secundă. La aranjarea a 5 blocuri în linie orizontală
programul şterge linia şi le trimite pe toate în jos.
Pagina | 7
Lucrare de atestat 2018
Pagina | 8
Lucrare de atestat 2018
using System.Drawing;
namespace Tetris
{
partialclassForm1
{
///<summary>
/// Required designer variable.
///</summary>
private System.ComponentModel.IContainer components = null;
///<summary>
/// Clean up any resources being used.
///</summary>
///<param name="disposing">true if managed resources should be disposed; otherwise,
false.</param>
protectedoverridevoid Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
///<summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
///</summary>
privatevoid InitializeComponent()
{
this.blockPanel = new System.Windows.Forms.Panel();
this.blockLabels = new System.Windows.Forms.Label[40];
this.SuspendLayout();
//
// blockPanel
//
this.blockPanel.Location = new System.Drawing.Point(0, 0);
this.blockPanel.Name = "blockPanel";
this.blockPanel.Size = new System.Drawing.Size(350, 500);
this.blockPanel.TabIndex = 0;
Pagina | 9
Lucrare de atestat 2018
if(blockNumber == 5)
{
blockRow++;
blockPositionX = 0;
}
if(blockNumber == 10)
{
blockRow++;
blockPositionX = 0;
}
if(blockNumber == 15)
{
blockRow++;
blockPositionX = 0;
}
if(blockNumber == 20)
{
blockRow++;
blockPositionX = 0;
}
if(blockNumber == 25)
{
blockRow++;
blockPositionX = 0;
}
if(blockNumber == 30)
{
blockRow++;
blockPositionX = 0;
}
if(blockNumber == 35)
{
blockRow++;
blockPositionX = 0;
}
if(blockNumber == 40)
{
blockRow++;
blockPositionX = 0;
}
}
blockNumber = 0;
foreach(System.Windows.Forms.Label block in blockLabels)
{
this.blockPanel.Controls.Add(this.blockLabels[blockNumber]);
blockNumber++;
}
//
// Form1
//
Pagina | 10
Lucrare de atestat 2018
#endregion
Pagina | 11
Lucrare de atestat 2018
Pagina | 12
Lucrare de atestat 2018
Concluzii
C# este un limbaj de programare simplu, modern, "type safe", orientat pe obiecte, care permite
programatorilor să construiască ușor și rapid soluții pentru platforma Microsoft .NET.
Bibliografie
http://stackoverflow.com/
http://msdn.microsoft.com/
http://www.tutorialspoint.com/
Pagina | 13