gândiți-vă Java 2nd Ed.

scopul acestei cărți este să te învețe să gândești ca un informatician.Acest mod de gândire combină unele dintre cele mai bune caracteristici ale matematicii, ingineriei și științelor naturale.La fel ca matematicienii, informaticienii folosesc Limbaje formale pentru a desemna idei—în special, calcule.La fel ca inginerii, proiectează lucruri, asamblează componente în sisteme și evaluează compromisuri între alternative.Și, la fel ca oamenii de știință, observă comportamentul sistemelor complexe, formează ipoteze și testează predicții.

o abilitate importantă pentru un informatician este problema solving.It implică capacitatea de a formula probleme, de a gândi creativ despre soluții și de a exprima clar și accurately.As se pare că procesul de învățare a programării computerelor este o oportunitate excelentă de a dezvolta abilități de rezolvare a problemelor.La un nivel, veți învăța să scrieți programe Java, o abilitate utilă de la sine.Dar la un alt nivel, veți folosi programarea ca mijloc de end.As mergem mai departe, acest scop va deveni mai clar.

1.1 ce este un Computer?

când oamenii aud cuvântul computer, se gândesc adesea la un desktop sau la un laptop.Nu este surprinzător că căutarea “computerului” pe Google Images (https://images.google.com/) afișează rânduri și rânduri ale acestor tipuri de mașini.Cu toate acestea, într-un sens mai general, un computer poate fi orice tip de dispozitiv care stochează și procesează date.

Dictionary.com definește un computer ca ” un dispozitiv electronic programabil conceput pentru a accepta date, pentru a efectua operații matematice și logice prescrise la viteză mare și pentru a afișa rezultatele acestor operații.Mainframe – urile, computerele desktop și laptop, tabletele și smartphone-urile sunt unele dintre diferitele tipuri de computere.”

fiecare tip de computer are propriul design unic, dar pe plan intern toate au același tip de hardware.Cele mai importante două componente hardware sunt procesoarele (sau procesoarele) care efectuează calcule simple și memoria (sau memoria RAM) care stochează temporar informații.Figura 1.1 arată cum arată aceste componente.

figura 1.1: exemplu procesor și memorie hardware.

în general, utilizatorii văd și interacționează cu ecranele tactile, tastaturile și monitoarele, dar procesoarele și memoria sunt cele care efectuează calculul real.În zilele noastre este destul de standard, chiar și pentru un smartphone, să aibă cel puțin opt procesoare și patru gigaocteți (patru miliarde de celule) de memorie.

1.2 Ce Este Programarea?

un program este o secvență de instrucțiuni care specifică modul de a efectua un calcul pe hardware-ul computerului.Calculul ar putea fi ceva matematic, cum ar fi rezolvarea unui sistem de ecuații sau găsirea rădăcinilor unui polinom.Ar putea fi, de asemenea, un calcul simbolic, cum ar fi Căutarea și înlocuirea textului într-un document sau (destul de ciudat) compilarea unui program.

detaliile arată diferit în diferite limbi, dar câteva instrucțiuni de bază apar în aproape fiecare limbă:

intrare: obțineți date de la tastatură, un fișier, un senzor sau un alt dispozitiv. ieșire: afișați date pe ecran sau trimiteți date către un fișier sau alt dispozitiv. matematică: efectuați operații matematice de bază, cum ar fi adăugarea și divizarea. decizie: verificați anumite condiții și executați codul corespunzător. repetiție: Efectuați o acțiune în mod repetat, de obicei cu unele variații.

credeți sau nu, asta este cam tot ce există.Fiecare program care le-ați folosit vreodată, indiferent cât de complicat, este alcătuit din instrucțiuni mici, care arata mult ca these.So vă puteți gândi la programare ca la procesul de descompunere a unei sarcini mari și complexe în subtaskuri din ce în ce mai mici.Procesul continuă până când subactivitățile sunt suficient de simple pentru a fi efectuate cu circuitele electronice furnizate de hardware.

1.3 programul Hello World

în mod tradițional, primul program pe care îl scrieți atunci când învățați un nou limbaj de programare se numește programul “Hello World”.Tot ce face este de ieșire cuvintele Bună ziua, lume! pentru a screen.In Java, se pare ca acest lucru:

când acest program se execută, se afișează următoarele:

Bună ziua, lume!

observați că ieșirea nu include ghilimelele.

programele Java sunt alcătuite din definiții de clasă și metodă, iar metodele sunt alcătuite din declarații.O declarație este o linie de cod care efectuează o acțiune de bază.În programul Hello World, această linie este o declarație de imprimare care afișează un mesaj utilizatorului:

sistem.afară.println (“Bună ziua, lume!”);

System.out.println afișează rezultatele pe ecran; numele println înseamnă”print line”.Confuziv, imprimarea poate însemna atât “afișare pe ecran”, cât și “trimitere la imprimantă”.în această carte, vom încerca să spunem “afișare” atunci când ne referim la ieșire pe ecran.La fel ca majoritatea instrucțiunilor, instrucțiunea print se termină cu punct și virgulă (;).

Java este “sensibil la majuscule”, ceea ce înseamnă că majusculele și minusculele nu sunt aceleași.În programul Hello World, System trebuie să înceapă cu o literă mare; system și SYSTEM nu va funcționa.

o metodă este o secvență numită de declarații.Acest program definește o metodă numită main:

publice statice void principal(șir args)

numele și formatul main sunt Speciale: când programul rulează, acesta începe de la prima instrucțiune din main și se termină când termină ultima instrucțiune.Mai târziu, veți vedea programe care definesc mai multe metode.

acest program definește o clasă numită Hello.Pentru moment, o clasă este o colecție de metode; vom avea mai multe de spus despre asta mai târziu.Puteți da unei clase orice nume doriți, dar este convențional să începeți cu o majusculă.Numele clasei trebuie să se potrivească cu numele fișierului în care se află, deci această clasă trebuie să fie într-un fișier numit Hello.java.

Java folosește acolade ({ și }) pentru a grupa lucrurile together.In bună.java, bretelele exterioare conțin definiția clasei, iar bretelele interioare conțin definiția metodei.

linia care începe cu două slash-uri (//) este un comentariu, care este un pic de text în limba engleză care explică codul.Când Java vede //, ignoră totul de acolo până la sfârșitul liniei.Comentariile nu au niciun efect asupra execuției programului, dar fac mai ușor pentru alți programatori (și sinele vostru viitor) să înțeleagă ce ați vrut să faceți.

1.4 compilarea programelor Java

limbajul de programare pe care îl veți învăța în această carte este Java, care este un limbaj de nivel înalt.Alte limbaje de nivel înalt despre care este posibil să fi auzit includ Python, C și C++, PHP, Ruby și JavaScript.

înainte de a putea rula, programele în limbi de nivel înalt trebuie traduse într-un limbaj de nivel scăzut, numit și “limbaj mașină”.Această traducere durează ceva timp, ceea ce reprezintă un mic dezavantaj al Limbilor de nivel înalt.Dar limbile de nivel înalt au două avantaje majore:

  • este mult mai ușor să programați într-un limbaj la nivel înalt.Programele necesită mai puțin timp pentru a scrie, Sunt mai scurte și mai ușor de citit și sunt mai susceptibile de a fi corecte.
  • limbajele de nivel înalt sunt portabile, ceea ce înseamnă că pot rula pe diferite tipuri de computere cu puține sau deloc modificări.Programele de nivel scăzut pot rula pe un singur tip de computer.

două tipuri de programe traduc limbi de nivel înalt în limbi de nivel scăzut: interpreți și compilers.An interpret citește un program de nivel înalt și execută, ceea ce înseamnă că face ceea ce programul says.It procesează programul puțin la un moment dat, citind alternativ linii și efectuând calcule.Figura 1.2 prezintă structura unui interpret.

figura 1.2: cum sunt executate limbile interpretate.

în schimb, un compilator citește întregul program și îl traduce complet înainte ca programul să înceapă să ruleze.Programul de nivel înalt se numește codul sursă.Programul Tradus se numește codul obiect sau executabilul.Odată ce un program este compilat, îl puteți executa în mod repetat fără traducerea ulterioară a sursei code.As un rezultat, programele compilate rulează adesea mai repede decât programele interpretate.

rețineți că codul obiect, ca limbaj de nivel scăzut, nu este portabil.Nu puteți rula un executabil compilat pentru un laptop Windows pe un telefon Android, pentru example.To rulați un program pe diferite tipuri de mașini, acesta trebuie să fie compilate mai multe times.It poate fi dificil de a scrie codul sursă care compilează și rulează corect pe diferite tipuri de mașini.

pentru a rezolva această problemă, Java este compilat și interpretat.În loc să traducă codul sursă direct într-un executabil, compilatorul Java generează cod pentru o mașină virtuală.Această mașină” imaginară ” are funcționalitatea comună desktop-urilor, laptopurilor, tabletelor, telefoanelor etc.Limbajul său, numit Java byte code, arată ca un cod obiect și este ușor și rapid de interpretat.

ca rezultat, este posibil să compilați un program Java pe o mașină, să transferați codul octet pe o altă mașină și să rulați codul octet pe cealaltă mașină.Figura 1.3 prezintă etapele procesului de dezvoltare.Compilatorul Java este un program numit javac.It traduce .fișiere java în .fișiere de clasă care stochează codul octet rezultat.Interpretul Java este un alt program, numit java, care este prescurtarea de la “Java Virtual Machine” (JVM).

figura 1.3: Procesul de compilarea și rularea unui program Java.

programatorul scrie codul sursă în fișierul Hello.java și folosește javac pentru ao compila.Dacă nu există erori, compilatorul salvează codul octet în fișier Hello.class.To rulați programul, programatorul folosește java pentru a interpreta codul octet.Rezultatul programului este apoi afișat pe ecran.

deși poate părea complicat, acești pași sunt automatizați pentru dvs. în majoritatea mediilor de dezvoltare.De obicei, trebuie doar să apăsați un buton sau să tastați o singură comandă pentru a compila și interpreta programul.Pe de altă parte, este important să știți ce pași se întâmplă în fundal, așa că, dacă ceva nu merge bine, vă puteți da seama ce este.

1.5 Afișarea a două mesaje

puteți pune câte declarații doriți în metoda main.De exemplu, pentru a afișa mai multe linii de ieșire:

după cum arată și acest exemplu, puteți pune comentarii la sfârșitul unei linii, precum și pe linii singure.

frazele care apar între ghilimele se numesc șiruri, deoarece conțin o secvență de caractere înșirate împreună în memorie.Caracterele pot fi litere, numere, semne de punctuație, simboluri, spații, file etc.

System.out.println adaugă un caracter special, numit o linie nouă, care se mută la începutul liniei următoare.Dacă nu doriți o linie nouă la sfârșit, puteți utiliza print în loc de println:

în acest exemplu, prima instrucțiune nu adaugă o linie nouă, astfel încât ieșirea apare pe o singură linie:

Adio, lume crudă

observați că există un spațiu la sfârșitul primului șir, care apare în ieșire chiar înainte de cuvântul crud.

1.6 formatarea codului sursă

în codul sursă Java, sunt necesare unele spații.De exemplu, aveți nevoie de cel puțin un spațiu între cuvinte, deci acest program nu este legal:

publicclassGoodbye{ publicstaticvoidmain (string args) { sistem.afară.print (“la revedere,”); sistem.afară.println (“lumea crudă”); }}

dar majoritatea celorlalte spații sunt opționale.De exemplu, acest program este legal:

liniile noi sunt opționale, too.So am putea scrie doar acest lucru:

încă funcționează, dar programul devine din ce în ce mai greu de citit.Liniile noi și spațiile sunt importante pentru organizarea vizuală a programului dvs., facilitând înțelegerea programului și găsirea erorilor atunci când apar.

mulți editori vor formata automat codul sursă cu liniuțe consistente și pauze de linie.De exemplu, în DrJava (Vezi Anexa A. 1) puteți indenta codul selectând tot textul (Ctrl+A) și apăsând tasta Tab.

organizațiile care fac o mulțime de dezvoltare de software au de obicei linii directoare stricte cu privire la modul de formatare a codului sursă.De exemplu, Google publică standardele sale de codificare Java pentru utilizare în proiecte open source: https://google.github.io/styleguide/javaguide.html.

probabil că nu veți înțelege aceste linii directoare acum, deoarece se referă la caracteristici lingvistice pe care nu le-ați văzut încă.Dar s-ar putea să doriți să vă referiți periodic la ele în timp ce citiți această carte.

1.7 folosind secvențe de evacuare

este posibil să se afișeze mai multe linii de ieșire cu o singură linie de cod.Trebuie doar să-i spui Java unde să pună pauzele de linie:

ieșirea este de două linii, fiecare se termină cu un caracter newline:

Alo!Ce mai faci?

fiecare \n este o secvență de evacuare sau două caractere de cod sursă care reprezintă un singur caracter.(Backslash-ul vă permite să scăpați de șir pentru a scrie caractere speciale.) Observați că nu există spațiu între \n și How.Dacă adăugați un spațiu acolo, va exista un spațiu la începutul celei de-a doua linii.

\n newline
\t tab
\" ofertă dublă
\ backslash

tabelul 1.1: secvențe comune de evadare

Java are un total de opt secvențe de evacuare, iar cele patru cele mai frecvent utilizate sunt enumerate în tabelul 1.1.De exemplu, pentru a scrie ghilimele în interiorul șirurilor, trebuie să le scăpați cu un backslash:

sistem.afară.println (“a spus ea \” Bună ziua!\ “pentru mine.”);

rezultatul este următorul:

ea a spus ” Bună ziua!”pentru mine.

1.8 Ce Este Informatica?

această carte omite în mod intenționat câteva detalii despre limbajul Java (cum ar fi celelalte secvențe de evadare), deoarece scopul nostru principal este să vă învățăm cum să gândiți ca un informatician.A fi capabil să înțelegi calculul este mult mai valoros decât să înveți cum să scrii cod.

dacă sunteți interesat să aflați mai multe despre Java în sine, Oracle menține un set oficial de tutoriale pe site-ul său web (https://thinkjava.org/tutorial).Tutorialul “bazele limbii”, găsit la” învățarea limbii Java”, este un loc bun pentru a începe.

unul dintre cele mai interesante aspecte ale scrierii programelor este de a decide cum să rezolve o anumită problemă, mai ales atunci când există mai multe soluții.De exemplu, există numeroase modalități de a sorta o listă de numere și fiecare mod are advantages.In pentru a determina ce cale este cea mai bună pentru o anumită situație, avem nevoie de tehnici pentru descrierea și analiza soluțiilor în mod formal.

un algoritm este o secvență de pași care specifică modul de rezolvare a unei probleme.Unii algoritmi sunt mai rapizi decât alții, iar unii folosesc mai puțin spațiu în memoria computerului.Informatica este știința algoritmilor, inclusiv descoperirea lor și analysis.As înveți să dezvolți algoritmi pentru probleme pe care nu le-ai rezolvat până acum, vei învăța să gândești ca un informatician.

proiectarea algoritmilor și scrierea codului este dificilă și predispusă la erori.Din motive istorice, erorile de programare se numesc bug-uri, iar procesul de urmărire și corectare a acestora se numește debugging.As învățați să vă depanați programele, veți dezvolta noi abilități de rezolvare a problemelor.Va trebui să gândiți creativ atunci când se întâmplă erori neașteptate.

deși poate fi frustrant, depanarea este o parte intelectuală bogată, provocatoare și interesantă a computerului science.In în unele moduri, depanarea este ca munca de detectiv.Vă confruntați cu indicii și trebuie să deduceți procesele și evenimentele care au dus la rezultatele pe care le vedeți.Gândirea la modul de corectare a programelor și îmbunătățirea performanței acestora uneori duce chiar la descoperirea de noi algoritmi.

1.9 programe de depanare

este o idee bună să citiți această carte în fața unui computer, astfel încât să puteți încerca exemplele pe măsură ce mergeți.Puteți rula multe dintre exemple direct în Panoul interacțiuni DrJava lui (a se vedea anexa A. 2).Dar dacă puneți codul într-un fișier sursă, va fi mai ușor să încercați variații.

ori de câte ori experimentați o caracteristică nouă, ar trebui să încercați, de asemenea, să faceți greșeli.De exemplu, în programul Hello World, ce se întâmplă dacă omiteți una dintre ghilimele?Dacă le lași pe amândouă?Ce se întâmplă dacă scrieți greșit println?Aceste tipuri de experimente vă ajută să vă amintiți ce ați citit.Ele ajuta, de asemenea, cu depanare, pentru că veți afla ce mesajele de eroare mean.It este mai bine să faci greșeli acum și intenționat decât mai târziu și accidental.

depanarea este ca o știință experimentală: odată ce ai o idee despre ceea ce nu merge bine, îți modifici programul și încerci din nou.Dacă ipoteza dvs. a fost corectă, atunci puteți prezice rezultatul modificării și faceți un pas mai aproape de un program de lucru.Dacă ipoteza dvs. a fost greșită, trebuie să veniți cu una nouă.

programarea și depanarea ar trebui să meargă mână în mână.Nu scrieți doar o grămadă de cod și apoi efectuați depanare de încercare și eroare până când totul funcționează.În schimb, începeți cu un program care face ceva și faceți mici modificări, depanându-le pe măsură ce mergeți, până când programul face ceea ce doriți.În acest fel, veți avea întotdeauna un program de lucru, iar izolarea erorilor va fi mai ușoară.

un exemplu excelent al acestui principiu este sistemul de operare Linux, care conține milioane de linii de code.It a început ca un program simplu Linus Torvalds folosit pentru a explora cipul Intel 80386.Potrivit lui Larry Greenfield în Ghidul utilizatorilor Linux, ” unul dintre proiectele anterioare ale lui Linus a fost un program care ar comuta între imprimarea AAAA și BBBB.Acest lucru a evoluat ulterior la Linux.”

în cele din urmă, programarea uneori scoate la iveală emoții puternice.Dacă te lupți cu un bug dificil, s-ar putea să te simți supărat, deznădăjduit sau jenat.Amintiți-vă că nu sunteți singuri și practic fiecare programator a avut experiențe similare.Nu ezitați să contactați un prieten și să puneți întrebări!

1.10 vocabular

de-a lungul cărții, încercăm să definim fiecare termen prima dată când folosim it.At la sfârșitul fiecărui capitol, includem noii termeni și definițiile lor în ordinea apariției.Dacă petreceți ceva timp învățând acest vocabular, veți avea un timp mai ușor citind următoarele capitole.

rezolvarea problemelor: procesul de formulare a unei probleme, găsirea unei soluții și exprimarea soluției. hardware: componentele electronice și mecanice ale unui computer, cum ar fi procesoarele, memoria RAM și hard disk-urile. procesor: Un cip de computer care efectuează instrucțiuni simple, cum ar fi aritmetica de bază și logica. memorie: circuite care stochează date atâta timp cât computerul este pornit.A nu se confunda cu dispozitive de stocare permanente, cum ar fi hard disk-uri și flash. program: o secvență de instrucțiuni care specifică modul de efectuare a sarcinilor pe un computer.De asemenea, cunoscut sub numele de “software”. programare: aplicarea de rezolvare a problemelor la crearea de programe de calculator executabile. declarație: parte a unui program care specifică un pas al unui algoritm. declarație de imprimare: o declarație care determină afișarea ieșirii pe ecran. metoda: O secvență numită de declarații. clasă: deocamdată, o colecție de metode conexe.(Veți vedea mai târziu că există mult mai mult la ea.) comentariu: o parte a unui program care conține informații despre program, dar nu are niciun efect atunci când programul rulează. limbaj de nivel înalt: un limbaj de programare conceput pentru a fi ușor de citit și scris pentru oameni. limbaj de nivel scăzut: un limbaj de programare conceput pentru a fi ușor de rulat pentru un computer.De asemenea, numit “limbaj mașină”. portabil: capacitatea unui program de a rula pe mai multe tipuri de computer. interpretează: Pentru a rula un program într-o limbă de nivel înalt, traducându-l câte o linie pe rând și executând imediat instrucțiunile corespunzătoare. compilare: pentru a traduce un program într-un limbaj de nivel înalt într-un limbaj de nivel scăzut, dintr-o dată, în pregătirea pentru execuția ulterioară. cod sursă: un program într-un limbaj de nivel înalt, înainte de a fi compilat. cod obiect: ieșirea compilatorului, după traducerea programului. executabil: un alt nume pentru codul obiect care este gata să ruleze pe hardware specific. mașină virtuală: o emulare a unei mașini reale. JVM permite unui computer să ruleze programe Java. cod octet: un tip special de cod obiect utilizat pentru programele Java.Codul octet este similar cu codul obiect, dar este portabil ca un limbaj de nivel înalt. string: o secvență de caractere; tipul de date primare pentru text. newline: un caracter special care semnifică sfârșitul unei linii de text.Cunoscut și sub numele de “sfârșitul liniei”, “sfârșitul liniei” (EOL) sau “pauză de linie”. secvență de evacuare: o secvență de cod care reprezintă un caracter special atunci când este utilizat în interiorul unui șir. algoritm: o procedură sau o formulă pentru rezolvarea unei probleme, cu sau fără un computer. informatică: Abordarea științifică și practică a calculului și a aplicațiilor sale. bug: o eroare într-un program. debugging: procesul de găsire și eliminare a erorilor.

1.11 exerciții

la sfârșitul fiecărui capitol, includem exerciții pe care le puteți face cu lucrurile pe care le-ați învățat.Vă încurajăm să încercați cel puțin fiecare problemă.Nu poți învăța să programezi doar citind despre asta; trebuie să exersezi.

înainte de a putea compila și rula programe Java, este posibil să trebuiască să descărcați și să instalați câteva instrumente.Există multe opțiuni bune, dar vă recomandăm DrJava, care este un “mediu de dezvoltare integrat” (IDE) potrivit pentru începători.Instrucțiunile pentru a începe sunt în Anexa A.

codul pentru acest capitol se află în directorul ch01 al ThinkJavaCode2.Vezi pagina ?? pentru instrucțiuni despre cum să descărcați depozitul.Înainte de a începe exercițiile, vă recomandăm să compilați și să rulați exemplele.

Exercițiul 1

informaticienii au obiceiul enervant de a folosi cuvinte comune în limba engleză pentru a însemna altceva decât semnificațiile lor comune în limba engleză.De exemplu, în limba engleză, declarațiile și comentariile sunt același lucru, dar în programe sunt diferite.

  1. în jargonul computerului, care este diferența dintre o declarație și un comentariu?
  2. ce înseamnă să spui că un program este portabil?
  3. în engleza comună, ce înseamnă cuvântul compilare?
  4. ce este un executabil? De ce este folosit acest cuvânt ca substantiv?

secțiunea de vocabular de la sfârșitul fiecărui capitol este destinată să evidențieze cuvinte și fraze care au semnificații speciale în informatică.Când vedeți cuvinte familiare, nu presupuneți că știți ce înseamnă!

Exercițiul 2

înainte de a face orice altceva, aflați cum să compilați și să rulați un program Java.Unele medii oferă exemple de programe similare cu exemplul din secțiunea 1.3.

  1. introduceți programul Hello World; apoi compilați-l și rulați-l.
  2. adăugați o declarație de imprimare care afișează un al doilea mesaj după Hello, World!.Spune ceva spiritual cum ar fi, ce mai faci?.Compilați și rulați din nou programul.
  3. adăugați un comentariu la program (oriunde), recompilați și rulați-l din nou.Noul comentariu nu ar trebui să afecteze rezultatul.

acest exercițiu poate părea banal, dar este locul de plecare pentru multe dintre programele pe care le vom lucra with.To debug cu încredere, va trebui să aveți încredere în mediul dvs. de programare.

în unele medii, este ușor să pierdeți evidența programului care se execută.S-ar putea să încercați să depanați un program în timp ce rulați accidental altul.Adăugarea (și modificarea) declarațiilor de imprimare este o modalitate simplă de a vă asigura că programul pe care îl priviți este programul pe care îl rulați.

Exercițiul 3

este o idee bună să comiți cât mai multe erori la care vă puteți gândi, astfel încât să vedeți ce mesaje de eroare produce compilatorul.Uneori compilatorul vă spune exact ce este greșit și tot ce trebuie să faceți este să îl remediați.Dar, uneori, mesajele de eroare sunt înșelătoare.În timp, veți dezvolta un sentiment pentru momentul în care puteți avea încredere în compilator și când trebuie să vă dați seama de lucruri.

începând cu programul Hello World, încercați fiecare dintre următoarele erori.După ce efectuați fiecare modificare, compilați programul, citiți mesajul de eroare (dacă există unul) și apoi remediați eroarea.

  1. scoateți unul dintre bretelele buclate de deschidere.
  2. scoateți unul dintre brațele buclate de închidere.
  3. în loc de main, scrieți mian.
  4. eliminați cuvântul static.
  5. eliminați cuvântul public.
  6. eliminați cuvântul System.
  7. înlocuiți printlncu Println.
  8. înlocuiți printlncu print.
  9. se șterge o paranteză.
  10. adăugați o paranteză suplimentară.

Lasă un răspuns

Adresa ta de email nu va fi publicată.