Jump to content
  • Advertisments


Advertisment


Programare in diverse limbaje | Basics | Intrebari & Raspunsuri


ShOoBy

Recommended Posts

Programarea
- Basics/Intrebari/Diverse Limbaje -


 
# Introducere
 
Topicul pe care il citesti, este unul foarte lung, detaliat, si 'stupid' daca nu te intereseaza subiectul, asa ca daca nu te intereseaza foarte mult programarea si amanunte despre aceasta, iesi acas'. In caz ca te intereseaza, aici ai un rezumat despre cunostintele de baza pe care eu consider ca ar trebuii sa le ai daca vrei sa faci ceva pe subiectul acesta.
Nota: Nu garantez pentru tot topicul (ca si corectitudine exacta), ceea ce am sa scriu pe aici, este doar un rezumat pe scurt al unor intrebari si detalii pe care le-am invatat de-a lungul a celor 5 ani de cand ma pasioneaza scriptingul, si voi folosii termeni cat mai 'calzi' ca sa va incurajez sa cititi si sa nu va speriati de cuvinte complicate.
 
Primul lucru pe care trebuie sa il aflii, este ca nu toate scripturile (/programele) sunt facute in aceiasi maniera, si ca exista multiple 'limbi' de programare. Cele mai folosite sunt C++ (si C#, din care a derivat Pawn, limbajul folosit la scripturile din SAMP) si Java (din care a derivat LUA daca nu ma insel folosit la MTA, Squirrell folosit la IV-MP, si multe altele). Din aceste 2 limbaje, C++ este cel cu care trebuie sa incepi, este cel mai simplu si toata lumea incepe cu el. Java devine mult mai complicat, cu class-uri multiple si incurcate care iti cam schimba perceptia despre cum ruleaza defapt un program.
 
Dar hai sa ramanem la chestii simple, C++ si cum difera limbajele de programare. Pana la urma ce sunt aceste limbaje si ce au in comun nu? O sa va raspund pe parcurs la aceste intrebari, aici aveti un rezumat a ceea ce contine acest topic.
 

** Capitolul I

  • - Variabile (1)
  • - Instructiuni (2)
  • - Functii (3)
  • - Erori (4)
** Capitolul II
  • - Optimizare (5)
  • - Aliniament (6)
** Capitolul III
  • - Intrebari (7)
  • - Incheiere (8)


 

Capitolul I

# Variabile (1)
 
Ca si in viata reala, programele au creier. Ce facem noi cu creierul? Retinem lucruri. Acelasi lucru se aplica si aici. Sa zicem ca ne trebuie sa pastram o anumita valoare, pe care sa o folosim mai tarziu (Ex: Playerul intra pe server, retinem ora la care a intrat). Pentru a retine anumite lucruri in interiorul programelor se folosesc variabilele. Variabilele sunt de multe feluri, dar in general se numesc la fel in toate limbajele de programare (in schimb poate diferii marimea lor).

Tipurile generale de variabile simple, larg folosite sunt:
INT - Stocheaza un iteger, practic un numar (marimea depinde de programul in care il compilezi, exemplu la mingw este ceva gen 32000 parca, iar in Microsoft C++ este vreo 2 miliarde)
FLOAT - Acesta practic defineste un numar cu virgula. Daca iti trebe media aritmetica de exemplu, sau o ratie, vei folosii float (Ex: 25.91)
STRING - Defineste o insiruire de caractere (poate contine si spatii). Trebuie mereu insotita de valoarea maxima pe care o poate retine (Ex: string Nume[100], unde 100 este numarul maxim de caractere pe care le poate avea numele)
La acestea se adauga si variabile care pur si simplu maresc valoarea, de exemplu DOUBLE INT, este exact ceea ce sugereaza, un int cu valoarea maxima dubla, etc. Numarul maxim mereu incepe de la 0, exemplu cu Nume[100], primul caracter va fii Nume[0] si ultimul Nume[99], adica in total 100.

Daca tot v-am spus de valoarea maxima care se pune dupa anumite tipuri de variabile (Variabila[VALOARE_MAXIMA]) hai sa va zic si de matrici si vectori.
Imaginati-va o linie de puncte, cum facem sa retinem date despre toate? Facem cate o variabila pentru fiecare vector? Nu, raspunsul este ca folosim un vector. Un vector se poate definii de la aproape orice variabila normala urmat de un numar maxim.
Exemplu: int Numere[100], unde fiecare numar (Numere[1], Numere[2], etc) va avea o valoare numerica pentru fiecare Numere[x], unde X este locul in care am alocat numarul.
Matricea este acelasi lucru ca si vectorul doar ca este dublu! Va puteti gandi la ea ca la o chestie 2D, o serie de linii si coloane, un tabel. Exemplu int Covor[100][100];
 
 
# Instructiuni (2)
 
Ok avem variabile, dar cum le folosim? Cum spunem ca variabila X are valoarea Y? Pentru asta folosim instructiuni. Asta este in principal un program, o serie de instructiuni, combinate intr-un algoritm. 
Instructiunile pot fi foarte simple, exemplu =, putem sa definim direct cu = variabilele de tip integer, float, etc.
Ex: Gheorghe = 1;
Alte instructiuni de forma aceasta pot fi * care inseamna inmulteste, - care este minus, si + care logic este plus.
 
Dar cum facem daca vrem sa testam ceva anume? De exemplu vrem sa testam daca o variabila este egala cu 5? In acest caz folosim instructiunea IF.
Ex: if(Variabila == 5)  - Observatie: La testare se folosesc doua egaluri, si la definire doar unul.
 
Dar daca vrem sa repetam o actiune de mai multe ori? De exemplu in C++ sa scriem pe ecran "salut" de 3 ori?
Pentru aceasta avem instructiuni repetitive cum ar fii FOR, WHILE, DO WHILE, FOREACH, etc.
Ex:




for(int i = 1; i <= 3; i++) cout << "Salut";
int i = 1 ne spune ca vom folosii variabila i, care porneste de la 1 si este de tip int
i <= 3 ne spune ca instructiunea se va oprii cand i va fi mai mare ca si 3
i++ ne spune pasul, aceasta instructiune practic mareste i-ul cu 1 de fiecare data
cout << "Salut" scrie pe ecran "Salut". Aici difera de la limbaj la limbaj, in Pawn se folosesc alte lucruri, in java altele, etc.
 
 
# Functii (3)
 
Bun, acum ati inteles ce fac instructiunile simple, dar in programe nu trebuie decat sa aduni, si sa scazi lucruri nu? Ce facem de exemplu daca vrem sa testam chestii complicate sau sa facem programul sa arate un cerc?
 
In acest caz folosim functii. Functiile pot fi pre-definite, si incluse in anumite librarii sau definite de noi. Fiecare functie poate avea 0 sau 1 sau mai multi parametrii. De asemenea functia poate returna valori, sau nu.
 
Exemplu de functie inclusa intr-o librarie, este functia sqrt() care afla radicalul unui numar si il returneaza ca si rezultat de tip float. Un exemplu de utilizare ar fii: cout << sqrt(193); care va scrie pe ecran cat face radical din 193. 
Aceste functii pre-definite trebuie sa provina de undeva nu? De aceea mereu ca sa le folosim includem librariile din care fac parte. De exemplu pentru a o folosi pe aceasta ar trebuii sa adaugam deasupra tuturor liniilor din program, instructiunea #include <iostream>
 
Dar functiile pot fi definite si de utilizator, ca doar nu putem sa gasim chiar orice ne trebuie intr-o librarie nu? Un exemplu de functie ar putea fi urmatoarea:
 
 
int max(int a, int  
{
    if(a > 
        return a;
    else
        return b;
}
 
 
Aceasta functie afla maximul dintre doua numere, si folosita in programul principal ar arata ceva gen: max(13,44); si ar returna 44. 

Exista o multitudine de functii, si de variante de a le definii, la java de exemplu se definesc in general in fisiere separate ca sa combini class-urile, dar deja devine prea avansat.
 
 
# Erori (4)
 
Sa zicem ca am terminat un program. Ca sa il facem sa mearga trebuie sa il compilam, dar compilarea incepe sa ne dea mesaje rosii si sa scrie Error peste tot. Asta inseamna ca programul nu a fost facut corect, si exista erori in el.
Cea mai buna solutie pentru a le rezolva este sa ai multa experienta si sa intelegi exact ceea ce spun erorile, ca sa le poti corecta.
Daca in schimb nu ai mesaje rosii, programul se compileaza si ruleaza dar tu nu primesti rezultate bune, sau nu functioneaza corect, eu folosesc o metoda pe care o sugerez tuturor: introduceti variabile temporare peste tot in program si scrieti-le pe ecran din cand in cand, ca sa vedeti ce se modifica si unde. Acelasi lucru se aplica si cu alte lucruri nu numai cu variabile, exemplu iti dispare o masina, si vrei sa sti ce se intampla cu ea, testezi din 1 in 1 secunde daca masina exista si daca da ii printezi pozitia.
 
 

Capitolul II


# Optimizare (5)
 
Ati vazut jocuri care arata nu foarte bine, si totusi iti mananca la propriu calculatorul? Jocuri care se vad ca naiba si totusi folosesc mult mai multi rami decat altele? Aceste jocuri sunt prost optimizate (poate va spune ceva termenul). Optimizarea este procesul in care excluzi cat mai muta memorie folosita inutil.
Exemplu de optimizare ar fi scadearea numarului de variabile din program, folosirea functiilor in diverse parti in schimbul rescrierii aceluiasi alogoritm in 100 de locuri, folosirea de valori maxime mai mici pentru variabilele care le necesita, etc.
 
# Aliniament (6)
 
Daca la liceu o sa faceti programare, o sa vedeti ca unii profesori incearca foarte mult sa te faca sa aliniezi intr-un anumit fel programul. Poate ca odata nu o sa il aliniezi asa, si o sa vezi ca merge, si o sa te intrebi de ce naiba sa il aliniezi altfel daca merge oricum. Raspunsul este: usurinta de a vedea / modifica ceva. Este foarte important sa aliniezi codul frumos, ca sa poti sa intelegi usor anumite lucruri despre ce ai scris. Exemplu:




int x= 1; while(x< 15){ cout <<"Nr a ajuns la "<<x;x++;
if(    x==15)cout<< "Ultima afisare";}
 
int x = 1;
while(x < 15) {
    cout << "Nr a ajuns la " << x;
    x++;
 
    if(x == 15)
        cout << "Ultima afisare!";
}
 
 
Cele doua coduri de mai sus sunt identice, ambele functioneaza perfect fara erori .. si totusi codul al 2-lea este mai bun, pentru ca este usor sa intelegi ce se intampla. De aceea o aliniare buna este esentiala!
 

Capitolul III

# Intrebari (7)



Tu: Ok am inteles, ma pot apuca de programare?
Eu: Nu. Ceea ce am spus eu aici, nu va avea nici un sens daca nu te uiti de 2-3 ori intr-un program real. Astea sunt doar parti, ca sa inveti programare iti trebe ani de zile.
 
Tu: Invat repede, cat mi-ar lua maxim sa termin de invatat programare?
Eu: Nu exista limita, programarea nu se termina niciodata de invatat, se tot aduna si se tot aduna, mereu apar lucruri noi, si limbaje mai bune, mereu se imbunatateste cate ceva, si se schimba ceva, asa ca niciodata nu o sa te opresti din invatat daca vrei sa stii totul.

Tu: Cate limbaje trebuie sa cunosti?
Eu: Depinde cate iti trebuie, le inveti pe cele pe care le folosesti, si daca nu poti invata un limbaj nou in maxim 2 saptamani dupa ce deja esti linistit pe tine ca si programator, si sti foarte bine minim 1 limbaj, atunci programarea nu e de tine. Trebuie sa poti sa te adaptezi repede la un alt limbaj, pentru ca nu difera extrem de mult in general. E logic ca nu o sa il sti pe dinafara in 2 saptamani, dar macar sa inveti toate lucrurile de baza si sa il folosesti cursiv.

Tu: Cati ani ia ca sa sti cata programare sti tu acum?
Eu: Mie mi-a luat 5 ani.. tie iti poate lua mai mult sau mai putin, conteaza cat te pasioneaza asta.

Tu: Vreau sa devin programator, cu ce incep?
Eu: Cu C++ si tutoriale de pe net. Cauta si invata primele programe pe care le poti face, si fi atent la scoala. Din clasa a 9-a se invata programare si acolo daca esti pe Mate-Info.

# Incheiere (8)

Pentru toti micii mari programatori in devenire, succes :) Este un loc unde nu veti ramane niciodata fara locuri de munca, tehnologia se dezvolta mereu, este un loc placut de munca si foarte bine platit, daca iti plac calculatoarele si esti pasionat sa faci lucrui noi si inventive o sa iti palca.

Daca sti ca te plictisesti usor, nu este locul tau, eu petrec cateodata si 12 ore lucrand la un program daca ma apuca nervii si vreau sa il termin. Cand plec cateodata de la calculator ma clatin, e mai rau decat cand te imbeti. Dar si satisfactia este pe masura, cand vezi ca ai facut ceva extrem de bun pe care nimeni altcineva nu l-a facut si sti ca va fi folosit de multi. De asemenea trebuie sa ai o logica extrem de buna si sa stii sa rezolvi probleme matematice si de inventivitate, sa nu iti pierzi cumpatul si sa sti sa ganedesti logic si clar chiar dupa 8-10 ore de munca grea in care ti s-a incins creierul (gandeste-te ca lucrezi la mate 10 ore).

Trebuie sa te pasioneze, altfel te vei plictisii usor! Edited by RuNix
Link to comment
Share on other sites

Ah da, daca doriti sa invatati programare in php, html , si mai multe dintre ele, http://www.w3schools.com/ eu de aici am invatat, mare parte din ce stiu la momentul actual, spor la treaba.

Link to comment
Share on other sites

Am citit cuvant cu cuvant.

>Mereu am vrut sa stiu cum face RuNix scripturile...deci de aici deriva...Dar Shobo,am si eu o intrebare,daca vrei sa inveti scripting in samp,prima data inveti C++?

>Si de unde inveti limbajele cu,care scrii scripturile?

+Like pentru efort shobo.

 

 

 

Ah da, daca doriti sa invatati programare in php, html , si mai multe dintre ele, http://www.w3schools.com/ eu de aici am invatat, mare parte din ce stiu la momentul actual, spor la treaba.

Si eu am intrat pe site asta,dar tot nu am inteles cum creeze un site,de unde incep,sunt asa de multe,ca nu stiu de ce sa ma apuc,ce sa invat prima oara.

Link to comment
Share on other sites

Am citit cuvant cu cuvant.

>Mereu am vrut sa stiu cum face RuNix scripturile...deci de aici deriva...Dar Shobo,am si eu o intrebare,daca vrei sa inveti scripting in samp,prima data inveti C++?

>Si de unde inveti limbajele cu,care scrii scripturile?

+Like pentru efort shobo.

 

 

 

Si eu am intrat pe site asta,dar tot nu am inteles cum creeze un site,de unde incep,sunt asa de multe,ca nu stiu de ce sa ma apuc,ce sa invat prima oara.

XHTML/HTML dupa PHP, ipb..smf.. joomla.. template-uri, web design.. omfg, sunt o gramada, da-mi pm sa iti arat site facut de mine in joomla, i-am cerut si ajutorul lui RuNix la o chestie pe un site, ii multumesc frumos pentru ajutorul acordat.

Link to comment
Share on other sites

Ce am scris eu aici se aplica in general pentru programarea de aplicatii, programarea la jocuri (cum ar fi SAMP), etc.

Programarea de site-uri este cu totul altceva, pana si java difera de la o chestie la alta, desii e acelasi limbaj in fond.

Si da trebuie sa sti C++ ca sa sti pawn(o) (este defapt un limbaj derivat din C++, dar mult mai usor, exemplu variabilele nu au tip, toate se initializeaza cu new, si dupa isi da seama programu in functie de ce faci, ce sunt ele defapt).

Ca sa incepi, cauti pe youtube: How to c++, si incepi cu programe simple si incet incet o sa intelegi ce e defapt, si tot ce am scris aici o sa ti se para usor.

Link to comment
Share on other sites

Daca vrei sa faci un site uite-te la html basics acolo iti explica cum sa incepi,cu ce etc.!

 

DAR daca nu vrei sa inveti limbaju html,poti incepe sa faci site-uri mult mai usor in Adobe Muse CC!Acolo nu scrii nici macar 1 cod de html si creezi site-uri mult mai usor si mai frumoase!Poti sa incerci si sa te uiti la tutoariale!

Link to comment
Share on other sites

Bun tutorialul

Bravo Shooby, pentru efortul depus!

Bogdanel ms si tie pentru site-ul ala! e f ok!+1 amandoi!

Edited by SwepY.
Link to comment
Share on other sites

  • 4 weeks later...
  • 1 month later...
Guest
This topic is now closed to further replies.

  • Advertisments


Advertisment


×
×
  • Create New...