Moduļa 1.1. vingrinājumi

01. vingrinājums: Kompilācijas un izpildes kļūdu novēršana

Vingrinājuma mērķis: Šajā vingrinājumā var noskaidrot vairāku Javas tehnoloģijas programmu paraugu kļūdas (kompilācijas un izpildes laikā), un izdomāt nepieciešamos labojumus.

Darbības:

  • Instalēt lietojumprogrammas "Windows Commander" un "EditPlus"
  • Direktorijas exercise01 4 Javas programmu paraugus nokopēt uz sava datora direktorijā exercise01; mēģināt tās nokompilēt un palaist
  • Analizēt kļūdas; spēt izskaidrot šo kļūdu cēloņus
  • Katram paraugam izveidot atsevišķu apakšdirektoriju, kurā izlabot šīs programmas, pēc iespējas saglabājot tajās noprogrammēto uzvedību.

Javas kā arī Web aplikāciju programmētājam mēdz būt nepieciešama iespēja ērti kopēt failus (t.sk. uz mašīnām ārpus lokālā tīkla ar FTP), izpētīt ZIP un JAR arhīvu iekšējo struktūru, atvērt DOS komandrindu dažādās direktorijās, utml. Šim nolūkam labi kalpo, piemēram, rīks "Windows Commander" vai arī "FAR manager". Kursa laikā ieteicams izmantot "shareware" programmproduktu Windows Commander - instalēt to uz izmēģinājuma laiku. (FAR lietotāji var turpināt lietot FAR).

Javas programmas vienkāršākajā gadījumā var veidot ar pavisam vienkāršu teksta redaktoru, piemēram Notepad vai WordPad. Lai efektīvi varētu atrast kompilācijas kļūdas, ērtāk izmantot tos teksta redaktorus, kuri rāda rindu numurus. EditPlus ir īpaši ērts no vienkāršajiem redaktoriem, jo tajā var veidot Javas programmētājam ērtas atkāpes, tajā notiek koda atslēgvārdu automātiska izkrāsošana, kā arī ir pietiekoši varenas teksta meklēšanas un aizvietošanas metodes (t.sk. regulāras izteiksmes). "Windows Commander" un "EditPlus" var papildus integrēt, panākot, lai redaktoru "EditPlus" varētu palaist uz jebkura faila ar F4 (Edit) komandu.

02. vingrinājums: Aplikācija "Sveicināta, Java"

Vingrinājuma mērķis:

  • Patstāvīgi ievadīt datorā "minimālu" Javas aplikāciju; to atkļūdot un palaist. Iepazīties ar latviešu burtu attēlošanas īpatnībām Javas programmā.

Darbības:

  • Izveidot atsevišķā direktorijā (exercise2) aplikāciju TestGreeting, kura izsauc citā klasē metodi greet, kas drukā uz konsoles stringu "hi". * Atkļūdot un palaist šo programmu.
  • Aizstāt drukājamo stringu "hi" ar stringu latviešu valodā: "Sveicināta, Java" vai arī "Sveicināta, Java".

Javas kompilators, sastopot ne-ASCII simbolus Stringu mainīgajos, tos pārveido par Unikoda simboliem. Šis process var būt atkarīgs no tā, kāds attiecīgajā mašīnā ir noklusētais kodējums. Piemēram, simbols "ā" (programmā būdams ierakstīts windows-1257 kodējumā, t.i. baits "E2", jeb decimālajā sistēmā tas ir 226) var pārveidoties par latviešu garajam patskanim atbilstošo pareizo Unikoda simbolu ("ā", jeb decimālajā sistēmā tas ir 257), bet var arī nepārveidoties. Rakstot programmā literāli "ā", mēs garantēti iegūstam vēlamo Unikoda simbolu. Javā internacionalizācijas stringiem parasti piekļūst ar speciālu klasi java.util.ResourceBundle.

03. vingrinājums: Komandrindas parametri un izvada novirzīšana ārējā failā

Vingrinājuma mērķis:

  • Iepazīt iespējas saņemt Javas programmā DOS komandrindas parametrus un novirzīt standartizvadu nevis uz konsoli, bet kādā failā. * Programma tāpat kā iepriekš drukā rindiņu "Sveicināta, Java", bet pēc tam izvada tabulu funkcijas y=cos(x) aprēķināšanai, kur argumenti ir aritmētiskas progresijas locekļi. Aritmētiskās progresijas nullto locekli x0, diferenci delta un locekļu skaitu N lietotājs ievada no komandrindas, bet izvadā tā parādās kā HTML tabula.

Darbības:

  • Šai programmai, tāpat kā iepriekšējai, būs 2 klases: TestGreeting un Greeting. Tās atradīsies jaunā direktorijā exercise3. Jūs varat iekopēt šajā direktorijā iepriekšējā uzdevuma failus un tos modificēt.
  • main() metodes sākumā inicializēt programmas parametrus ar šādu vai līdzīgu kodu:
    if (args.length != 3) {
        System.out.println("Lietojums: java TestGreeting x0 delta N"); 
            System.exit(0);
    }
    double x0 = Double.parseDouble(args[0]);
    double delta = Double.parseDouble(args[1]);
    int N = Integer.parseInt(args[2]);
    
  • Klasē Greeting izveidot jaunu metodi:
    public void cosTable(double x0, double delta, int N) {
        System.out.println("<table border>"); 
        for (int i = 0; i <= N; i++) {
            double xi = x0 + i*delta;
            System.out.println("<tr><td>" + xi + "</td>"
                + "<td>" + Math.cos(xi) + "</td></tr>"); 
        }
            System.out.println("</table>"); 
    }
    
  • Iespraust šīs metodes izsaukumu klasē TestGreeting tūlīt aiz hello() metodes * Sakompilēt un darbināt programmu. Pārbaudīt, kas notiek, ja programmai nenonod tieši 3 parametrus, vai arī nodod parametrus, kas nav skaitļi. * Darbināt metodi ar izvada novirzīšanu failā:
    java TestGreeting x0 delta N > out.html
    

Augšminētajā piemērā mēs dinamiski ģenerējam HTML kodu no Javas programmas. Šī situācija ir tipiska it īpaši Javas servletu programmēšanā. Formāli runājot, programma vienā valodā (Javā) izvada tekstu citā valodā (HTML). HTML sintakses elementi - birkas jeb tegi: TABLE, TR, TD utml. tiek likti pēdiņās un konkatenēti kopā ar programmas izpildes laikā izrēķinātiem mainīgajiem - aritmētiskās progresijas locekļiem un atbilstošajām kosinusa vērtībām.

Cikls programmā atkārtojas N+1 reizi un drukā ar rāmīti apvilktos teksta fragmentus HTML izejas tekstā (sk. zīmējumu).

HTML tabulas struktūra