Laborator 2: Instrucţiuni Java şi lucru cu şiruri de caractere Întocmit de: Adina Neculai Îndrumător: Asist. Drd. Gabriel Danciu 18 octombrie 2011

Documente similare
Programarea şi utilizarea calculatoarelor

Laborator 4: Continuare Programare Orientată pe Obiecte Întocmit de: Adina Neculai Îndrumător: Asist. Drd. Gabriel Danciu 29 octombrie 2011

Laborator 9: Fire de execuţie Întocmit de: Adina Neculai Îndrumător: Asist. Drd. Gabriel Danciu 20 noiembrie 2011

Declararea variabilelor

Slide 1

Programarea şi utilizarea calculatoarelor

Microsoft Word _POO_Lab_1_Modificari_v01.htm

Operatorii in C Expresii Operatori aritmetici Operatori de asignare Operatori de incrementare si decrementare Operatori relationali Operatori logici O

Microsoft Word - CarteC.doc

Subiectul 1

SUBPROGRAME

Programarea şi utilizarea calculatoarelor

Microsoft PowerPoint - ImplementareLimbaj [Read-Only] [Compatibility Mode]

Laborator 3

Limbaje de Programare Curs 5 – Siruri de caractere

Microsoft Word - CarteC.doc

Grile si probleme siruri de caractere in C++ ŞIRURI DE CARACTERE Itemii următori sunt preluaţi din variantele de bacalaureat În secvenţa de i

Limbaje de Programare Curs 6 – Functii de intrare-iesire

E_d_Informatica_sp_MI_2015_bar_02_LRO

Diapositive 1

ALGORITMICĂ. Seminar 3: Analiza eficienţei algoritmilor - estimarea timpului de execuţie şi notaţii asimptotice. Problema 1 (L) Să se determine număru

tehnologii web

Propunator: Morar Florin Colegiul National Silvania Zalau Discipina: Informatica Nivel liceal, cls. XII 1.Să se scrie în limbajul C/C++ definiţia comp

1 Lucrarea nr. 8 - Structuri de date de tip liste sortate O listă sortată reprezintă un aranjament al înregistrărilor din cadrul listei în funcţie de

PHP (II)

Interfețe și Protocoale de Comunicații Arduino-Port Paralel Arduino. Laborator 1- Portul Paralel 1 Caracteristici generale Arduino UNO este o placă de

Microsoft PowerPoint - Curs_TPI_22_v01.ppt

Lecţia 2 Structura liniară, alternativă şi repetitivă Clasa a V-a Structuri de bază(liniară, alternativă şi repetitivă) Programarea structurată este o

Laborator 2 Incompatibilităţi/Diferenţe între C şi C++ Completări C++ Supraîncărcarea (redefinirea) numelui de funcţii În C nu este permisă existenţa

ALGORITMII ŞI REPREZENTAREA LOR Noţiunea de algoritm Noţiunea de algoritm este foarte veche. Ea a fost introdusă în secolele VIII-IX de către Abu Ja f

Microsoft Word - Curs 7 - JavaScript.doc

LUCRAREA NR

E_d_Informatica_sp_SN_2014_bar_10_LRO

Microsoft Word - CarteC.doc

Top

Object Oriented Programming

Declaraţii. Instrucţiuni 19 octombrie 2005 Programarea calculatoarelor 2. Curs 3b Marius Minea

Algoritmi elementari Metode de căutare secvenţială binară Metode de ordonare metoda bulelor metoda inserţiei metoda selecţiei metoda numărării Intercl

Microsoft Word - PCLP2_Curs_4_2019.doc

Curs 3 Permutari cu repetitie. Combinari. Algoritmi de ordonare si generare

Tablouri unidimensionale Problema 1 Să se determine mulţimea cifrelor unui număr natural n > 0, dat. Exemplu: n= Cifre = {1,2,3,7} Se cere să s

Slide 1

Propunator: Morar Florin Colegiul National Silvania Zalau Discipina: Informatica Nivel liceal, cls. XI 1.Fişierul text bac.in conţine cel mult 1000 de

Microsoft PowerPoint - Fp_2.ppt

L7

Slide 1

Metode de sortare - pregătire admitere - Conf.dr. Alexandru Popa Lect. dr. Andrei Pătraşcu Universitatea din Bucureşti 1

Microsoft PowerPoint - Curs_SDA_9_RO_2019_v2.pptx

Lucrarea nr. 9 - Liste dublu înlănţuite Breviar teoretic În cadrul elementelor studiate anterior s-a putut observa utilitatea listelor simplu înlănuit

Limbaje de Programare Curs 8 – Fisiere

Limbaje de programare Pointeri. Alocare dinamică (continuare) 26 noiembrie 2012

Scrieţi pe foaia de examen răspunsul pentru fiecare dintre cerinţele următoare

Ingineria Sistemelor de Programare

Microsoft Word - c6.doc

Slide 1

Microsoft Word - 4-Interfete paralele.doc

CURS

Lucrarea 11. IoT Internet of Things - Accesul prin Internet la obiecte sau dispozitive simple 1. Obiectivul lucrarii Lucrarea isi propune sa studieze

Lucrarea 10

Lab6LCD

Capitole Speciale de Informatică Curs 2: Determinarea vocabularului de termeni şi a listelor de postări 4 octombrie 2018 Reamintim că listele de indec

PROGRAMARE OBIECT-ORIENTATA LABORATOR 1 INTRODUCERE IN CLASE SI OBIECTE Introducere teoretica Prin intermediul unei Clase ne dorim sa construim tipuri

Laborator 2 - Încapsularea Programare Orientată pe Obiecte Tema 2.1 Să se analizeze programul EX2.C Indicatii 2.1 A nu se uita de fisierul EX2.H Tema

Metode avansate de gestiune a documentelor și a sistemelor de calcul - LABORATOR 1 -

Logică și structuri discrete Logică propozițională Marius Minea marius/curs/lsd/ 3 noiembrie 2014

Laborator Activities În sistemul Android activitățile reprezintă echivalentul ferestrelor din Windows, fiind clase care extind clasa Activity. Spre de

Capitole Speciale de Informatică Curs 1: Extragerea informaţiilor. Modelul boolean şi modelul boolean extins 27 septembrie 2018 Extragerea informaţiil

Logică și structuri discrete Limbaje regulate și automate Marius Minea marius/curs/lsd/ 24 noiembrie 2014

Logică și structuri discrete Mulțimi Casandra Holotescu

Logică și structuri discrete Relații. Funcții parțiale Marius Minea marius/curs/lsd/ 20 octombrie 2014

Slide 1

Paradigme de Programare

Procesarea Imaginilor - Laborator 1: Introducere în utilizarea bibliotecii OpenCV 1 1. Introducere în utilizarea bibliotecii OpenCV 1.1. Introducere S

Algoritmi genetici paraleli. Implementari Java. Continut laborator: 1. Obiectivul lucrarii. 2. Notiuni teoretice: 3. Cerinte laborator. 4. Tema. 1. Ob

Ministerul Educatiei, Cercetarii si Tineretului Grup Scolar Gh. Asachi Galati Proiect pentru obtinerea certificatului de competente profesionale Speci

PowerPoint-Präsentation

Preprocesorul C Funcţii cu numǎr variabil de argumente 6 decembrie 2005 Programarea calculatoarelor 2. Curs 10 Marius Minea

Laborator 7: PROIECTAREA BAZELOR DE DATE SUBPROGRAME in PL/SQL (partea I - proceduri) Un subprogram este un bloc PL/SQL cu nume (spre deosebire de blo

Laborator Fragments Un fragment reprezintă o porțiune dintr-un Activity. Într-un activity se pot combina mai multe fragmente ți un fragment se poate r

Microsoft PowerPoint - Curs_SDA_10_RO_2019_v1.pptx

Lucrarea nr. 4 - Algoritmi de sortare şi ordonare Breviar teoretic Un algoritm de sortare este o metoda prin care se aranjează elementele unui tablou

-

MergedFile

Lecții de pregă,re la informa,că Admitere 2019 Tema: Discutarea problemelor date la ul,mele sesiuni de admitere Bogdan Alexe

MINISTERUL EDUCAŢIEI, CULTURII ŞI CERCETĂRII AL REPUBLICII MOLDOVA UNIVERSITATEA DE STAT ALECU RUSSO DIN BĂLŢI FACULTATEA DE ŞTIINŢE REALE, ECONOMICE

Ingineria Sistemelor de Programare

ALGORITHMICS

Structuri de date pentru partiţii de mulţimi O partiţie finită a unei mulţimi nevide S este o mulţime finită de submulţimi ale lui S: {S 1, S 2,..., S

Microsoft Word - lab4.doc

Proceduri stocate Syntax: CREATE PROCEDURE <Name> type1,...] AS -- secventa de comenzi SQL GO O procedura stocata se ruleaza cu EXEC: EXEC <N

Slide 1

PROGRAMARE ORIENTATA PE OBIECTE

Curs 8: Tehnica divizării (I) Algoritmi si structuri de date - Curs 8 1

CURS

Investeşte în oameni

Paradigme de programare

Microsoft Word - Ivan, Boja.doc

Procesarea de imagini folosind programarea paralela. Implementari Java. Continut laborator: 1. Obiectivul lucrarii. 2. Notiuni teoretice: 3. Cerinte l

Transcriere:

Laborator 2: Instrucţiuni Java şi lucru cu şiruri de caractere Întocmit de: Adina Neculai Îndrumător: Asist. Drd. Gabriel Danciu 18 octombrie 2011

I. NOŢIUNI TEORETICE A. Instrucţiuni condiţionale 1. Intrucţiunea if else if(expresie_condiţională) secvenţă_if; else secvenţă_else; Dacă expresie_condiţională este evaluată la true, atunci se execută secvenţă_if. În caz contrar, se execută secvenţă_else. Este necesar ca expresie_condiţională să fie evaluată la o valoare booleană. În plus, prezenţa structurii else nu este obligatorie şi pot exista cazuri de folosire a instrucţiunii if else în cascadă. 2. Intrucţiunea switch switch(expresie_condiţie) { case val1: secvenţa1; <break>;... ; case valn: secvenţan; <break>; <default:> secvenţa_default; } Pentru utilizarea acestei instrucţiuni este necesar ca atât tipul de date al lui expresie_condiţie cât şi cel al valorilor val1,..., valn să fie din categoria tipurilor numerice: byte, char, short, 2

int. Astfel că, primul pas constă în evaluarea valorii expresiei expresie_condiţie. Apoi se compară valoarea evaluată cu prima valoare a lui case, val1. Dacă această valoare este egală cu val1 atunci se execută secvenţa1 până la întâlnirea lui break. Dacă instrucţiunea break nu este prezentă, atunci se trece la execuţia celorlalte secvenţe de tipul secvenţan, fără a mai testa celelalte valori din case. În cazul în care valoarea din condiţie nu este egală cu nici o valoare din case atunci se execută secvenţa_default ce urmează lui default:. Cazul default permite executarea secvenţei de după el indiferent de valoarea expresiei de evaluat. Acesta poate lipsi. B. Instrucţiuni de ciclare 1. Intrucţiunea for for(<secvenţă_iniţializare>;<expresie_condiţie>;<secvenţă_incrementare>) <secvenţă_repetată>; Intrucţiunea for face parte din instrucţiunile de ciclare cu test iniţial. De reţinut că secvenţă_repetată se execută înaintea secvenţă_incrementare şi că variabilele definite în secvenţă_iniţializare sunt valabile doar în interiorul for-ului. Tot ce este între <> poate lipsi, astfel încât putem avea for(;;) pentru a putea realiza un ciclu infinit. 2. Intrucţiunea while while(expresie_condiţie) secvenţă_repetată; În execuţia instrucţiunii while, la început, se evaluează expresie_condiţie. Dacă aceasta are valoarea true atunci se trece la execuţia secvenţă_repetată. Dacă valoarea este de la bun început false, secvenţa din cadrul buclei nu va mai fi deloc executată. Se observă că şi această instrucţiune face parte din cele de ciclare cu test iniţial. 3

3. Intrucţiunea do while do secvenţă_repetată while(expresie_condiţie); În execuţia instrucţiunii do while, întâi se execută secvenţă_repetată şi abia apoi se evaluează expresie_condiţie. Astfel, chiar dacă expresia de evaluat este falsă, secvenţă_repetată tot se execută măcar o dată. De aceea, instrucţiunea do while face parte din cele de ciclare cu test final. C. Instrucţiuni de salt Intrucţiunea: 1. break este utilizată pentru întreruperea execuţiei instrucţiunilor de ciclare şi a celor switch; 2. continue poate fi folosită doar în interiorul instrucţiunilor de ciclare forţând trecerea la un nou ciclu; 3. return este utilizată pentru ieşirea forţată dintr-o metodă. D. Lucru cu şiruri de caractere Cele mai cunoscute clase care lucrează cu şiruri de caractere sunt: String, StringBuffer. 1. Clasa String Cea mai importantă caracteristică a clasei String este că obiectele o dată iniţializate nu se mai pot modifica, fiecare dintre aceste obiecte indicând spre o zonă diferită de memorie. O altă proprietate a obiectelor de tip String este că pot fi utilizate impreună cu operatorul +, pentru concatenarea şirurilor. Prin concatenare se instanţiază un nou obiect de tip String care va referenţia un şir alcătuit din şirurile alipite cu ajutorul operatorului +. Această clasă oferă o serie de metode pentru lucru cu şiruri de caractere. Aceste metode au în vedere compararea şirurilor, căutarea în şiruri, şamd. Se recomandă studierea API-ului. 4

2. Clasa StringBuffer Un obiect StringBuffer reprezintă ca şi în cazul clasei String un şir de caractere. Diferenţa între cele două este că primul obiect poate suferi modificări. Acest lucru este posibil datorită metodelor insert() şi append() care permit inserarea, respectiv adăugarea unor şiruri de caractere. Pentru mai multe informaţii se recomandă studierea API-ului. II. PREZENTAREA LUCRĂRII DE LABORATOR A. Instrucţiuni Java Codul sursă de mai jos exemplifică modul de utilizare al instrucţiunilor din secţiunile I A, I B, I C. 1 import j a v a. u t i l. Scanner ; 2 3 public c l a s s T e s t I n t r u c t i u n i { 4 public s t a t i c void main ( String args [ ] ) { 5 Scanner s = new Scanner ( System. i n ) ; // cu a j u t o r u l a c e s t e i i n s t r u c t i u n i s e c i t e s t e t e x t de l a t a s t a t u r a 6 System. out. p r i n t l n ( " I n t r o d u c e t i un numar : " ) ; 7 int x = s. n e x t I n t ( ) ; // i n x s e va r e t i n e numarul t a s t a t 8 System. out. p r i n t l n ( " R e z u l t a t u l f u n c t i e i e s t e : " + t e s t ( x ) ) ; / s e a p e l e a z a metoda t e s t cu parametru x / 9 } 10 11 public s t a t i c int t e s t ( int x ) { 12 int suma = 0 ; // s e i n i t i a l i z e a z a v a r i a b i l a suma cu 0 13 f o r ( int i = 0 ; i < 4 ; i ++) { 14 System. out. p r i n t l n ( "Am i n t r a t i n n i v e l 1 " ) ; 15 int j = 0 ; 16 while ( j++ < x ) { // i n t a i s e e f e c t u e a z a e v a l u a r e a e x p r e s i e i j < x s i a b i a a p o i s e i n c r e m e n t e a z a v a r i a b i l a j 17 System. out. p r i n t l n ( "Am i n t r a t i n n i v e l 2 " ) ; 18 System. out. p r i n t l n ( " i= " + i + " ; j= " + j ) ; 19 switch ( i ) { 20 // i n c a z u l i n c a r e i =0, 1 sau 2 s e s a r e l a urmatorul pas s i s e i g n o r a r e s t u l i n s t r u c t i u n i l o r de dupa continue din c i c l u l curent ( while ) 21 case 0 : 22 continue ; 23 case 1 : 24 continue ; 25 case 2 : 26 continue ; 27 case 3 : // i n c a z u l i n c a r e i =3 s e a c t u a l i z e a z a suma s i a p o i s e i e s e f o r t a t d in s w i t c h 28 suma += i+j ; 29 break ; 30 } 31 } 32 System. out. p r i n t l n ( "Am i e s i t din n i v e l 2 " ) ; 5

33 } 34 System. out. p r i n t l n ( "Am i e s i t din n i v e l 1 " ) ; 35 return suma ; // s e i e s e f o r t a t din metoda t e s t 36 } 37 38 } B. Lucru cu şiruri de caractere Exemplul următor evidenţează caracterul imuabil pe care-l au obiectele de tip String. Se citeşte de la tastatură un şir de caractere şi se verifică dacă acesta coincide cu un alt şir de caractere. 1 import j a v a. u t i l. ; 2 public c l a s s CheckPassword { 3 public s t a t i c void main ( String args [ ] ) { 4 Scanner s = new Scanner ( System. in ) ; 5 S t r i n g password = " j a v a " ; 6 String userinput ; 7 System. out. p r i n t l n ( " Care e p a r o l a? " ) ; 8 u s e r I n p u t= s. next ( ) ; 9 10 System. out. p r i n t l n ( " Ai t a s t a t : " ) ; 11 System. out. p r i n t l n ( u s e r I n p u t ) ; 12 System. out. p r i n t l n ( " Dar p a r o l a e s t e : " ) ; 13 System. out. p r i n t l n ( password ) ; 14 15 // i f ( password. e q u a l s ( u s e r I n p u t ) ) { 16 i f ( password == u s e r I n p u t ) { 17 System. out. p r i n t l n ( " Ai t r e c u t mai d e p a r t e! " ) ; 18 } e l s e { 19 System. out. p r i n t l n ( "NU a i t r e c u t mai d e p a r t e! " ) ; 20 } 21 } 22 } Deşi variabila userinput ar conţine aceleaşi caractere ca variabila password, folosind operatorul == se va afişa textul de pe ramura else a instrucţiunii if. Acest lucru se întâmplă din cauza faptului că se compară adresele de memorie ale variabilelor şi nu conţinutul de la acele zone de memorie. Decomentaţi linia 15 şi comentaţi linia 16. acelaşi şir de caractere. Observaţi ce se intâmplă dacă variabilele conţin Următorul exemplu citeşte de la tastatură un şir de caractere şi înlocuieşte fiecare vocală întâlnită cu următorul caracter din alfabet. Acesta foloseşte clasa StringBuffer. 6

1 import j a v a. u t i l. Scanner ; 2 public c l a s s ReplaceVowel { 3 public s t a t i c void main ( String args [ ] ) { 4 Scanner s = new Scanner ( System. in ) ; 5 System. out. p r i n t l n ( " I n t r o d u c e t i c u v a n t u l : " ) ; 6 S t r i n g word = s. n e x t L i n e ( ) ; 7 System. out. p r i n t l n ( " Cuvantul r e z u l t a t e s t e : "+r e p l a c e V o w e l ( word. tolowercase ( ) ) ) ; 8 } 9 10 public s t a t i c boolean checkvowel ( char c ) { 11 c = C h a r a c t e r. tolowercase ( c ) ; 12 return ( " a e i o u ". indexof ( c ) >= 0) ; / s e r e t u r n e a z a t r u e daca metoda indexof a p l i c a t a s i r u l u i de 13 c a r a c t e r e " a e i o u " impreuna cu parametru c r e t u r n e a z a o v a l o a r e p o z i t i v a / 14 } 15 16 public s t a t i c String replacevowel ( String word ) { 17 S t r i n g B u f f e r sb = new S t r i n g B u f f e r ( word ) ; / v a r i a b i l a sb e s t e i n t i a l i z a t a cu v a l o a r e a 18 v a r i a b i l e i word / 19 f o r ( int i =0; i <sb. l e n g t h ( ) ; i ++){/ sb s e p a r c u r g e c a r a c t e r cu c a r a c t e r / 20 i f ( checkvowel ( sb. charat ( i ) ) ) {/ f i e c a r e c a r a c t e r a l l u i sb e s t e v e r i f i c a t daca e s t e v o c a l a / 21 sb. setcharat ( i, ( char ) ( sb. charat ( i ) +1) ) ; / s e pune pe p o z i t i a i i n sb urmatorul c a r a c t e r 22 din a l f a b e t / 23 } 24 } 25 return sb. t o S t r i n g ( ) ; 26 } 27 } III. TEMĂ 1. Rulaţi programele din secţiunea II. 2. Citiţi un şir de caractere de la tastatură. Folosind intrucţiunea switch, realizaţi un meniu pentru următoarele cerinţe: (a) să se afişeze lungimea şirului de caractere; (b) să se returneze ultima poziţie pe care se întâlneşte caracterul a ; (c) să se numere de câte ori apare în şirul de caractere secvenţa abc ; (d) să se verifce dacă şirul de caractere este palindrom. (e) să se şteargă toate caracterele de pe poziţiile pare. Implementaţi cerinţele de la punctele 2a pana la 2e. 7