Si të konfiguroni telefonat inteligjentë dhe PC. Portali informativ

Operatorët logjikë. Veprimet aritmetike

Operatorët logjikë punojnë vetëm me operandë si logjike... Të gjithë operatorët boolean me dy operandë kombinojnë dy vlera boolean për të formuar vlerën boolean që rezulton. Mos e ngatërroni me.

Tabela e operatorit Boolean në Java

Operatorët logjikë & , | , ^ zbatohen për vlerat e llojit logjike saktësisht e njëjtë si në lidhje me bitet e vlerave të numrave të plotë. Operator logjik ! përmbys (e kthen) gjendjen boolean: e vërtetë == e rreme dhe e gabuar == e vërtetë.

Tabela. Rezultatet logjike të operatorit

ABA | BA & bA ^ B!A
i rremëi rremëi rremëi rremëi rremëe vërtetë
e vërtetëi rremëe vërtetëi rremëe vërtetëi rremë
i rremëe vërtetëe vërtetëi rremëe vërtetëe vërtetë
e vërtetëe vërtetëe vërtetëe vërtetëi rremëi rremë

Shkurtuar Operatorët Boolean

Përveç operatorëve standardë DHE (&) dhe OSE (|) ka operatorë stenografi && dhe || .

Nëse shikoni tabelën, mund të shihni se rezultati i ekzekutimit të operatorit OSEështë e barabartë me e vërtetë e vërtetë, pavarësisht nga vlera e operandit B. Në mënyrë të ngjashme, rezultati i ekzekutimit të operatorit DHEështë e barabartë me i rremë kur vlera e operandit A është i rremë, pavarësisht nga vlera e operandit B. Rezulton se nuk kemi nevojë të llogarisim vlerën e operandit të dytë, nëse rezultati mund të përcaktohet tashmë nga operandi i parë. Kjo bëhet e dobishme në rastet kur vlera e operandit të djathtë varet nga vlera e të majtës.

Merrni parasysh shembullin e mëposhtëm. Le të themi se kemi futur një rregull - të ushqejmë ose jo macen, në varësi të numrit të minjve të kapur në javë. Për më tepër, numri i minjve varet nga pesha e maces. Sa më e madhe të jetë macja, aq më shumë ai duhet të kapë minj.

Macja, e cila lexoi gjendjen e problemit, u ofendua nga unë. Ai tha se isha prapa kohës, dhe në oborrin e shekullit të 21-të - minjtë mund të kapen me ndihmën e kurtheve të miut. Më duhej t'i shpjegoja se kjo është vetëm një detyrë, dhe jo një shembull nga jeta ime personale.

mouse Int; // numri i minjve në peshë; // pesha e maces në gram miu = 5; pesha = 4500; nëse (miu! = 0 & pesha / miu< 1000) { mInfoTextView.setText("Можно кормить кота"); }

Nëse e drejtoni programin, shembulli do të funksionojë pa probleme - pesë minj në javë janë të mjaftueshme për të përkëdhelur macen tuaj me një mëngjes të shijshëm. Nëse ai kap katër minj, atëherë do të fillojnë problemet me ushqimin e maces, por jo me programin - do të funksionojë, thjesht nuk do të shfaqë një mesazh për lejen për të ushqyer parazitin.

Tani le të marrim një rast skajor. Macja u përta dhe nuk kapi asnjë mi. Vlera e ndryshueshme miun do të jetë e barabartë me 0, dhe ka një operator ndarjeje në shprehje. Dhe nuk mund të pjesëtoni me 0 dhe programi ynë do të mbyllet me një gabim. Duket se ne kemi dhënë një opsion me 0, por Java vlerëson të dyja shprehjet miu! = 0 dhe pesha / miu< 1000 , pavarësisht se tashmë në shprehjen e parë kthehet i rremë.

Le ta rishkruajmë kushtin si më poshtë (shtoni vetëm një simbol):

Nëse (miu! = 0 && pesha / miu< 1000) { mInfoTextView.setText("Можно кормить кота"); }

Programi tani funksionon pa përplasje. Pasi Java pa që shprehja e parë po kthehej i rremë, atëherë shprehja e ndarjes së dytë thjesht shpërfillet.

Variantet e shkurtuara të operatorit DHE dhe OSE zakonisht përdoret në situata ku kërkohen operatorë Boolean, dhe kushërinjtë e tyre me një karakter përdoren për operacione bit.

Operator tresh

Gjuha Java ka gjithashtu një operator të veçantë të kushtëzuar tresh që mund të zëvendësojë disa lloje të operatorëve. nëse-atëherë-ndrysheështë operatori ?:

Operatori tresh përdor tre operandë. Shprehja shkruhet në formën e mëposhtme:

Gjendja Logjike? shprehja1: shprehja2

Nëse Kushti logjik barazohet e vërtetë, atëherë llogaritet shprehje 1 dhe rezultati i tij bëhet rezultat i ekzekutimit të të gjithë deklaratës. Nëse Kushti logjik barazohet i rremë, atëherë llogaritet shprehje2, dhe vlera e tij bëhet rezultat i punës së operatorit. Të dy operandët shprehje 1 dhe shprehje2 duhet të kthejë një vlerë të të njëjtit lloj (ose të përputhshëm).

Konsideroni një shembull në të cilin ndryshorja absval caktohet vlera absolute e ndryshores val.

Int absval, val; val = 5; absval = val< 0 ? -val: val; // выводим число mInfoTextView.setText("" + absval); val = -5; absval = val < 0 ? -val: val; mInfoTextView.setText("" + absval);

E ndryshueshme absval do të caktohet vlera e ndryshores val nëse vlera është më e madhe ose e barabartë me zero (pjesa e dytë e shprehjes). Nëse vlera e ndryshores val është negativ, pastaj ndryshorja absval caktohet vlera e ndryshores, e marrë me shenjën minus, si rezultat, minus për minus do të japë një plus, domethënë një vlerë pozitive. Le të rishkruajmë kodin duke përdorur nese Tjeter:

Nëse (val< 0) absval = -val; else absval = val;

Mund të shikoni një shembull tjetër me operatorin tresh.

Shumica e operacioneve në llojet primitive kryhen jo duke përdorur metoda, por duke përdorur karaktere speciale të quajtura shenjë operimi.

Operacioni i caktimit

Caktimi i një ndryshoreje të vlerës së një konstante, një ndryshoreje tjetër ose një shprehjeje (variabla dhe/ose konstante të ndara nga shenjat e funksionimit) quhet operacioni i caktimit dhe tregohet me shenjën " = ", për shembull: x = 3; y = x; z = x; Në Java, lejohet të ripërdoret operacioni i caktimit në një shprehje, për shembull: x1 = x2 = x3 = 0; Ky operacion kryhet nga e djathta në majtas, pra variablit x3 fillimisht i caktohet vlera 0, më pas x2 i caktohet vlera x3 (0) dhe së fundi x1 i caktohet vlera x2 (0). Shenjat e operacionit që përdorin numrat si argumente bien në dy kategori: unare shenja (unare) për operacione me një argument dhe binare(binare) me dy argumente.

Operacione unare

Operacionet unare të mëposhtme përcaktohen në Java:
  • unary minus "-" - ndryshon shenjën e një numri ose shprehje në të kundërtën;
  • unary plus "+" - nuk kryen asnjë veprim në një numër ose shprehje;
  • Komplementi në bit "~" (vetëm për numrat e plotë) - përmbys të gjitha bitet e fushës së numrave (ndryshon 0 në 1 dhe 1 në 0);
  • rritja "++" (vetëm për numrat e plotë) - rrit vlerën e ndryshores me 1;
  • zvogëlimi "-" (vetëm për numrat e plotë) - zvogëlon vlerën e ndryshores me 1.
Shembuj të veprimeve unare "+" dhe "-": int i = 3, j, k; j = - i; // j = -3 k = + i; // k = 3 Një shembull i një veprimi të komplementit bit: int a = 15; int b; b = ~ a; // b = -16 Numrat a dhe b janë int, d.m.th. përfaqësohen nga brenda si numra të plotë binarë të nënshkruar 32-bit, kështu që paraqitja binar e numrave a dhe b do të duket kështu: a = 00000000 00000000 00000000 00001111 b = 11111111 1111111110 mund t'i shihni të gjitha këto në 11111111111 numri a janë ndryshuar ato në b, dhe ato në a janë ndryshuar në zero bit. Paraqitja dhjetore e b është –16. Shenjat e funksionimit të rritjes dhe zvogëlimit mund të vendosen ose para ose pas ndryshores. Këto opsione janë emëruar në përputhje me rrethanat parashtesë dhe postfiks duke regjistruar këto operacione. Shenja e operatorit në shënimin e prefiksit kthen vlerën e operandit të saj pas duke vlerësuar një shprehje. Për shënimin postfiks, shenja e funksionimit së pari kthen vlerën e operandit të tij dhe vetëm pas kësaj llogarit rritjen ose zvogëlimin, për shembull: int x = 1, y, z; y = ++ x; z = x ++; Variablës y do t'i caktohet vlera 2, sepse fillimisht vlera e x do të rritet me 1, dhe më pas rezultati do t'i caktohet ndryshores y. Variablës z do t'i caktohet vlera 1, sepse fillimisht ndryshores z do t'i caktohet një vlerë dhe më pas vlera e x do të rritet me 1. Në të dyja rastet, vlera e re e x do të jetë 2. Duhet të theksohet se në Java, ndryshe nga C, operacionet e zvogëlimit dhe rritjes mund të aplikohen edhe për variablat realë (të tipeve float dhe dyfishtë). Shenjat e funksionimit binar ndahen në operacione me rezultat numerik dhe operacione krahasimi, rezultati i të cilave është një vlerë boolean.

Operacionet aritmetike binare

Java përcakton sa vijon operacionet binare aritmetike:
  • shtimi "+";
  • zbritja "-";
  • shumëzimi " * ";
  • ndarja "/";
  • duke llogaritur pjesën e mbetur të pjesëtimit të numrave të plotë "%" (kthimin e mbetur të pjesëtimit të numrit të parë me të dytin, dhe rezultati do të ketë të njëjtën shenjë si dividenti), për shembull, rezultati i veprimit 5% 3 do të jetë 2, dhe rezultati i veprimit (-7) % (- 4) do të jetë -3. Në Java, operacioni mund të përdoret gjithashtu për ndryshore reale (të tilla si float ose double).
Shembuj të veprimeve aritmetike binare: int x = 7, x1, x2, x3, x4, x5; x1 = x + 10; // x1 = 17 x2 = x - 8; // x2 = -1 x3 = x2 * x; // x3 = -7 x4 = x / 4; // x4 = 1 (kur ndahen numrat e plotë // pjesa e pjesshme është hedhur poshtë) x5 = x% 4 // x5 = 3 (mbetja e pjesëtimit// 7 nga 4)

Operacionet bitwise

  • Operacionet në bit trajtojnë vlerat numerike origjinale si fusha bit dhe bëjnë si më poshtë për to:
  • vendosja e bitit në i-pozicioni i 1-të i fushës së rezultatit, nëse të dy bitet janë in i-Pozicionet e operandeve janë të barabarta me 1, ose me 0, përndryshe - në bit AND ("&");
  • vendosja e bitit në i-pozicioni i saj i fushës së rezultatit në 1, nëse të paktën një bit in i Pozicioni i -të i operandëve është i barabartë me 1, ose me 0, përndryshe - OR ("|");
  • vendosja e bitit në i-pozicioni i 1-të i fushës së rezultatit, nëse bitat janë në i-Pozicionet e operandëve nuk janë të barabarta me njëri-tjetrin, ose me 0, përndryshe - ekskluzive OR ("^");
  • Zhvendosja majtas e biteve të fushës së operandit të parë nga numri i biteve të përcaktuar nga operandi i dytë (biti i shenjës së numrit nuk ndryshon në këtë rast) - zhvendosja në të majtë në të majtë, duke marrë parasysh shenjën "<< ";
  • zhvendosja në të djathtë të biteve të fushës së operandit të parë nga numri i biteve të përcaktuar nga operandi i dytë (biti i shenjës së numrit nuk ndryshon në këtë rast) - zhvendosja në të djathtë në të djathtë, duke marrë parasysh " >>" shenjë;
  • zhvendosja në të djathtë të biteve të fushës së operandit të parë nga numri i biteve të përcaktuar nga operandi i dytë (biti i shenjës së numrit zhvendoset gjithashtu në këtë rast) - zhvendosja në të djathtë në të djathtë pa marrë parasysh " >>>" shenjë.
Shembuj të operacioneve në bit:
  1. Bitwise DHE

    int x = 112; int y = 94; int z; z = x & y; // z = 80: 00000000 00000000 00000000 01010000
  2. Në mënyrë bitale OSE

    int x = 112; // x: 00000000 00000000 00000000 01110000 int y = 94; // y: 00000000 00000000 00000000 01011110 int z; z = x | y; // z = 126: 00000000 00000000 00000000 01111110
  3. OSE ekskluzive bitwise

    int x = 112; // x: 00000000 00000000 00000000 01110000 int y = 94; // y: 00000000 00000000 00000000 01011110 int z; z = x ^ y; // z = 46: 00000000 00000000 00000000 00101110
  4. Zhvendosni majtas, duke marrë parasysh shenjën

    int x = 31, z; // x: 00000000 00000000 00000000 00011111 z = x<< 2 ; // z = 124: 00000000 00000000 00000000 01111100
  5. Zhvendosni djathtas, duke marrë parasysh shenjën

    int x = - 17, z; z = x >> 2; // z = -5: 11111111 11111111 11111111 11111011
  6. Zhvendosni djathtas pa marrë parasysh shenjën

    int x = - 17, z; // x: 11111111 11111111 11111111 11101111 z = x >>> 2; // z = 1073741819 // z: 00111111 11111111 11111111 11111011

Operacione të kombinuara

Në Java, për operacione aritmetike binare, mund të përdorni të kombinuara Shenjat e operacionit (të përbëra): operacioni identifikues = shprehje Kjo është ekuivalente me operacionin e mëposhtëm: identifikues = shprehje e veprimit identifikues Shembuj:
  1. Shprehja x + = b do të thotë x = x + b.
  2. Shprehja x - = b do të thotë x = x - b.
  3. Shprehja x * = b do të thotë x = x * b.
  4. Shprehja x / = b do të thotë x = x / b.
  5. Shprehja x% = b do të thotë x = x% b.
  6. Shprehja x & = b do të thotë x = x & b.
  7. Shprehja x | = b do të thotë x = x | b.
  8. Shprehja x ^ = b do të thotë x = x ^ b.
  9. Shprehja x<<= b означает x = x << b .
  10. Shprehja x >> = b do të thotë x = x >> b.
  11. Shprehja x >>> = b do të thotë x = x >>> b.

Operacionet e krahasimit

Java përcakton operatorët e mëposhtëm krahasimi:
  • "==" (e barabartë), "! =" (jo e barabartë),
  • ">" (më e madhe se), "> =" (më e madhe ose e barabartë),
  • " < " (меньше) " <= " (меньше или равно)
kanë dy operandë dhe kthejnë një vlerë boolean që korrespondon me rezultatin e krahasimit ( i rremë ose e vërtetë). Vini re se kur krahasoni dy vlera për barazinë në Java, si në C dhe C ++, simbolet " == "(dy shenja të barabarta pa hapësirë), në ndryshim nga operatori i caktimit, i cili përdor "" = ". Përdorimi i simbolit" = "kur krahason dy vlera ose shkakton një gabim përpilimi ose prodhon një rezultat të pasaktë. Shembuj të operacioneve të krahasimit: boolean është e barabartë, nuk është e barabartë, është më e madhe, është më e madheOrE barabartë, është më e vogël, është më pakOrE barabartë; int x1 = 5, x2 = 5, x3 = 3, x4 = 7; është e barabartë = x1 == x2; // është e barabartë = e vërtetë nuk është e barabartë = x1 = x2; // nuk është e barabartë = false është më e madhe = x1> x3; // është më i madh = i vërtetë // është më i madh ose i barabartë = i vërtetë është më i madh ose i barabartë = x2> = x3; është më pak = x3< x1; // isLess = true isLessOrEqual = x1 <= x3; // isLessOrEqual = false

Operacionet Boolean

Operacionet Boolean ekzekutohen në variablat boolean dhe rezultati i tyre është gjithashtu një vlerë e tipit logjike... Operacionet boolean të mëposhtme përcaktohen në Java:
  • mohim "!" - zëvendësimi i falsifikuar me të vërtetën, ose anasjelltas;
  • DHE operacioni "&" - rezultati është i vërtetë vetëm nëse të dy operandët janë të vërtetë, përndryshe rezultati është i rremë;
  • OSE operacion "|" - rezultati është i vërtetë vetëm nëse të paktën një nga operandët është i vërtetë, përndryshe rezultati është i rremë.
  • Operacioni XOR "^" - rezultati është i vërtetë vetëm nëse operandët nuk janë të barabartë me njëri-tjetrin, përndryshe rezultati është i rremë.
Operatorët "&", "|" dhe "^" mund të përdoren, si dhe operatorët përkatës në bit, në operatorët e caktimit të përbërë: "& =", "| =" dhe "^ =" Përveç kësaj, operacionet " = janë të zbatueshme për operandët Boolean. = "(e barabartë) dhe"! = "(jo e barabartë). Siç mund ta shihni nga përkufizimi i OR dhe AND, operacioni OR vlerësohet në true kur operandi i parë është i vërtetë, pavarësisht nga vlera e operandit të dytë, dhe operatori AND vlerëson false kur operandi i parë është false, pavarësisht vlera e operandit të dytë. Java përcakton dy operacione të tjera boolean: versioni i dytë i AND dhe OR, i njohur si operacione logjike të qarkut të shkurtër: i shkurtër AND "&&" dhe i shkurtër OR "||". Gjatë përdorimit të këtyre operacioneve, operandi i dytë nuk do të vlerësohet fare, gjë që është e dobishme në rastet kur funksionimi i saktë i operandit të djathtë varet nga fakti nëse operandi i majtë është i vërtetë apo i gabuar. Shembuj të operacioneve boolean: boolean isInRange, isValid, isNotValid, isEqual, isNotEqual; int x = 8; isInRange = x> 0 && x< 5 ; // isInRange = false isValid = x >0 || x> 5; // isValid = e vërtetë ështëNotValid =! eshte e vlefshme; // isNotValid = false është e barabartë = ështëInRange == është Valid; // isEqual = false // isNotEqual = e vërtetë ështëNotEqual = ështëInRange! = është e vlefshme

Operacioni i kushtëzuar

Një veprim i kushtëzuar shkruhet në formën shprehje-1?Shprehje-2: shprehje-3. Në këtë rast, shprehja-1 vlerësohet fillimisht, e cila duhet të japë një vlerë boolean, dhe më pas, nëse shprehja-1 është e vërtetë, shprehja-2 vlerësohet dhe kthehet si rezultat i operacionit, ose (nëse shprehja-1 është false ), dhe shprehja-3 kthehet si rezultat i operacionit. Një shembull i një operacioni të kushtëzuar: x = n> 1? 0: 1; Variablës x do t'i caktohet vlera 0 nëse n> 1 (shprehja n> 1 vlerësohet me e vërtetë) ose 1 nëse n≤1 (shprehja n> 1 vlerësohet në false).

Vjetërsia e operacioneve

Veprimet në shprehje kryhen nga e majta në të djathtë, megjithatë, sipas përparësisë së tyre. Pra, veprimet e shumëzimit në shprehjen y = x + z * 5; do të ekzekutohet para veprimit të mbledhjes sepse përparësia e veprimit të shumëzimit është më e lartë se përparësia e veprimit të mbledhjes. Prioritetet e funksionimit (sipas uljes së prioritetit) në Java janë paraqitur në tabelë. një.
Kllapat rrisin përparësinë e operacioneve që janë brenda tyre. Pra, nëse futni kllapa në shprehjen e mësipërme: y = (x + z) * 5; atëherë fillimisht do të kryhet veprimi i mbledhjes dhe më pas operacioni i shumëzimit. Ndonjëherë kllapat përdoren thjesht për ta bërë shprehjen më të lexueshme, për shembull: (x> 1) && (x<= 5 ) ;

Konvertimi i llojit dhe derdhja gjatë kryerjes së operacioneve

Në caktimet dhe shprehjet aritmetike mund të përdoren fjalë për fjalë, variabla dhe shprehje të llojeve të ndryshme, p.sh.: double y; bajt x; y = x + 5; Ky shembull shton ndryshoren e bajtit x në 5 (int), dhe ia cakton rezultatin ndryshores së dyfishtë y. Në Java, si në gjuhën C, konvertimet e tipit në vlerësimin e shprehjeve mund të kryhen automatikisht, ose duke përdorur një operator cast. Megjithatë, rregullat e hedhjes janë disi të ndryshme nga ato të gjuhës C dhe në përgjithësi janë më strikte se në gjuhën C. Kur kryeni një operacion caktimi, konvertimi i tipit ndodh automatikisht nëse transformimi i zgjeruar(konvertimi i zgjerimit) dhe të dy llojet janë të pajtueshme... Transformimet zgjeruese janë transformime bajt® shkurt® ndër® gjatë® noton® dyfishtë... Për zgjerimin e konvertimeve, llojet numerike, duke përfshirë numrin e plotë dhe pikën lundruese, janë të pajtueshme me njëri-tjetrin. Megjithatë, llojet numerike nuk janë të pajtueshme me llojet char dhe boolean. Llojet char dhe boolean nuk janë as në përputhje me njëri-tjetrin. Java gjithashtu kryen konvertimin automatik të tipit kur ruan një konstante të numrit të plotë literal (e cila është e tipit int si parazgjedhje) në variabla të tipit bajt, të shkurtër ose të gjatë (megjithatë, nëse literali ka një vlerë jashtë gamës së vlerave të vlefshme për këtë lloji, shfaqet një mesazh gabimi: humbje e mundshme e saktësisë). Nëse konvertimi është një konvertim ngushtues, d.m.th., një konvertim kryhet bajt ¬ shkurt ¬ char ¬ int ¬ gjatë ¬ noton ¬ dyfish, atëherë një konvertim i tillë mund të çojë në humbje të saktësisë ose shtrembërim të numrit. Prandaj, me ngushtimin e konvertimeve, kur programi kompilohet, shfaqet një mesazh diagnostikues për papajtueshmërinë e tipit dhe skedarët e klasës nuk krijohen. Ky mesazh do të shfaqet gjithashtu kur përpiqeni të konvertoni shprehjet e tipit byte ose short në një variabël të tipit char. Nëse megjithatë është e nevojshme të kryhen konvertime të tilla, përdoret një operacion cast, i cili ka formatin e mëposhtëm: ( lloji i konvertimit) kuptimi, ku lloji i konvertimit përcakton llojin në të cilin duhet të konvertohet e dhëna kuptimi, për shembull, si rezultat i ekzekutimit të operatorëve: bajt x = 71; simboli char = (char) x; ndryshorja e simbolit do të vendoset në "G". Nëse një vlerë me pikë lundruese i caktohet një lloji të plotë, atëherë (nëse vlera e pikës lundruese ka një pjesë të pjesshme), ndodh gjithashtu një konvertim i qartë i tipit cungim(prerje) numrat. Pra, si rezultat i ekzekutimit të operatorit int x = (int) 77.85; ndryshorja x do të vendoset në 77. Nëse vlera e caktuar është jashtë kufijve konvertimet e tipit , atëherë rezultati i konvertimit do të jetë pjesa e mbetur e pjesëtimit të vlerës me modulin e diapazonit të llojit të caktuar (për numrat e tipit bajt, moduli i diapazonit do të jetë 256, shkurt - 65536, për int - 4294967296 , dhe për një kohë të gjatë - 18446744073709551616). Për shembull, si rezultat i deklaratës byte x = (byte) 514; ndryshorja x do të vendoset në 2. Kur konvertoni numra të plotë ose numra realë në të dhëna të tipit char, shndërrimi në një karakter ndodh nëse numri origjinal është në intervalin nga 0 në 127, përndryshe karakteri merr vlerën "?". Kur kryeni konvertime aritmetike dhe bit, të gjitha vlerat e bajtit dhe të shkurtër, si dhe char, zgjerohen në int, (ndërsa vlera numerike e kodit të karakterit përdoret në llogaritjet për char) atëherë, nëse të paktën një operand është i llojit të gjatë , lloji i shprehjes së numrit të plotë zgjerohet në të gjatë. Nëse njëri prej operandëve është i tipit float, atëherë lloji i shprehjes së plotë zgjerohet në float, dhe nëse njëri prej operandëve është i tipit double, atëherë lloji i rezultatit do të jetë i dyfishtë. Pra, nëse variablat deklarohen bajt a, c; i shkurtër b; pastaj në shprehjen a + b * c - 15 L + 1,5F + 1,08 - 10; së pari, përpara se të llogaritet a + b * c, vlerat e variablave do të zgjerohen në int, më pas, meqenëse konstantja 15 është e llojit të gjatë, rezultati i llogaritjes do të rritet në shumë kohë përpara zbritjes. Pas kësaj, duke qenë se literali 1.5 është i tipit float, rezultati i llogaritjes së a + b * c - 15L do të zgjerohet në float përpara se të shtohet në këtë literal. Përpara se të kryeni mbledhjen me numrin 1.08, rezultati i llogaritjeve të mëparshme do të zgjerohet në dyfish (pasi konstantat reale janë të tipit double si parazgjedhje) dhe, së fundi, përpara se të kryeni mbledhjen e fundit, do të jetë literal 10 (int si parazgjedhje). zgjeruar në dyfish. Kështu, rezultati i vlerësimit të shprehjes do të jetë i tipit double. Shtesat automatike të tipit (veçanërisht shtesat e shkurtra dhe bajt në int) mund të shkaktojnë gabime të njohura keq në kohën e përpilimit. Për shembull, në operatorët: bajt x = 30, y = 5; x = x + y; përpara se të kryhet mbledhja, vlera e variablave x dhe y do të zgjerohet në int dhe më pas do të shfaqet një mesazh gabimi kur tentohet të caktohet rezultati i një llogaritjeje të tipit int në një variabël të tipit byte. Për të shmangur këtë është e nevojshme të përdoret një konvertim i qartë i tipit në operatorin e dytë: x = (byte) (x + y); Ju duhet të vendosni shprehjen x + y në kllapa sepse përparësia e castit të mbyllur në kllapa është më e lartë se përparësia e veprimit të mbledhjes. Meqë ra fjala, nëse e shkruani operatorin e dytë si: x + = y; nuk do të ketë mesazh gabimi. Lidhja me të parën

Përditësimi i fundit: 30.10.2018

Shumica e operacioneve në Java janë të ngjashme me ato të përdorura në gjuhë të tjera të ngjashme me C-në. Ekzistojnë operacione unare (të kryera në një operand), operacione binare në dy operandë dhe operacione treshe në tre operandë. Një operand është një ndryshore ose vlerë (për shembull, një numër) i përfshirë në një operacion. Le të shqyrtojmë të gjitha llojet e operacioneve.

Ata marrin pjesë në veprimet aritmetike me numra. Java ka operacione aritmetike binare (të kryera në dy operandë) dhe unare (të kryera në një operand). Operacionet binare përfshijnë si më poshtë:

    Operacioni i mbledhjes së dy numrave:

    Int a = 10; int b = 7; int c = a + b; // 17 int d = 4 + b; // njëmbëdhjetë

    veprim i zbritjes së dy numrave:

    Int a = 10; int b = 7; int c = a - b; // 3 int d = 4 - a; // -6

    veprimi i shumëzimit të dy numrave

    Int a = 10; int b = 7; int c = a * b; // 70 int d = b * 5; // 35

    Veprimi i ndarjes së dy numrave:

    Int a = 20; int b = 5; int c = a / b; // 4 dyfishtë d = 22,5 / 4,5; // 5.0

    Vlen të merret në konsideratë kur ndahet, pasi nëse dy numra të plotë përfshihen në operacion, rezultati i ndarjes do të rrumbullakoset në një numër të plotë, edhe nëse rezultati i caktohet një ndryshoreje float ose të dyfishtë:

    K dyfishtë = 10/4; // 2 System.out.println (k);

    Që rezultati të jetë një numër me pikë lundruese, një nga operandët duhet gjithashtu të përfaqësojë një numër me pikë lundruese:

    K dyfishtë = 10.0 / 4; // 2.5 System.out.println (k);

    Marrja e mbetjes nga pjesëtimi i dy numrave:

    Int a = 33; int b = 5; int c = a% b; // 3 int d = 22% 4; // 2 (22 - 4 * 5 = 2)

Ekzistojnë gjithashtu dy veprime aritmetike unare që kryhen në të njëjtin numër: ++ (rritje) dhe - (zvogëlim). Secili prej operacioneve ka dy lloje: prefiks dhe postfiks:

    ++ (rritja e prefiksit)

    Supozon rritjen e ndryshores me një, për shembull, z = ++ y (së pari, vlera e ndryshores y rritet me 1, dhe më pas vlera e saj i caktohet ndryshores z)

    Int a = 8; int b = ++ a; System.out.println (a); // 9 System.out.println (b); // 9

    ++ (rritje pas fiksimit)

    Gjithashtu përfaqëson një rritje në një ndryshore me një, për shembull, z = y ++ (së pari, vlera e y i caktohet z, dhe më pas vlera e y rritet me 1)

    Int a = 8; int b = a ++; System.out.println (a); // 9 System.out.println (b); // tetë

    - (zvogëlimi i prefiksit)

    duke ulur variablin me një, për shembull, z = - y (së pari, vlera e ndryshores y zvogëlohet me 1, dhe më pas vlera e saj i caktohet ndryshores z)

    Int a = 8; int b = --a; System.out.println (a); // 7 System.out.println (b); // 7

    - (zvogëlim i postfiksit)

    z = y-- (së pari, vlera e ndryshores y i caktohet ndryshores z, dhe më pas vlera e ndryshores y zvogëlohet me 1)

    Int a = 8; int b = a--; System.out.println (a); // 7 System.out.println (b); // tetë

Prioriteti aritmetik

Disa operacione kanë përparësi ndaj të tjerave dhe për këtë arsye kryhen së pari. Operacionet sipas rendit në ulje të prioritetit:

++ (rritje), - (zvogëlim)

* (shumëzimi), / (pjestimi),% (mbetja e pjesëtimit)

+ (mbledhje), - (zbritje)

Prioriteti i veprimeve duhet të merret parasysh kur ekzekutoni një grup shprehjesh aritmetike:

Int a = 8; int b = 7; int c = a + 5 * ++ b; System.out.println (c); // 48

Së pari, do të kryhet operacioni i rritjes ++ b, i cili ka një prioritet më të madh - do të rrisë vlerën e ndryshores b dhe do ta kthejë atë si rezultat. Pastaj kryhet shumëzimi 5 * ++ b, dhe vetëm mbledhja e fundit është a + 5 * ++ b

Kllapat ju lejojnë të ripërcaktoni rendin e llogaritjeve:

Int a = 8; int b = 7; int c = (a + 5) * ++ b; System.out.println (c); // 104

Pavarësisht se veprimi i mbledhjes ka prioritet më të ulët, së pari do të kryhet mbledhja dhe jo shumëzimi, pasi veprimi i mbledhjes është i mbyllur në kllapa.

Asociativiteti i operacioneve

Përveç përparësisë, operacionet dallohen nga një koncept i tillë si asociativiteti... Kur operacionet kanë të njëjtën përparësi, radha e vlerësimit përcaktohet nga shoqëria e operatorëve. Ekzistojnë dy lloje të operatorëve në varësi të asociativitetit:

    Operatorët shoqërues të majtë që ekzekutojnë nga e majta në të djathtë

    Operatorët shoqërues të djathtë që ekzekutojnë nga e djathta në të majtë

Për shembull, disa veprime, të tilla si shumëzimi dhe pjesëtimi, kanë të njëjtin prioritet. Cili do të jetë atëherë rezultati në shprehjen:

Int x = 10/5 * 2;

A duhet ta interpretojmë këtë shprehje si (10/5) * 2 apo si 10 / (5 * 2)? Në të vërtetë, në varësi të interpretimit, do të marrim rezultate të ndryshme.

Meqenëse të gjithë operatorët aritmetikë (përveç shtimit dhe zvogëlimit të parashtesave) lihen asociativë, domethënë ekzekutohen nga e majta në të djathtë. Prandaj, shprehja 10/5 * 2 duhet të interpretohet si (10/5) * 2, domethënë, rezultati do të jetë 4.

Operacionet me pikë lundruese

Duhet të theksohet se numrat me pikë lundruese nuk janë të përshtatshëm për llogaritjet financiare dhe të tjera ku gabimet e rrumbullakimit mund të jenë kritike. Për shembull:

Dyfishtë d = 2,0 - 1,1; System.out.println (d);

Në këtë rast, ndryshorja d nuk do të jetë e barabartë me 0.9, siç mund të supozohet fillimisht, por 0.8999999999999999. Gabimet e saktësisë si ky ndodhin sepse sistemi binar përdoret në një nivel të ulët për të përfaqësuar numrat me pikë lundruese, por nuk ka paraqitje binar për 0.1, si dhe për vlera të tjera thyesore. Prandaj, nëse në raste të tilla, zakonisht përdoret klasa BigDecimal, e cila ju lejon të anashkaloni situata të tilla.

Shënime leksionesh Java. Sesioni 4

(asnjë) (asnjë) ::
(asnje)
(V. Fesyunov)

Operatorët Java

Shumica e operacioneve Java janë të thjeshta dhe intuitive. Këto janë operacione të tilla si +, -, *, /,<,>dhe të tjera.Operacionet kanë radhën e tyre të ekzekutimit dhe prioritetet. Pra në shprehje

fillimisht kryhet shumëzimi dhe më pas mbledhja, pasi shumëzimi ka përparësi më të madhe se mbledhja. Në shprehje

fillimisht llogaritet a + b, dhe më pas c zbritet nga rezultati, pasi rendi i këtyre veprimeve është nga e majta në të djathtë.

Por operacionet Java kanë veçoritë e tyre. Pa hyrë në një përshkrim të hollësishëm të operacioneve më të thjeshta, le të ndalemi në veçoritë.

Le të fillojmë me detyrat... Ndryshe nga një numër i gjuhëve të tjera programimi në Java, caktimi nuk është një operator, por një operacion. Semantika e këtij operacioni mund të përshkruhet si më poshtë.

  • Operacioni i caktimit shënohet me simbolin "=". Ai llogarit vlerën e operandit të tij të djathtë dhe ia cakton operandit të majtë, dhe si rezultat kthen vlerën e caktuar. Kjo vlerë mund të përdoret nga operacione të tjera. Një sekuencë e disa detyrave kryhet nga e djathta në të majtë.

Në rastin më të thjeshtë, gjithçka duket si zakonisht.

Këtu ndodh pikërisht ajo që nënkuptojmë intuitivisht - llogaritet shuma e a dhe b, rezultati futet në x. Por këtu janë dy shembuj të tjerë.

Në të parën, së pari 1 futet në b, rezultati i operacionit është 1, pastaj ky rezultat futet në a. Në shembullin e dytë, shuma e a dhe b llogaritet dhe rezultati humbet. Është e pakuptimtë, por sintaksisht e vlefshme.

Operacionet e krahasimit

Këto janë operacione>,<, >=, <=, != и ==. Следует обратить внимание, что сравнение на равенство обозначается двумя знаками "=". Операндами этих операций могут быть арифметические данные, результат — типа boolean.

Operacionet e rritjes, zvogëlimit

Këto janë operacione ++ dhe -. Pra, y ++ (rritje) është stenografi për y = y +1, në mënyrë të ngjashme me veprimin e zvogëlimit (-).

Por ka një hollësi me këto operacione. Ato vijnë në dy forma, parashtesa (++ y) dhe pasfiks (y ++). Efekti i këtyre operacioneve është i njëjtë - ato rrisin (veprimet e zvogëlimit - zvogëlojnë) operandin e tyre me 1, por rezultati i tyre është i ndryshëm. Forma e prefiksit si rezultat jep vlerën e operandit tashmë të ndryshuar me 1, dhe forma e pasfiksit jep vlerën e operandit përpara ndryshimit.

A = 5; x = a ++; y = ++ a;

Në këtë fragment, x do të vendoset në 5 dhe y në 7.

Operacioni i ndarjes së numrave të plotë

Duhet pasur parasysh se pjesëtimi i një tërësie me një tjetër prodhon një të tërë dhe nuk rrumbullakoset, por e hedh poshtë pjesën thyesore.

Pjesa e mbetur e ndarjes (vlera e modulit)

Java ka operatorin%, i cili tregon pjesën e mbetur të një ndarjeje.

Operacionet e caktimit të zgjeruar

Përveç operacionit të zakonshëm "=" në Java, ekzistojnë operacione + =, - =, * =, / =, etj. Këto janë shënime stenografike. Pra, a + = b është plotësisht ekuivalente me a = a + b. Në mënyrë të ngjashme, me operacione të tjera të tilla.

Operacionet logjike

! - mohim && - logjik "dhe" || - logjike "ose"

Operandët e këtyre operacioneve duhet të jenë të tipit boolean, rezultati është boolean. && dhe || kanë një veçori - operandi i tyre i djathtë mund të mos llogaritet nëse rezultati dihet tashmë nga operandi i majtë. Pra, nëse operandi i majtë i operacionit && është false, atëherë operandi i djathtë nuk do të llogaritet, pasi rezultati është ende i rremë.

Kjo veçori duhet të merret parasysh, veçanërisht kur operandi i djathtë përmban një thirrje për ndonjë funksion.

Operacione logjike bitwise

Këto janë operacione

& - bit "dhe" | - bitwise "or" ^ - bitwise "exclusive or" ~ - bitwise mohim

Ato ekzekutohen për çdo palë bit të operandëve të tyre.

Operacionet e ndërrimit

<< — сдвиг влево >> - zhvendosje djathtas >>> - zhvendosje e panënshkruar djathtas

Këto operacione zhvendosin vlerën e operandit të tyre të majtë me numrin e biteve të specifikuara nga operandi i djathtë.

Operacioni i kushtëzuar

Ky është i vetmi operacion tresh, d.m.th. një operacion që ka tre operandë. Prandaj, jo një shenjë operacioni përdoret për të, por dy.

<условие> ? <выражение1> : < выражение2>

Nëse<условие>është e vërtetë, rezultati është< выражение1>, ndryshe< выражение2>.

Për shembull, "a< b ? a: b" вычисляет минимум из a и b.

Operacioni i derdhjes

Ky është një operacion shumë i rëndësishëm. Si parazgjedhje, të gjitha konvertimet që mund të çojnë në probleme janë të ndaluara në Java. Pra, nuk mund t'i caktoni një vlerë të gjatë një operandi int. Në rastet kur është ende e nevojshme, duhet të vendosni një konvertim të qartë të llojit.

Për shembull, supozoni se metoda f (...) kthehet gjatë.

int x = (int) f (10);

Këtu (int) është një operacion i konvertimit të tipit. Një operacion i konvertimit të tipit tregohet me emrin e tipit të mbyllur në kllapa.

Ky operacion zbatohet jo vetëm për llojet bazë, por edhe për klasat. Ne do ta hedhim një vështrim më të afërt në këtë kur të shohim trashëgiminë.

Literale (konstante)

Aritmetika

Shembuj të konstantave aritmetike

10 - 010 është 8 - 0123 është 83 (1 * 64 + 2 * 8 + 3) - 0x10 është 16 - 0x123 është 291 (1 * 256 + 2 * 16 +3) - 1e5 është 100000 - 3 është 1,23 e-.

Për të treguar llojin e një konstante, përdoren prapashtesa: l (ose L) - e gjatë, f (ose F) - noton, d (ose D) - dyfish. Për shembull,

1L është një, por e tipit të gjatë.

Literale Boolean

Literalet Boolean janë të vërteta dhe të rreme

Literalet e vargut

Shkruhen me thonjëza të dyfishta, për shembull

"Kjo është një varg"

Fjalë për fjalë karaktere

Ato shkruhen me apostrofa, për shembull "F", "w".

Në fjalë për fjalë vargjet dhe karakteret, ka rregulla për të shkruar speciale. personazhet. Së pari, ekziston një grup specialesh të paracaktuara. personazhet. Kjo

- "\ n" - fundi i rreshtit (ushqimi i linjës) - "\ r" - kthimi i karrocës - "\ t" - skeda

dhe një sërë të tjerash.

Së dyti, ju mund të shkruani në mënyrë eksplicite kodin e karakterit (ju vetëm duhet ta dini atë). Kodi zakonisht shkruhet në sistemin oktal: "\ 001" është një karakter me kodin 1, etj.

Deklaratat

Operatori - Shprehje

Sintaksë

<выражение>;

Një operator i tillë përbëhet nga një shprehje, në fund është ";". Veprimi i tij është të vlerësojë shprehjen, vlera e llogaritur nga kjo shprehje humbet. ato. zakonisht një shprehje e tillë përmban një operator caktimi, megjithëse kjo nuk kërkohet nga sintaksa.

A = 0; x = (a> b? a: b); cnt ++;

Deklaratë e kushtëzuar (nëse)

Sintaksë

nese (<условие>) <оператор1>

Këtu<условие>Është një shprehje logjike, d.m.th. një shprehje që kthen true ose false. Siç mund ta shihni nga sintaksa, pjesa tjetër është fakultative. Ka një operator pas if-it dhe pas tjetrit. Nëse keni nevojë të vendosni disa operatorë atje, atëherë duhet të vendosni bllokoj . Blloko fillon me "(" dhe mbaron me ")".

Në Java, është zakon të vendosni gjithmonë një bllok, edhe nëse ka një deklaratë pas if ose else.

Nëse (a> b) (x = a;) tjetër (x = b;) nëse (flamur) (flamur = false; init ();)

Në shembullin e fundit, flamuri është një variabël ose fushë boolean, init () është një metodë e quajtur nëse flamuri është i vërtetë (ata thonë "nëse flamuri është vendosur").

Deklarata e kthimit (e parë tashmë)

Operatori i ciklit sipas parakushtit (ndërsa)

Sintaksë

Derisa (<условие>) <оператор>

Ashtu si me deklaratën if, është e zakonshme në Java<оператор>mbyllni në mbajtëse kaçurrelë.

Int i = 0; ndërsa (më shumë) (x / = 2; më shumë = (++ i< 10); }

Në këtë shembull, më shumë duhet të jetë një ndryshore ose fushë boolean, x disa ndryshore ose fushë aritmetike. Cikli kryhet 10 herë.

Operatori i ciklit pas gjendjes (bëj ndërkohë)

Sintaksë

Bëni<оператор>derisa (<условие>);

Operatori i ciklit sipas kushtit postar ndryshon nga operatori i ciklit sipas parakushteve vetëm në atë që përsëritja e ciklit ekzekutohet gjithmonë në të të paktën një herë, ndërsa në operatorin parakusht mund të mos ketë një përsëritje të vetme të ciklit (nëse kushti është menjëherë false).

Int i = 0; bëj (x \ = 2; më shumë = (++ i< 10); } while (more);

Operatori i ciklit numërues (për)

Sintaksë

per (<инициализация>; <условие>; <инкремент>) <оператор>

Kreu i një cikli të tillë përmban tre shprehje (në rastin më të thjeshtë). Nga emri i operatorit mund të kuptohet se shërben për organizimin e një cikli me sportel. Prandaj shprehja<инициализация>ekzekutohet një herë përpara përsëritjes së parë të ciklit. Pas çdo përsëritjeje të ciklit, shprehja ekzekutohet<инкремент>dhe më pas shprehja<условие>... Shprehja e fundit duhet të jetë logjike dhe përdoret për të vendosur kushtin për vazhdimin e ciklit. ato. për sa kohë që është e vërtetë, cikli do të vazhdojë të qarkullojë.

Për lehtësinë e kompozimit të operatorëve të lakut me një numërues, në këtë ndërtim janë futur shumë zgjerime.

  • <инициализация>mund të mos jetë një shprehje, por një përshkrim me inicializim të tipit "int i = 0".
  • <инициализация>mund të jetë një listë shprehjesh e ndarë me presje, të tilla si "i = 0, r = 1".
  • <инкремент>mund të jetë gjithashtu një listë shprehjesh, për shembull, "i ++, r * = 2"
  • Të gjithë komponentët (<инициализация>, <условие>dhe<инкремент>) janë opsionale. Për të shprehur<условие>kjo do të thotë që kushti konsiderohet gjithmonë i vërtetë (d.m.th. dalja nga cikli duhet të organizohet me disa mjete brenda vetë ciklit).

ato. le të themi ciklin e mëposhtëm (lak i pafund):

Për (;;) (...)

Për (int i = 0; i< 10; i++) x /=2;

Ky është zbatimi më "ekonomik" i lakut nga shembujt e mëparshëm.

Thyejeni dhe vazhdoni deklaratat

Nuk ka deklarata goto në Java. Siç e dini, goto çon në programe të pastrukturuara. Deklaratat e ndërprerjes dhe vazhdimit janë analoge të strukturuara të goto.

Ato mund të përdoren në sythe, dhe break mund të përdoret gjithashtu në një deklaratë switch. Ekzekutimi i deklaratës break bën që cikli të përfundojë menjëherë. Deklarata e vazhdimit shkakton fundin e përsëritjes aktuale të ciklit dhe fillimin e një të reje. Në këtë rast, kontrolli i gjendjes kryhet ende, kështu që vazhdimi mund të shkaktojë edhe fundin e lakut.

Për (int i = 0;; i ++) (nëse (vetëm tek && i% 2 == 0) vazhdon; y = (x + 1) / x; nëse (y - x< 0.001) break; x = y; }

Këtu oddOnly është një variabël boolean. Nëse është vendosur, atëherë të gjitha përsëritjet e ciklit me numra çift anashkalohen duke përdorur deklaratën vazhdim;

Kushti i përfundimit të ciklit në këtë shembull kontrollohet në mes të ciklit dhe nëse plotësohet, cikli përfundon duke përdorur deklaratën break.

Me unazat e mbivendosura, deklaratat e ndërprerjes dhe vazhdimit mund t'i referohen jo vetëm lakut në të cilin ndodhen, por edhe ciklit mbyllës. Për ta bërë këtë, deklarata e ciklit mbyllës duhet të shënohet me një etiketë, e cila duhet të specifikohet në deklaratën e ndërprerjes ose vazhdimit. Për shembull,

Lbl: ndërsa (...) (... Për (...) (... Nëse (...) thyej lbl;)...)

Këtu, deklarata e ndërprerjes do të bëjë që cikli for dhe cikli while të përfundojnë.

Deklarata e përzgjedhjes (ndërprerës)

Shërben për të organizuar një përzgjedhje sipas disa vlerave të një prej disa degëve të ekzekutimit.

Sintaksë

Ndërro (<выражение>) (rast<константа1>: <операторы1>rast<константа2>: <операторы2> . . . }

Shprehja duhet të kthejë një vlerë të plotë ose karakteri, dhe konstantat duhet të jenë të të njëjtit lloj si vlera e kësaj shprehjeje.

Elementet e rastit<константа>: "janë etiketa kërcimi, nëse vlera e shprehjes përkon me një konstante, atëherë do të bëhet një kërcim në këtë emërtim. Nëse vlera e shprehjes nuk përputhet me asnjë nga konstantet, atëherë gjithçka varet nga prania e fragmentit të paracaktuar. Nëse ajo është, atëherë kalimi ndodh në etiketën e paracaktuar nëse jo, atëherë i gjithë deklarata e switch-it anashkalohet.

  • Në një deklaratë switch, fragmentet e rastit nuk formojnë asnjë blloqe. Nëse pas deklaratës së fundit të kësaj lënde-fragmenti mbetet rasti tjetër, atëherë ekzekutimi do të vazhdojë, duke filluar nga deklarimi i parë i këtij rasti-fragmenti.
  • Për shkak të kësaj, një deklaratë break zakonisht përdoret në një deklaratë switch. Ai vendoset në fund të çdo fragmenti rasti.

Shembull (skedar SymbolTest.java)

Konsideroni një program demo që përdor deklaratat for dhe switch.

Ky program gjeneron rastësisht 100 karaktere të alfabetit latin dhe i klasifikon ato si "zanore", "bashkëtingëllore" dhe "ndonjëherë zanore". Kategoria e fundit përfshin simbolet "y" dhe "w".

Klasa publike SymbolTest (kryesor publik statik i zbrazët (args me vargje) (për (int i = 0; i< 100; i++) { char c = (char)(Math.random()*26 + "a"); System.out.print(c + ": "); switch (c) { case "a": case "e": case "i": case "o": case "u": System.out.println("гласная"); break; case "y": case "w": System.out.println("иногда гласная"); break; default: System.out.println("согласная"); } } } }

Në këtë shembull, ka disa elementë që janë të rinj për ne.

  • Përdoret metoda e rastësishme () e klasës Math. Le të shohim dokumentacionin për klasën e matematikës dhe të shohim se çfarë bën.
  • Në pohimin char c = (char) (Math.rastësor () * 26 + "a"); simbolit i shtohet vlera aritmetike. Me këtë shtesë në Java, simboli konvertohet në një numër që është i barabartë me kodin e këtij simboli.
  • Në deklaratën System.out.print (c + ":"); nuk përdoret println (...), por println (...). Metoda e printimit (...) ndryshon nga println (...) vetëm në atë që nuk e fut printimin në një rresht të ri, kështu që deklarata tjetër e printimit (...) ose println (...) do të vazhdojë. printim në të njëjtën linjë.

Ju gjithashtu duhet t'i kushtoni vëmendje fragmenteve të rastit. Formalisht ka 7 fragmente të tilla, por 5 prej tyre nuk përmbajnë asnjë operator. Pra, mund të supozojmë se ka 2 fragmente rasti, por secila prej tyre ka disa etiketa rasti.

Detyre shtepie

  • 1 Ndryshoni SymbolTest.java në mënyrë që numri i simboleve të gjeneruara të specifikohet nga parametri i thirrjes së programit.
  • 2 Shkruani një program që merr dy numra si parametra të thirrjes - gjatësinë e këmbëve të një trekëndëshi kënddrejtë, dhe si rezultat i printon këndet në gradë.


(asnje)

Artikujt kryesorë të lidhur