Примери

Пример 1. Написати програм који рачуна максимум четири задата броја.

Анимација 9.14. Илустрација примера 1

Пример 2. Написати програм који у себи садржи функцију која рачуна број n цифара унетог броја. Притиском на контролно дугме програм у једној лабели треба да испише највећи n - тоцифрени број, а у другој лабели треба да испише најмањи n - тоцифрени број.

Анимација 9.15. Илустрација примера 2

У наредним задацима подразумеваћемо да свако поље треба да буде попуњено, односно, да у сваком textBox - у постоји одговарајући унос. Према томе, нећемо испитивати да ли су поља за унос празна или нису.

Пример 3. Написати програм који за три унета броја исписује највећу цифру која се у тим бројевима појављује.

Анимација 9.16. Илустрација примера 3

Пример 4. Написати програм који за два унета броја испитује који од њих има већи збир цифара и исписује тај број.

Анимација 9.17. Илустрација примера 4

Пример 5. Написати програм који рачуна обим и површину троугла, ако су унете вредности страница користећи функцију која проверава да ли наведене три странице чине троугао.

Анимација 9.18. Троугао и формуле за површину и обим

Пример 6. Написати програм који рачуна површину и запремину ваљка и купе, користећи функције обим и површина круга.

Пример 7. Написати програм који рачуна запремину правилне тростране и правилне шестостране призме и пирамиде.

Ovo je Java Applet napravljen u GeoGebri sa www.geogebra.org - izgleda da nemate instaliranu Javu; molim otvorite www.java.com
Анимација 9.19. Тространа пирамида и призма

*У случају да се анимација не приказује, притиснути дугме Прикажи слику




Пример 8. Написати програм који рачуна збир два разломка и исписује резултат у облику разломка користећи својство скраћивања разломака највећим заједничким делиоцем.

Пример 9. Написати програм који рачуна која од две дужи задате крајњим координатама тачака има већу дужину.

Сада ћемо погледати пар сложенијих примера. У наредним примерима обрађено је креирање класа и рад са класама.

Пример 10. Написати програм који ће за унети број кликом на контролно дугме бити уписан у одговарајућу листу у зависности од тога да ли је број прост или није. У трећу листу ће се исписивати сви делиоци датог броја, а прозор са поруком ће обавестити корисника колики је збир свих делиоца датог броја. Задатак урадити преко класа, креирањем класе Brojevi, која ће имати једну класну променљиву broj, целобројног типа.

Решење:

Направити класу Brojevi, која ће имати једну класну променљиву број, типа int. Класа Brojevi треба да има следеће фукције:
а) int Prost(); која ће да провери да ли је дати број, у интервалу од 1 до 100, прост, ако јесте враћа 1, ако није враћа 0, или ако није у интервалу од 1 до 100 враћа -1
б) string Deljiv(); која враћа све бројеве који су дељиви са датим бројем
в) int Zbir(int b); која враћа збир свих бројева који су дељиви са датим бројем.
Направити форму Form1(Слика 9.79.).

  1. label1 - у овој лабели ћемо написати Unesite broj < =100:
  2. textBox1 - у ово поље корисник уноси број од 1 до 100
  3. button1 - ово је наше контролно дугме и на њему ћемо написати Izvrsi
  4. label2 - у овој лабели ћемо написати Prosti brojevi:
  5. listbox1 - у овај листбокс ћемо исписивати резултат нашег задатка (само просте бројеве)
  6. label2 - у овој лабели ћемо написати Brojevi koji nisu prosti:
  7. listbox2 - у овај листбокс ћемо исписивати резултат нашег задатка (само бројеве који нису прости)
  8. label3 - у овој лабели ћемо написати Brojevi sa kojima je deljiv dati broj:
  9. listbox3 - у овај листбокс ћемо исписивати резултат нашег задатка (бројеве који су дељиви са унетим бројем)
Слика 9.79. Изглед форме у примеру 10


Најпре у textBox1 унети број који је мањи од 100, кликом на дугме "Izvrsi" обезбедити да унети број у зависности од тога да ли је прост или не упише, ако је прост у listBox1, ако није прост број у listBox2, и за тај број да се у listBox3 испишу бројеви са којима је дељив унети број. Ако број није у интервалу < 100 онда обезбедити одговарајућу поруку. Обезбедити и то да кликом на било који број из listBox1 или listBox2, отвори нови прозор са поруком колики је збир бројева који су дељиви са изабраним бројем.

Напомена: У примеру 11 су коришћени низови. Уколико не владате том облашћу, предлажемо вам да пре овог задатка погледате област Тип низа.

Пример 11. Написати програм који ће за унету реч кликом на одговарајуће контролно дугме извршавати операцију која одговара одабраном радио дугмету. Операције које треба да постоје су: реч обрнута датој речи, прелазак свих слова у велика слова, прелазак свих слова у мала слова, прелазак сваког другог слова у велико. Такође, омогућити да постоји још један простор за унос, где ће за унето слово и одабиром одговарајућег радио дугмета програм исписати поруку колики је број појављивања датог слова у речи која је унета. Омогућити и да се одабиром одговарајућег радио дугмета унета реч замени неком од речи из низа који ћемо креирати у програму. Задатак урадити преко класа, креирањем класе Reci.

Решење:

Направити класу Reci, која ће имати следеће функције:
а) string Obrni(string rec); враћа string који садржи обрнут редослед слова датог string - a
б) int BrSlova(string rec, string a); враћа број појављивања датог string а ( чија је дужина = 1) у string rec
в) string Velika(string rec) i string Mala(string rec); враћа дати string - a записан са свим великим, односно свим малим словима
г) string ParNepar(string rec); враћа string код кога је свако слово које је на парном или непарном месту, у зависности од дужине датог string - a, замењено великим словом
д)string Zameni(string rec); дати string rec мења случајно изабраном речи из низа датог у функцији, нека тај низ речи садржи речи бресква, банана, крушка, јабука, шљива
Направити форму Form1(Слика 9.83.).

  1. label1 - у овој лабели ћемо написати Unesite rec:
  2. textBox1 - у ово поље корисник уноси неку реч
  3. label2 - у овој лабели ћемо написати Unesite slovo:
  4. textBox2 - у ово поље корисник уноси неко слово
  5. button1 - ово је наше контролно дугме и на њему ћемо написати Izvrsi
  6. radioButton1 - на ово дугме ћемо написати obrni
  7. radioButton2 - на ово дугме ћемо написати broj pojavljivanja datog slova
  8. radioButton3 - на ово дугме ћемо написати sva u mala
  9. radioButton4 - на ово дугме ћемо написати sva u velika
  10. radioButton5 - на ово дугме ћемо написати Par Nepar
  11. radioButton6 - на ово дугме ћемо написати Zameni rec
Слика 9.83. Изглед форме у примеру 11


Најпре у textBox1 унесите неку реч, уколико нисте унели неки string отвориће се прозор са одговарајућом поруком. Затим у зависности од тога који radioButton сте изабрали позовите одговарајућу функцију из класе Reci, тако да се кликом на дугме "Izvrsi" спроведе одговарајућа акција и у richTextBox испише резултат.

Пример 12. Написати програм који ће за унет датум (дан, месец и година се посебно уносе у сваком пољу за унос) притиском на контролно дугме исписивати датум у одговарајућем формату (дан.месец.година.) и у RichTextBox - у ће се исписивати да ли је унета година преступна и колико дана има унети месец. Притиском на друго контролно дугме омогућити да се сви исписани подаци избришу. Задатак урадити преко класа, креирањем класе Datum, која ће имати три класне променљиве, dan, mesec, godina, целобројног типа.

Решење:

Направити класу Datum, која ће имати класне променљиве dan, mesec, godina, све типа int, као и следеће функције:
а) int Prestupna(int godina); враћа 1 ако је година преступна, а 0 иначе
б) int DaniUmesecu(int mesec, int godina); враћа број дана у датом mesecu
в) Boolean Validan(int g, int m, int d); враћа true ако је датум валидан, тј. уколико су у одговарајућем опсегу dan,mesec,godina (godina > 1900)
г) string VratiString(); враћа датум типа string у формату хх.хх.хххх.
Направити форму Form1(Слика 9.87.).

  1. label1 - у овој лабели ћемо написати Dan
  2. textBox1 - у ово поље корисник уноси редни број дана
  3. label2 - у овој лабели ћемо написати Mesec
  4. textBox2 - у ово поље корисник уноси редни број месеца
  5. label2 - у овој лабели ћемо написати Godina
  6. textBox3 - у ово поље корисник уноси годину, као број
  7. button1 - ово је наше контролно дугме и на њему ћемо написати Datum
  8. button2 - ово је наше контролно дугме и на њему ћемо написати Obrisi
  9. textBox4 - у ово поље ће се након клика на дугме Datum исписати датум у формату хх.хх.хххх.
  10. richTextBox1 - у ово поље ће се након клика на дугме исписати резултат нашег задатка
Слика 9.87. Изглед форме у примеру 12
Анимација 9.20. Преступне године


Најпре у textBox1, textBox2 и textBox3 унесите дан, месец и годину, уколико нисте попунили сва поља кликом на дугме "Datum" отвориће се прозор са одговарајућом поруком. Иначе, кликом на дугме "Datum" уколико су унети дан, месец и година валидни, у textBox4 испишите датум у одговарајућем формату ( dan.mesec.godina. ), а затим и у richTextBox додајте реченицу у којој ће писати да ли је унета година преступна и колико дана има у датом месецу. Кликом на дугме "Obrisi" брише се све из textBox4 и richTextBox.

Пример 13. Написати програм који ће за унето име и унет датум рођења особе и данашњи датум рачунати нумеролошки број те особе, као и број метаболизма особе. Кликом на контролно дугме у RichTextBox - у ће се исписати име и датум рођења особе, као и нумеролошки број и број метаболизма, као и то да ли је година у којој је особа рођена била преступна. Задатак урадити преко класа, креирањем класе Osoba, која ће имати класне променљиве ime и datum, обе типа стринг.

Решење:

Направити класу Osoba, која ће имати класне променљиве ime и datum, обе типа string.
Као и следеће функције:
а) int NumeroloskiBroj(); која треба да израчуна и врати нумеролошки број особе. Нумеролошки број се рачуна на следећи начин: саберу се све цифре које се јављају у датуму рођења. Ако тако добијени број није једноцифрен, саберу се његове цифре. Поступак се понавља све док се не добије једноцифрен број.
б) string Metabolizam(string datum1); која треба да врати string који се добија на следећи начин: из датума рођења и задатог датума обришу се тачке и оно што преостане посматра се као неозначен цео број. Тако добијена два броја се саберу, а оно што функција треба да врати је string репрезентација резултата.
в) string VratiString(); враћа име и датум рођења особе. Користити класу Datum, за проверу да ли је унети датум валидан (година треба да буде већа од 1900), и да ли је дата година преступна.
Направити форму Form1(Слика 9.91.).

  1. label1 - у овој лабели ћемо написати Ime
  2. textBox1 - у ово поље корисник уноси име
  3. label2 - у овој лабели ћемо написати Datum uneti u formatu xx.xx.xxxx.
  4. label3 - у овој лабели ћемо написати Danasnji datum
  5. textBox1 - у ово поље корисник уноси данашњи датум
  6. label3 - у овој лабели ћемо написати Datum rodjenja
  7. textBox1 - у ово поље корисник уноси датум рођења
  8. button1 - ово је наше контролно дугме и на њему ћемо написати Osoba
  9. richTextBox1 - у ово поље ће се након клика на дугме исписати резултат нашег задатка
Слика 9.91. Изглед форме у примеру 13
Анимација 9.21. Бројеви


Најпре у textBox1, textBox2 и textBox3 унесите име, датум рођења и данашњи датум, уколико нисте попунили сва поља кликом на дугме "Osoba" отвориће се прозор са одговарајућом поруком, или ако нисте унели датуме у задатом формату хх.хх.хххх. отвориће се прозор који ће вас упозорити на то. Иначе, кликом на дугме "Osoba" у richTextBox ће се додати string репрезентација, нумеролошки број, метаболизам особе, проверите и то да ли је година у којој је рођена особа била преступна.

Пример 14. Написати програм који ће за унето име особе, адресу становања и установу у којој особа ради притиском на контролно дугме, у зависности који од три checkBox - а је означен, исписивати у RichTextBox - у име особе, адресу становања и установу у којој ради. Такође, исписаће и занимање особе (ђак, студент или запослен) и коју маркицу за превоз особа поседује у складу са тим. Задатак урадити преко класа, креирањем класе Osoba, која ће имати две класне променљиве, ime и adresa, обе типа стринг.

Решење:

Направити класу Osoba, која ће имати класне променљиве ime и adresa, обе типа string.
Обезбедити да се полиморфно извршавају функције
а) string Markica(); који треба да испише боју маркице која одговара објектима класе у којој је метод имплементиран и то: "плава маркица" за ђаке, "зелена маркица" за студенте и "црвена маркица" за запослене
б) string VratiString(); који треба да испише име, адресу особе, установу којој особа припада и занимање особе у зависности од тога да ли ђак, студент , или запослен
Направити форму Form1(Слика 9.95.).

  1. label1 - у овој лабели ћемо написати Ime
  2. textBox1 - у ово поље корисник уноси своје име
  3. label2 - у овој лабели ћемо написати Adresa stanovanja
  4. textBox2 - у ово поље корисник уноси адресу становања
  5. label3 - у овој лабели ћемо написати Ustanova
  6. textBox3 - у ово поље корисник уноси име установе у којој се налази
  7. button1 - ово је наше контролно дугме и на њему ћемо написати Osoba
  8. checkBox1 - овај чекБокс ћемо назвати Zaposlen
  9. checkBox2 - овај чекБокс ћемо назвати Student
  10. checkBox3 - овај чекБокс ћемо назвати Djak
  11. richTextBox1 - у ово поље ће се након клика на дугме исписати резултат нашег задатка
Слика 9.95. Изглед форме у примеру 14


Најпре у textBox1, textBox2 и textBox3 унесите име, адресу и установу, уколико нисте попунили сва поља кликом на дугме "Osoba" отвориће се прозор са одговарајућом поруком. Иначе, у зависности од тога који сте објекат изабрали запослен, студент, ђак, кликом на дугме "Osoba" додаће се у richTextBox подаци особе, string репрезентацију сваког од креираних објеката и боју маркице карактеристичну за објекат тог типа.

Пример 15. Написати програм који ће за унет број жиро рачуна и износ притиском на одговарајуће контролно дугме (направити два контролна дугмета - за уплату и исплату) у RichTextBox - у исписивати да ли је извршена уплата на рачун или исплата са рачуна за наведени износ, као и податке о рачуну након уплате, односно, исплате. Задатак урадити преко класа, креирањем класе Racun са класним променљивим stanje, реалног типа, и brojRacuna, типа стринг.

Решење:

Направити апстрактну класу Racun, која ће имати класне променљиве stanje, типа double и brojRacuna, типа string.
Класа садржи следеће функције:
а) abstract double ProvizijaNaUplatu(double iznos);
б) abstract double ProvizijaNaIsplatu(double iznos); рачунају провизију за дати износ, провизије се разликују у зависности од тога да ли је у питању девизни или текући рачун
в) double VratiStanje(); враћа стање на рачуну
г) void UplatiNaRacun(double iznos); врши уплату на рачун за дати износ, и умањује стање на рачуну за одговарајућу провизију
д) void IsplatiSaRacuna(double iznos); врши исплату са рачуна за дати износ, и на стање рачуна додаје одговарајућу провизију
ђ) string VratiPodatkeORacunu(); враћа број рачуна и износ на рачуну
Класа DevizniRacun рачуна провизију на уплату и исплату, каде је у питању девизни рачун провизија је иста, и то 100+(износ*5/100). Стринг репрезентација враћа податке о рачуну и који је тип рачуна.
Класа TekuciRacun рачуна провизију на уплату и исплату, када је у питању текући рачун провизија на уплату је 0 а за испату се рачуна на следећи начин 100+(износ*3/100). Стринг репрезентација враћа податке о рачуну и који је тип рачуна.
Направити форму Form1(Слика 9.99.).

  1. label1 - у овој лабели ћемо написати Broj racuna
  2. textBox2 - у ово поље корисник уноси број рачуна
  3. label2 - у овој лабели ћемо написати Iznos
  4. textBox1 - у ово поље корисник уноси износ у динарима, који уплаћује или исплаћује са свог рачуна
  5. label3 - у овој лабели ћемо написати Podaci o racunu
  6. button1 - ово је наше контролно дугме и на њему ћемо написати Uplata
  7. button2 - ово је наше контролно дугме и на њему ћемо написати Isplata
  8. richTextBox1 - у ово поље ће се након клика на дугме исписати резултат нашег задатка
Слика 9.99. Изглед форме у примеру 15


Најпре у textBox1, и textBox2 унесите број рачуна и износ за који желите да повећате или умањите износ на вашем рачуну. Кликом на дугме "Uplata" извршиће се уплата на рачун, кликом на дугме "Isplata" извршиће се исплата са рачуна, у richTextBox ће се исписати подаци рачуна, string репрезентација.