metode vizuale de programare.doc

Download metode vizuale de programare.doc

If you can't read please download the document

Upload: auroraistratie

Post on 28-Sep-2015

225 views

Category:

Documents


3 download

TRANSCRIPT

UNIVERSITATEA DIN PETROANIFACULTATEA DE INGINERIE MECANIC I ELECTRICCURS POSTUNIVERSITAR INFORMATIC

REFERAT

PROIECTAREA ALGORITMILOR

Programare dinamic

Student: Gheorghe (Istratie) AuroraAn universitar 2011-2012An I CPUI

Functii predefinite in Visual Basic

Obiectivul lucrarii este realizarea unei prezentari a multitudinii de functii predefinite oferite de platforma .NET si a unor exemple simple de utilizare a celor mai folosite functii predefinite.

Teoria lucrarii

Functiile predefinite au fost introduse pentru a ajuta programatorul si sunt foarte des folosite. Acestea sunt functii referitoare la date numerice, siruri de caractere, date calendaristice, ora si formatare.

Functii numerice

Sunt functiile care realizeaza conversii si calcule cu date numerice. Ca orice functie si functiile numerice returneaza o valoare de un anumit tip si majoritatea acestor functii necesita unul sau mai multe argumente.Pentru realizarea de conversii VisualBasic.NET ofera clasa Convert care contine mai multe metode pentru a face tot felul de conversii. Aceste functii convertesc argumentul dat lor in diferite tipuri de date cum ar fi Boolean, Byte, Char, Decimal, Integer, DateTime etc. In continuare se prezinta o lista a functiilor de conversie oferite de aceasta clasa.Convert.ToBoolean() converteste argumentul dat in echivalentul sau boolean Convert.ToByte()-converteste argumentul la un intreg pe 8 biti fara semn Convert.ToChar()-converteste argumentul la un tip de date caracter Convert.ToDateTime()-returneaza data si /sau ora specificata. Nu se efectueaza o conversie

Convert.ToDecimal()Convert.ToDouble()Convert.ToInt16()Convert.ToInt32()Convert.Toint64()Convert.ToSingle()Convert.ToString()Convert.ToBoolean()

Acestea sunt doar o parte a functiilor oferite de clasa Convert.

Argumentele functiilor de conversie numerice pot fi date imediate dar si o expresie care produce un rezultat numeric. La realizarea unei conversii trebuie sa se tina seama si de compatibilitate, adica ca argumentul sa poata fi convertit in tipul de date ales. De exemplu nu se poate converti numarul 123456789 in Short prin functia ToShort(), deoarece o data de tip short nu poate stoca un numar atat de mare.

Functia valoare absoluta

Metoda(functia) Abs a clasei Math returneaza valoarea absoluta a argumentului sau. Aceasta functie afecteaza semnul si valoarea argumentului. Valoarea absoluta este valoarea pozitiva a argumentului. De exemplu valoarea absoluta a lui 10 este 10, iarvaloarea absoluta a lui -10 este tot 10. Aceasta functie are utilitate practica mai ales in calculul diferentelor de varsta, greutate sau la calculul distantelor.

Sub Main()Dim varsta1 As Integer = 15 Dim varsta2 As Integer = 35Console.WriteLine("diferenta de varsta" & Math.Abs(varsta1 - varsta2)) Console.ReadLine()End Sub

Functii matematice

Functiile matematice predefinite sunt expuse de clasa Math. Cateva dintre acestea sunt: Acos, Asin, Atan, Cos, Sin, Log, Sqrt, Tan, Exp.Exp returneaza e ridicat la puterea specificata de argumentul functiei. Sqrt returneaza radacina patrata din argumentul specificat.

Log returneaza logaritmul natural al argumentului specificat.Clasa Math expune si doua constante matematice si anume e=2.718282 si pi=3.1415. Exemple:

intVar1=Math.Sqrt(4) intVar1=2

intVar1=Math.Sqrt(64) intVar1=8intVar1=Math.Sqrt(25) intVar1=5

Generarea de numere aleatoare

In mediul de programare .NET generarea de numere aleatoare se face cu ajutorul obiectului Random si a metodelor expuse de acesta. Obiectul Random expune 3 metode pentru generare de numere aleatoare si anume: Next, NextByte si NextDouble. In continuare se prezinta un exemplu simplu de folosire a acestui obiect pentru a genera un numar aleator.

Sub Main()Dim r As Random = New Random()Console.WriteLine(r.Next(0, 5))Console.WriteLine(r.Next(10))Console.WriteLine(r.Next()) Console.ReadLine()

End Sub

Acest exemplu prezinta cele 3 variante ale metodei Next. Prima varianta permite generarea de numere aleatoare intre o limita inferioara si una superioara, cea de-a doua permite generarea de numere aleatoare pana la o anumita limita superioara, iar cea de-a 3 a genereaza un numar aleator fara a specifica o limita. Metoda NextDouble este folosita pentru a genera un numar aleator intre 0.0 si 1.0.

In continuare se prezinta un joc simplu in care computerul genereaza un numar aleator intre doua limite pe care utilizatorul va trebui sa il ghiceasca.

Exemplu

Private Sub btnRnd_Click(sender As Object, e As EventArgs)Handles btnRnd.Click

Dim min As Integer =0

Dim max As Integer =0

Dim nr As Random = New Random()min=Integer.Parse(txtMin.Text) max=Integer.Parse(txtMax.Text)

MessageBox.Show(String.Format("Numarul random este: {0}", nr.Next(min, max)))

End Sub

Functii pentru siruri de caractere

Un sir de caractere este o succesiune de tipuri char. Orice referinta la un caracter din sir este tratata ca un char. Sirurile de caractere sunt imutabile. Aceasta inseamna ca dupa ce un sir este creat, acesta nu poate fi modificat la adresa curenta din memorie. Acesta nu poate fi scurtat sau marit sau modificat. Valoarea poate fi desigur schimbata, dar noul sir este tinut la o noua locatie in memorie.Functiile pentru manipularea si lucrul cu siruri de caractere sunt expuse de clasa String. Operatiile pe siruri de caractere se impart in operatii de comparare, operatii de cautare, operatii de transformare si operatii de formatare. In continuare se vor prezenta cele mai utilizate din acestea.

Compararea sirurilor

Cea mai eficienta metoda de a vedea daca doua variabile de tip string sunt egale este sa verificam daca ele au aceeasi adresa in memorie. Acest lucru se poate face cu ajutorul metodei(functiei) ReferenceEquals. Daca doua variabile nu au aceeasi adresa atunci este necesara o comparare caracter cu caracter a celor doua siruri. VB.NET incearca sa optimizeze acest proces prin oferirea metodei String.Equals care verifica si adresele celor doua siruri si valorile acestora in caz ca adresele nu sunt egale. In locul acestei metode poate fi folosit operatorul =.

Cautarea continutului unui sir

Un sir este un vector de caractere in care primul element are index-ul 0. Un caracter al sirului poate fi gasit folosind sintaxa sir(index) unde index este pozitia caracterului in sir la fel ca in cazul accesarii elementelor unui vector.Sub Main()Dim s As String = "abcde"For i As Integer = 0 To s.Length - 1 Console.WriteLine(s(i))NextConsole.WriteLine(s.IndexOf("cd")) afiseaza 2 Console.ReadLine()

End Sub

Pentru localizarea unui subsir de unu sau mai multe caractere se folosesc metodele IndexOf si IndexOfAny.

Transformarea sirurilor

In continuare sunt prezentate cele mai importante metode folosite pentru modificarea sirurilor de caractere.Insert(integer, string) - insereaza un sir la pozitia specificataPadRight/PadLeft adauga la sir un caracter dat pana acesta are o dimensiune specificata. Daca nu se specifica nici un caracter se va folosi space. Remove(p,n) - sterge n caractere de la pozitia p

Replace(A,B) - inlocuieste toate instantele lui A cu B. Unde A si B sunt caractere sau siruri de caractereSplit(new Char(){}) - vectorul de caracterecontine delimitatori care vor fi folositi pentru a imparti sirul in subsiruri care sunt returnate ca elemente ale unui vector de siruri. ToUpper() - returneaza un sir in care toate caracterele sunt upper-caseToLower() - returneaza un sir in care toate caracterele sunt lower-caseTrim() - Elimina caracterele space de la inceputul si sfarsitul sirului. Daca se da ca argument un vector de caractere atunci toate caracterele de la inceput si sfarsit ce sunt in vector sunt eliminate.Substring(n), Substring(n,l) Prima varianta returneaza un subsir al sirului original de la pozitia n la sfarsit, iar a doua varianta returneaza un subsir de lungime l incepand cu pozitia n. Printre functiile care returneaza subsiruri de caractere se numara si Mid(), Left() si Right().ToCharArray() Extrage caracterele dintr-un sir si le returneaza intr-un vector de caractere.

In continuare se prezinta un exemplu simplu de folosire a acestor functii de modificare a sirurilor.

Sub Main()Dim s As String = "abcdeabab" Dim c() As CharDim ss() As Strings = s.Insert(2, "xyz") 'returneaza abxyzcdeabab Console.WriteLine(s)

s = s.Remove(0, 2) ' returneaza xyzcdeabab Console.WriteLine(s)s = s.PadLeft(15, "*") ' returneaza *****xyzcdeababConsole.WriteLine(s)s = s.Replace("a", "q") ' returneaza *****xyzcdeqbqbConsole.WriteLine(s)s = s.ToUpper() ' returneaza *****XYZCDEQBQBConsole.WriteLine(s)s = s.ToLower() ' returneaza *****xyzcdeqbqbConsole.WriteLine(s)s = s.Trim("*") ' returneaza xyzcdeqbqb Console.WriteLine(s)Console.WriteLine(s.Substring(2, 5)) ' returneaza zcdeq c = s.ToCharArray()For i As Integer = 0 To c.Length - 1 Console.WriteLine(c(i))

Nextss = s.Split("d") ' returneaza "xyzc" ca prim element al vectorului si "eqbqb" ca al doileaConsole.WriteLine(ss(0)) ' returneaza xyzc Console.WriteLine(ss(1)) ' returneaza eqbqb Console.ReadLine()

End SubClasa String mai expune proprietatea Length care returneaza numarul de caractere dintr-un sir adica lungimea sirului.

Dim s As String = "abcdeabab" Console.WriteLine(s.Length) afiseaza 9

Clasa String mai expune si metoda Format care este folosita pentru formatarea in diverse moduri a argumentului trecut functiei. Primul argument al functiei este un sir ce contine parametrii de formatare, iar al doilea argument este de tip ParamArray si reprezinta datele supuse spre formatare. In continuare se prezinta un exemplu simplu de folosire a acestei metode.

Sub Main()Dim nume As String = "Georgescu" Dim prenume As String = "Ion" Dim varsta As Integer = 25

Dim fStr As String = String.Format("{0}, {1} are {2} de ani", nume, prenume, varsta)

Console.WriteLine(fStr) Console.ReadLine()

End Sub

In codul de mai sus {0}, {1} si {2} se numesc elemente de formatare si definesc modul in care vor fi afisate datele numar intreg care indica latimea minima a zonei care contine valoarea formatata.

Functii ASCII

Functiile ASCII disponibile sunt Chr() si Asc(), care realizeaza conversia caracterelor in si din codurile numerice ASCII corespunzatoare. Lista completa a codurilor ASCII corespunzatoare caracterelor ce apar pe tastatura este disponibila in utilitarul Object Browser (sectiunea KeyCodeConstants) din Visual Basic.Functia Chr() realizeaza conversia argumentului numeric, reprezentat un cod ASCII, in caracterul care ii corespunde. Cu ajutorul acestei functii se pot afisa caracterele ASCII care nu apar pe tastatura, accesind codul lor.

Functia Asc() este inversa functiei Chr(). Aceasta functie are ca argument un caracter pe care-l converteste in codul ASCII corespunzator.De exemplu, linia de cod de mai jos atribuie variabilei strA valoarea A:

varA = Chr(65) Codul ASCII al lui A este 65

Daca argumentul functiei Asc() este un sir de cel putin doua caractere, atunci aceasta functie va returna codul ASCII al primei litere din sir.

De exemplu, daca se realizeaza un dialog cu utilizatorul si acesta trebuie sa raspunda la o intrebare prin Y (yes) sau N (no) . Se poate folosi secventa de cod urmatoare, in acest caz este posibil ca utilizatorul sa raspunda Yes sau YES, programul interpretand raspunsul ca fiind Y.

aName = Numele meu

strAns = InputBox(Doriti sa vedeti numele?)If ((Asc(strAns) = 89) Or (Asc(strAns) = 121)) Then b = MsgBox(Numele este + aName)End If

Codul ASCII 89 corespunde caracterului Y, iar codul ASCII 121 lui y.

Citirea datei si a orei

Lucrul cu date calendaristice si ore se face cu ajutorul tipului de date DateTime si a metodelor expuse de acesta.