Sunteți pe pagina 1din 13

Colegiul Naţional “A.T.

Laurian” Botoşani
Profilul matematică-informatică intensiv engleză

Lucrare de atestat profesional


la informatică

Profesor coordonator:

Nume candidat:

Mai 2018
Lucrare de atestat 2018

Tema Lucrării:

One Block Tetris

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#

Principalele trăsături ale limbajului de programare C# sunt:

 este un limbaj de programare orientat pe obiecte, derivat din C++ şi Java;


 scopul lui este de a combina "productivitatea" mare a limbajului Visual Basic şi puterea brută
a limbajului C++;
 face parte din pachetul Microsoft Visual Studio 7.0;
 versiunea Visual Studio suporta Vb, VC++, C++, Vbscript, Jscript; toate aceste limbaje au
prevăzut accesul la platforma Microsoft .NET;
 platforma .NET include un motor Common Execution, precum și o bibliotecă bogată de
clase;
 echivalentul Microsoft pentru Mașina Virtuală Java este Common Language run time (CLR);
 CLR găzduiește mai mult de un limbaj de felul C#, VB.NET, Jscript, ASP.NET, C++;
 codul sursă este transformat în cod în limbaj intermediar (Intermediate Language code IL),
care este transformat în cele din urma în cod nativ (JIT Compiler);
 tipurile de date și clasele sunt comune pentru toate limbajele .NET;
 În C# se pot dezvolta aplicații pentru consolă (Console application), aplicații pentru Windows
(Windows application), aplicații pentru Web;
 În limbajul C#, Microsoft s-a îngrijit de probleme ca: management-ul memoriei, pointeri;
 este prevăzut cu facilități de "garbage collection", management automat al memoriei si altele.

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

Descrierea aplicaţiei şi a codului sursă

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);
}

#region Windows Form Designer generated code

///<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;

//Create the labels


int blockNumber = 0;
int blockPositionX = 0;
int blockRow = 0;
foreach(System.Windows.Forms.Label block in blockLabels)
{
blockLabels[blockNumber] = new System.Windows.Forms.Label();
this.blockLabels[blockNumber].BackColor = Color.SkyBlue;
this.blockLabels[blockNumber].Location = new System.Drawing.Point(60 * blockPositionX, 60 *
blockRow);

Pagina | 9
Lucrare de atestat 2018

this.blockLabels[blockNumber].Name = "blockLabel" + blockNumber.ToString();


this.blockLabels[blockNumber].Size = new System.Drawing.Size(50, 50);
this.blockLabels[blockNumber].TabIndex = blockNumber;
blockNumber++;
blockPositionX++;

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

this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);


this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(350, 500);
this.Controls.Add(this.blockPanel);
this.Name = "Form1";
this.Text = "Form1";
this.ResumeLayout(false);

#endregion

private System.Windows.Forms.Panel blockPanel;

private System.Windows.Forms.Label[] blockLabels;

public System.Windows.Forms.Label[] BlockLabels


{
get { return blockLabels; }
set { blockLabels = value; }
}
}
}

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

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