2020. február 27., csütörtök

Publikáció

1. Keleten a helyzet változatlan / Szabó László István - In : Irány Szabolcs-Szatmár-Bereg megyei Közéleti és Kulturális lap 1996  szeptember 20. I. évf. 1. sz. 4. p.

http://www.mzsk.hu:8123/JaDoX_Portlets/displayContent?docId=140051&secId=28040

2. Adj uram... / Szabó László István - In : Irány Szabolcs-Szatmár-Bereg megyei Közéleti és Kulturális lap 1996  szeptember 20. I. évf. 1. sz. 8. p.

http://holnapmagazin.hu/vers.php?vers_id=25733

3. Igényes alkotások a gyémánt Galériában / Szabó László István - In : Irány Szabolcs-Szatmár-Bereg megyei Közéleti és Kulturális lap 1996  szeptember 20. I. évf. 1. sz. 10. p.

http://www.mzsk.hu:8123/JaDoX_Portlets/displayContent?docId=140055&secId=28314

4. Kinek kellett? / Szabó László István - In : Irány Szabolcs-Szatmár-Bereg megyei Közéleti és Kulturális lap 1996  szeptember 20. I. évf. 1. sz. 22. p.

5. Piros-kék reményünk / Szabó László István - In : Irány Szabolcs-Szatmár-Bereg megyei Közéleti és Kulturális lap 1996  szeptember 20. I. évf. 1. sz. 25. p.

http://www.mzsk.hu:8123/JaDoX_Portlets/displayContent?docId=140057&secId=28315

6. Az eperfa / Szabó László István - In : Irány Szabolcs-Szatmár-Bereg megyei Közéleti és Kulturális lap 1996  október 04. II. évf. 1. sz. 12. p. A holnapmagazin díjjazottja 2015-ben!

http://holnapmagazin.hu/proza.php?proza_id=17814

7. A téli út végén / Szabó László István - In : Irány Szabolcs-Szatmár-Bereg megyei Közéleti és Kulturális lap 1996  szeptember 20. I. évf. 1. sz. 22. p.

8.  A televízió / Szabó László István - In : Irány Szabolcs-Szatmár-Bereg megyei Közéleti és Kulturális lap 1996  szeptember 20. I. évf. 1. sz. 17. p.

9. Portré / Szabó László István - In : Irány Szabolcs-Szatmár-Bereg megyei Közéleti és Kulturális lap 1996  szeptember 20. I. évf. 1. sz. 22. p.

10. Kritika / Szabó László István - In : Irány Szabolcs-Szatmár-Bereg megyei Közéleti és Kulturális lap 1996  szeptember 20. I. évf. 1. sz. 22. p.

11. Hajtás vezet a győzelemhez  / Szabó László István - In : Irány Szabolcs-Szatmár-Bereg megyei Közéleti és Kulturális lap 1996  október 4. I. évf. 2. sz. 28. p.


12. Az internethasználati képzések a könyvtárban / Szabó László István. – In : Szabolcs-Szatmár megyei Könyvtári kis híradó 2002 szeptember VII.évf. 3.(27)sz. 12. p.

13. Az e-könyv mint a virtuális könyvtárak alapja / Szabó László István. – In : Szabolcs-Szatmár megyei Könyvtári kis híradó – 2007. dec.XII.évf.4.(48)sz 6. p.


14. Számítástechnikai tanfolyam időseknek / Szabó László István. – In : Szabolcs-Szatmár megyei Könyvtári kis híradó 2009 március XIV.év.1.(53)sz. 8.p.

http://www.mzsk.hu/kepzesek/informatikai-kepzes/

15. A könyvtári weblapkészítés lehetőségei és buktatói / Szabó László István. – In : Szabolcs-Szatmár megyei Könyvtári kis híradó 2009.június XIV.év.2.(54)sz.4-5p

http://www.matarka.hu/cikk_list.php?fusz=59570

16. Az infokommunikációs eszközök és szolgáltatások népszerűsítése / Szabó László István. – In : Szabolcs-Szatmár megyei Könyvtári kis híradó 2009 szeptember XIV.év. 3.(55)sz.6. p.

http://www.matarka.hu/cikk_list.php?fusz=60013

17. A könyvtárak szerepe a sérült emberek életében / Szabó László István. – In : Szabolcs-Szatmár megyei Könyvtári kis híradó 2009 december XIV.év. 56.sz.

http://www.matarka.hu/cikk_list.php?fusz=61216

18 Digitális írástudással az egyenlőesélyért / Szabó László István. – In : Szabolcs-Szatmár megyei Könyvtári kis híradó 2009 XIV.évf. 4.(56)sz. 5-6. p.

http://www.matarka.hu/cikk_list.php?fusz=61216

19. Beszélő számítógép / Szabó László István – In : Korszerű Könyvtár 2010 április Esélyteremtés G 1.2.

http://www.mzsk.hu:8123/JaDoX_Portlets/displayContent?docId=140060&secId=28037
http://www.odrportal.hu/kereso/index.php?stype=author&q=%22Szab%C3%B3+L%C3%A1szl%C3%B3+Istv%C3%A1n%22

20. E-könyvek (elektronikus könyvek)a modern könyvtárakban / Szabó László István – In : Korszerű Könyvtár 2010 augusztus Elektronizált könyvtár D 1.8.

http://www.mzsk.hu:8123/JaDoX_Portlets/displayContent?docId=140061&secId=28313

21. Felolvasó szoftverek érzékszervi hiányosságban szenvedő emberek számára / Szabó László István - In: Szabolcs-Szatmár megyei Könyvtári kishíradó (2010 decemberi szám.) XV.évf. 1/3. (57/58.) sz. 12-14. p.

http://szabolaszloistvan.blogspot.hu/2010/09/feolvaso-szoftverek-szamitastechnikaban.html

22.Melyik internetböngészőt válasszam? / Szabó László István - In: Szabolcs-Szatmár megyei Könyvtári kishíradó (2010 decemberi szám.) XV.évf. 59-60sz. 6. p.

http://www.matarka.hu/cikk_list.php?fusz=93531

23. Személyes adatok védelme az interneten / Szabó László István - In Könyvtári Levelező Lap 2011 februári szám, 18 p.

http://www.mzsk.hu:8123/JaDoX_Portlets/displayContent?docId=140064&secId=28316

http://epa.oszk.hu/00300/00365/00111/pdf/kll1102_18-19.pdf

24. Szenvedélybetegségek jelei a könyvtárakban /Szabó László István - In : Korszerű Könyvtár 2011 májusi száma

http://www.tollal.hu/mu/a-jatek-fuggoseg-jelei-a-konyvtarban

25. Esélyegyenlőséget biztosító eszközök a könyvtárakban / Szabó László István - In : Könyv Könyvtár Könyvtáros 2011 májusi száma XX. évf. 5. sz. 43. p.

http://epa.oszk.hu/01300/01367/00243/pdf/EPA01367_3K_2011_05_43-47.pdf

26. A könyvtár mint játékterem / Szabó László István - In : Könyvtári levelező/lap, 2011. (23. évf.) 11. sz. 3-5. p.


http://epa.oszk.hu/00300/00365/00120/pdf/kll1111_003-005.pdf

27. A vadász a természetért van, nem a természet ellen / Szabó László István - In : Nimród Vadászújság,  2012. év Márciusi száma

http://www.mzsk.hu:8123/JaDoX_Portlets/displayContent?docId=158612&secId=42066
http://szabolaszloistvan.blogspot.hu/2014/09/cikkek.html

28. "Timeo hominem unius libri". Gondolatok könyvről, olvasásról, könyvtárról. / Szabó László István - In : Könyv Könyvtár Könyvtáros 2012 januári száma XXI. évf. 5. sz. 21-25. p.

http://www.mzsk.hu:8123/JaDoX_Portlets/displayContent?docId=140077&secId=28041

http://ki.oszk.hu/3k/2012/09/timeo-hominem-unius-libri/

http://epa.oszk.hu/01300/01367/00197/pdf/EPA01367_3K_2012_01_021-025.pdf

29. Milyen a XXI. század könyvtárosa /Szabó László István - In : Könyv Könyvtár Könyvtáros,2012. (21. évf.) 10. sz. 3-5. old.

http://www.mzsk.hu:8123/JaDoX_Portlets/displayContent?docId=158590&secId=42062

http://ki.oszk.hu/3k/2012/10/milyen-a-xxi-szazad-konyvtarosa/

http://www.mzsk.hu/ujoldal/olvasopont/2012/06/08/milyen-legyen-a-jo-konyvtaros/

http://epa.oszk.hu/01300/01367/00206/pdf/EPA01367_3K_2012_10_03-05.pdf

30. Felelősség a környezetért /Szabó László István - In : Kelet-Magyarország,2012. Szeptember 20.  LXIX. évfolyam 221.szám 5.p.

http://szabolaszloistvan.blogspot.hu/2014/09/cikkek.html

31. Milyen szerepet tölt be az olvasás az ember személyiségének fejlesztésében 1. /  Szabó László István - In : Nyírségi Gondolat 2013 március-áprilisi száma VI. évf. 5. sz. 37. p.

http://www.mzsk.hu:8123/JaDoX_Portlets/displayContent?docId=160631&secId=43567

32. Milyen szerepet tölt be az olvasás az ember személyiségének fejlesztésében 2. /  Szabó László István - In : Nyírségi Gondolat 2013 május-júniusi száma VI. évf. 6. sz. 20. p.

http://www.mzsk.hu:8123/JaDoX_Portlets/displayContent?docId=160633&secId=43568

33. Milyen szerepet tölt be az olvasás az ember személyiségének fejlesztésében 3. /  Szabó László István - In : Nyírségi Gondolat 2013 július-augusztusi száma VI. évf. 7-8. sz. 39. p.

http://www.mzsk.hu:8123/JaDoX_Portlets/displayContent?docId=160816&secId=45459

34. Nem csak a húszéveseké a világháló /  Szabó László István - In : Nyugdíjasélet 2013 szeptemberi száma XVIII. évf. 9. sz. 13. p.

http://magyarparnasszus.hu/cikkek/nem-csak-a-huszeveseke-a-vilaghalo

35. Isten éltesse Szent Hubertusz legöregebb katonáját 1. /  Szabó László István - In : Nyírségi Gondolat 2013 szeptember-októberi száma VI. évf. 9-10. sz. Rovat: Társasági szalon 18. p.

http://www.mzsk.hu:8123/JaDoX_Portlets/displayContent?docId=169236&secId=50685

36. Isten éltesse Szent Hubertusz legöregebb katonáját 2. /  Szabó László István - In : Nyírségi Gondolat 2013 november-decemberi száma VI. évf. 11-12. sz. Rovat: Társasági szalon 16p.

37. Isten éltesse Szent Hubertusz legöregebb katonáját 3. /  Szabó László István - In : Nyírségi Gondolat 2014 január-februári száma VII. évf. 1-2. sz. Rovat: Társasági szalon 17.p.

38. A könyv nemzedékünk végrendelete /  Szabó László István - In : Vigilia 79. évfolyam 1. szám 2014 januári szám Napjaink rovat

http://vigilia.hu/content/79-%C3%A9vfolyam-1-sz%C3%A1m


39. Szenvedélybetegségek jelei és következményei a családban / Szabó László István - In Könyvtári Levelező Lap 2014 márciusi szám, 17-20 p.

http://epa.oszk.hu/00300/00365/00150/pdf/EPA00365_konyvtari_levelezo_lap_2014_03_17-20.pdf

40. A tömegkommunikációs eszközök hogyan formálják a társadalmi morált?. /  Szabó László István - In : Nyírségi Gondolat 2014 március-április havi száma VII. évf. 3-4. sz. Rovat: Társasági szalon 47p.

http://tollal.hu/mu/a-tomegkommunikacios-eszkozok-hatasa-a-tarsadalmi-moralra

41. Gondolatok a könyvtári terápiákról. /  Szabó László István - In : Könyv Könyvtár Könyvtáros 2014 júliusi száma 23. évf. Rovat: Fórum  15-17p.
http://www.mzsk.hu:8123/JaDoX_Portlets/displayContent?docId=169076&secId=50565
http://ki.oszk.hu/3k/2014/07/gondolatok-a-konyvtari-terapiarol/#more-6321

42. Szenvedélybetegségek jelei és következményei a családban (1). /  Szabó László István - In : Nyírségi Gondolat 2014 május-június havi száma VII. évf. 5-6. sz. Rovat: Közösségi szalon 40p.

43. Szenvedélybetegségek jelei és következményei a családban (2). /  Szabó László István - In : Nyírségi Gondolat 2014 július-augusztus havi száma VII. évf. 7-8. sz. Rovat: Közösségi szalon 43p.

44. Szenvedélybetegségek jelei és következményei a családban (3).  /  Szabó László István - In : Nyírségi Gondolat 2014 szeptember-október havi száma VII. évf. 9-10. sz. Rovat: Közösségi szalon 40p.

45. Isten éltesse Szent-Hubertus legöregebb katonáját.  /  Szabó László István - In : Alkony Vadászmagazin 2014 augusztus-szeptember havi száma XI. évf.. Rovat: Portré 12p.

http://szabolaszloistvan.blogspot.hu/2014/09/cikkek.html

46. Digitalizálási tapasztalatok Nyíregyházán / Szabó László István - In : Könyvtári Levelező Lap 2014 augusztus havi száma Rovat:E-könyvtár 15p.

http://epa.oszk.hu/00300/00365/00155/pdf/EPA00365_konyvtari_levelezo_lap_2014_08_15-16.pdf

47. A könyv és a könyvtár társalami szerepe a XXI. századi ember életében /Szabó László István - In : Nyíregyháza Könyve 2014  47.-56.p.

48. Szenvedélybetegségek jelei és következményei a családban 3.  /  Szabó László István - In : Nyírségi Gondolat 2014 november-december havi száma VII. évf. 11-12. sz. Rovat: Közösségi szalon 40p.

49. Harc a demencia ellen 1 /  Szabó László István - In : Nyírségi Gondolat 2015 január-február havi száma VIII. évf. 1-2. sz. Rovat: Közösségi szalon 22p.


50. Adj Uram... /  Szabó László István - In : Nyírségi Gondolat 2015 január-február havi száma VIII. évf. 1-2. sz. Rovat: Közösségi szalon 36p.

51. A politikus szava  /  Szabó László István - In : Nyírségi Gondolat 2015 január-február havi száma VIII. évf. 1-2. sz. Rovat: Közösségi szalon 36p.

52. A könyv és az olvasás személyiség formáló szerepe  /  Szabó László István - In : Kláris Irodalmi-Kulturális Folyóirat  2015 15/3 márciusi száma XXIV. évf. 3. sz. Rovat: Tanulmányok rovat - Közművelődés - 45-46 p.


http://klarisujsag.hu/index.php?oldal=0381


53. Harc a demencia ellen 2  /  Szabó László István - In : Nyírségi Gondolat 2015 március- április havi száma VIII. évf. 1-2. sz. Rovat: Közösségi szalon 22p.


54. Harc a demencia ellen 3  /  Szabó László István - In : Nyírségi Gondolat 2015 május- június havi száma VIII. évf. 1-2. sz. Rovat: Közösségi szalon 12p.


55. Harc a demencia ellen 4  /  Szabó László István - In : Nyírségi Gondolat 2015 július- augusztus havi száma VIII. évf. 1-2. sz. Rovat: Kulturális szalon 15p.

56 A könyv és az olvasás személyiség formáló szerepe 2  /  Szabó László István - In : Kláris Irodalmi-Kulturális Folyóirat  2015 15/4 áprilisi száma XXIV. évf. 4. sz. Rovat: Tanulmányok rovat - Közművelődés - 41-42 p.

57.  Nem csak a húsz éveseké a világ-háló /Szabó László István - In : Nyugdíjas élet 2015  4.p.

58. Csak mesélek /Szabó László István - In : Nyíregyháza Könyve 2015  90.-92.p.

59.MEMENTÓ Farkas"Schultz" Tibor /Szabó László István - In :Nyírségi gondolat 2015 szeptember-október havi száma VIII. évfolyam 9-10. sz. Társasági rovat  28.p.

60.Gyerekkori emlékek /Szabó László István - In :Nyírségi gondolat 2015 szeptember-október havi száma VIII. évfolyam 9-10. sz. Közösségi Szalon -  43.p.

61.Gondolatok könyvről könyvtárról és az olvasás fontosságáról /Szabó László István - In :Irodalmi Kávéház Magazin 2015 évi száma  -  241.p.

62.A disznóölés /Szabó László István - In :Nyírségi gondolat 2015 november-december havi száma VIII. évfolyam 11-12. sz. Társasági Szalon -  25.p.

63. Versek(Adni hittel, Adj Uram...,  A provokátor hangja, Menj csak, ha menned kell, A csalódás, Nőnapi köszöntő!) /Szabó László István - In :Négy dimenzió  2015 év  17 kötet -107-109 p.

64.  A jégszív /Szabó László István - In :Nyírségi Gondolat 2016  január-február havi száma IX. évfolyam 1-2. sz. Közösségi szalon - 33 p.

65. A Plutó kutya /Szabó László István - In :Nyírségi Gondolat 2016  március-április havi száma IX. évfolyam 3-4. sz. Közösségi szalon - 40 p. Mécs László díjas alkotás!

66. A szegény ember baltája /Szabó László István - In :Nyírségi Gondolat 2016  május-június havi száma IX. évfolyam 5-6. sz. Társasági szalon - 29 p.

67. A szegény ember baltája/Szabó László István - In :KisLant 118. szám 2016 június havi száma  8 p. KisLant Pályázat Próza kategória nyertese!

68. Üdv a vadásznak /Szabó László István - In :Magyar Vadászlap 2016 július havi száma XXV. évfolyam 7. sz. - 73 p.

69. A kiskoszos és a kontyosrádiók /Szabó László István - In :Nyírségi Gondolat 2016 július- augusztus havi száma IX. évfolyam 7-8. sz. - Kultúrális szalon - 15 p.

70. Csak mesélek (A Vártanya)/Szabó László István - In : Nyíregyháza Könyve 2016  49.-62.p. (Szociológia, társadalomkutatás, szociográfia, néprajz)

71. A szegény ember baltája / Szabó László István - In : KisLant 2016  118.száma 8.p. (Irodalmi folyóirat)  http://epa.oszk.hu/01600/01616/00078/pdf/EPA01616_kis_lant_118_2016_6.pdf

72. Ezek a mai fiatalok! /Szabó László István - In :Nyírségi Gondolat 2016 szeptember-október havi száma IX. évfolyam 9-10. sz. - Közösségi szalon - 37 p.

73. Az eperfa árnyéka /Szabó László István - In :Nyírségi Gondolat 2016 november-december havi száma IX. évfolyam 11 -12. sz. - Közösségi szalon - 42 p.

74. Az iskolai könyvtárak társadalmi szerepe a XXI. században  /Szabó László István - In :Könyvtári levelező Lap 2016 28. évfolyam 12. sz. - Műhely - 7-13 p.

http://epa.oszk.hu/00300/00365/00183/pdf/EPA00365_konyvtari_levelezo_lap_2016_12_007-013.pdf

75. A szegény ember baltája / Szabó László István - In : KisLant 2016/VI. évfolyam  12_14.sz. - 8 p.  

76. A számítógépes szenvedély és net-veszély  /Szabó László István - In : Nyíregyházi Napló 2017  XXIV. évfolyam 11. sz. - 10 p.

77. Az iskolai könyvtárak társadalmi szerepe a XXI. században.  /Szabó László István - In :Katedra 2017 március havi száma XXIV. évfolyam 7. sz. - Könyv hónapja rovat - 21-23 p.

 78. A tehetség, avagy miből lesz a cserebogár...  /Szabó László István - In :Nyírségi Gondolat 2017 március- április havi száma X. évfolyam 5-6. sz. - Kulturális szalon - 10 p.

https://www.yumpu.com/hu/document/view/58320594/nyirsegi-gondolat-2017-0304

79.  Így lett még egy házunk / Szabó László István - In :Nyírségi Gondolat 2017 július- augusztus havi száma X. évfolyam 7-8. sz. - Közösségi szalon - 46 p.

80. Ars poetica /Szabó László István - In :Nyírségi Gondolat 2017 november- december havi száma X. évfolyam 11-12. sz. - Közösségi szalon - 56 p.

81. Az Adria királynője /Szabó László István -In :Nyírségi Gondolat 2018 március-április havi száma XI. évfolyam 3-4. sz. - Közösségi szalon - 40 p.

82.  Egy öreg Tarpai focista 84. születésnapja!  -In :Nyírségi Gondolat 2018 szeptember-október havi száma XI. évfolyam 9-10. sz. - Sport szalon - 34 p.

83.  Szenvedélybetegségek az iskolákban -In :Katedra 2018 október havi száma XXVI/2. évfolyam 10. sz. - Pedagógia - 21-22 p.

84.  Élet a Vártanyán  -In :Nyírségi Gondolat 2019 január-február havi száma XII. évfolyam 1-2. sz. - Közösségi szalon - 51 p.

85. ÉLet a vártanyán 4. rész  -In :Nyírségi Gondolat 2019 szeptember-október havi száma XII. évfolyam  9-10. sz. - Közösségi szalon - 56 p.

86. Konduljanak meg a vészharangok  -In :Természetgyógyász Magazin 2020 november havi száma XXVI. évfolyam 11. sz. - Psziche rovat - 57-59 p.

Szakmai előadások:


1. Határon túli magyar könyvtárosok továbbképzése Az internet szerepe a könyvtári tájékoztatásban. Elhangzott: 2001. október 4.-én az MZSK.-ban NKÖM program keretében

2.2009 január 26. SZAKMAI TOVÁBBKÉPZÉS Elektronikus  adatszolgáltatás és honlapszerkesztés Elhangzott: 2009 január 26.-án Szakmai továbképzé az MZSK. Konferenciatermében

3. A weblapkészítés lehetőségei a vidéki könyvtárakban Elhangzott: 2009 április 10.-én az MZSK.-ban NIIF Program keretében

4. Hasznos információk az interneten Elhangzott: 2009.szeptember 07. 9-től - 10-ig az MZSK.-ban MENET 2008 Program keretében NFÜ, E-Magyarország

5. Álláskeresés az interneten Elhangzott: 2009.szeptember 07. 10-től - 11-ig az MZSK.-ban MENET 2008 Program keretében NFÜ, E-Magyarország

6. Intézzen mindent otthonról Elhangzott: 2009.szeptember 07. 12-től - 13-ig az MZSK.-ban MENET 2008 Program keretében NFÜ, E-Magyarország

7. A játékszenvedély jelei a könyvtárakban: Elhangzott: 2011.március 25. 10-től 12-ig az MZSK-ban InternetFiesta 2011 Program keretében NKA, E-Magyarország

8. A szenvedélybetegség jelei a családban Elhangzott:2013. március 20. 8-tól 10-ig a Váci Mihály Művelődési Ház  Levelek Ady Endre ut 1. Internet Fiesta 2013 Program keretében  NKA, IKSZ.

9.  Az internetben rejlő lehetőségek: ügyfélkapu, szórakozás, kultúra, információ Elhangzott: 2013. március 24. 10-től 12-ig MZSMVK Oktatóterem Nyíregyháza, Szabadság tér 2. Internet Fiesta 2013 Program keretében  NKA, IKSZ.

10. Álláskeresés az interneten , kísérőlevél, motivációs levél, önéletrajz, megjelenés, stílus. Elhangzott: 2013. március 26. 10-től 12-ig. MZSMVK oktatóterem Nyíregyháza Szabadság tér 2. Internet Fiesta 2013 Program keretében  NKA, IKSZ.

11. A szenvedélybetegség jelei a családban Elhangzott:2013. március 27. 8-tól 10-ig a   Budai Nagy Antal Gimnázium  Nagykálló Vasváry Pál ut 1. Internet Fiesta 2013 Program keretében  NKA, IKSZ.

12.A szenvedélybetegség jelei a családban Elhangzott:2013. március 29. 11-tól 12-ig a Faluház  Nyírvasvári Kossuth ut 1. Internet Fiesta 2013 Program keretében  NKA, IKSZ.

13.A szenvedélybetegség az interneten Elhangzott:2015. március 20. 10-tól 11-ig a Túróczy Zoltán Evangélikus Angol Két Tanítási Iskola  Nyíregyháza, Luther ut 7. Internet Fiesta 2015 Program keretében  NKA. támogatásával.

14  A számítógépes szenvedélybetegség és azt internet veszélyei: Elhangzott: 2017 március 27.-én 10 óra Móricz Zsigmond Megyei és Városi könyvtár  Nyíregyháza, Szabadság tér 2. 3. emelet Nagyelőadó. Internet Fiesta 2017 Program keretében

http://www.mzsk.hu/ujoldal/olvasopont/2017/03/28/az-internet-es-a-szamitogepes-szenvedelybetegsegek/

Felhasználók, csoportok létrehozása windows szerveren

Telepítés után automatikusan létrejön két speciális csoport (Group): az Administrators (Rendszergazdák) és a Guests (Vendégek), valamint két speciális felhasználó: az Administrator (Rendszergazda) és a Guest (Vendég)
.
Telepítéskor automatikusan létrejövő két speciális felhasználó
Az Administrator olyan felhasználó, amely „gyárilag” különböző „privilégiumokkal” rendelkezik. Alapesetben egyedül jogosult a rendszer működését meghatározó paraméterek lekérdezésére, megváltoztatására. „Privilégiumai” egy részét át sem tudja ruházni. A Guest létrehozásának célja az volt, hogy legyen olyan korlátozott jogosultságú felhasználó, aki eleve nem képes komolyabb feladatok elvégzésére, és ebből a korlátozásból nem tud kilépni sem. A csoportok fogalma később részletesebben tisztázásra kerül. Egyelőre annyit érdemes tudni, hogy engedélyeket, jogokat csoportokhoz is hozzá lehet rendelni, és ezeket az engedélyeket, jogokat a csoport tagjai megkapják.
Érdemes két másik fogalmat is tisztázni, az engedélyt (permission) és a jogot (right). Az engedély erőforrás használathoz kötődik (van engedélyem olvasni egy fájlt, nincs engedélyem törölni egy fájlt, nincs engedélyem nyomtatni, stb.). Jog pedig rendszertevékenység elvégzéséhez kötődik (van jogom módosítani a rendszeridőt, nincs jogom archiválni, nincs jogom lokálisan bejelentkezni, nincs jogom leállítani a rendszert, stb.). A jogosultságok egy része átruházható, illetve a jogot élvezők köre bővíthető, szűkíthető. Több operációs rendszerben ezek a fogalmak összemosódnak.

Felhasználók létrehozása

Felhasználókat kétféleképpen lehet létrehozni: vagy teljesen új felhasználó létrehozásával, vagy egy meglévő felhasználó másolásával. Workgroup esetében (illetve olyan tartománybeli gépeken, amelyek nem tartományvezérlők) felhasználók létrehozására, módosítására a Microsoft Management Console-hoz (mmc) egy hozzáadott alkalmazás (úgynevezett snap-in-ek) szolgál. A szükséges snap-in neve: Local Users and Groups. Domain esetében mindkét célra az Active Directory Users and Computers nevű alkalmazás szolgál (21. ábra).

Az Active Directory Users and Computers indítása
Az MMC segítségével a legtöbb rendszergazdai tevékenység elvégezhető. Tetszés szerint kialakítható MMC-k hozhatók létre, és azokat el lehet menteni. Az operációs rendszer installálásakor több előre kialakított MMC is felkerül, amiket menük segítségével lehet elindítani. Néhány fontosabb Snap-in:
  1. Számítógép kezelő (Computer Management)
  2. Eszköz kezelő (Device Management)
  3. Diszk kezelő (Disk Management)
  4. Eseményfigyelő (Event Viewer)
  5. Helyi felhasználók és csoportok (Local Users and Groups)
  6. Rendszer információk (System Information)
Az installálás témakörénél tisztázásra került a munkacsoport és a tartomány fogalma. Nem tartományvezérlőn csak helyi felhasználót (local user) lehet létrehozni, aki csak az adott számítógépre fog tudni belépni. Tartományvezérlőn pedig csak tartományi felhasználót (domain user) lehet létrehozni, aki a tartomány minden számítógépén be tud lépni (…ha ez nem kerül korlátozásra). Tartományvezérlőn helyi felhasználó nincs. Ezt a helyi felhasználók kezelésére szolgáló program a megfelelő menüben piros X-szel jelzi is.
Egy felhasználó létrehozásakor az operációs rendszer a felhasználóhoz hozzárendel egy azonosítót, amivel sikeres belépés után a felhasználó tevékenységét követi. A Windows-ban ez az azonosító a SID (Security Identification). A SID-et a Windows bizonyos szabályok betartásával generálja, és kiterjedten használja. (pl.: SID-je van a csoportoknak, de SID-je van az installációnak is!) Ha a felhasználó ezek után létrehoz egy fájlt, akkor a Windows nem a felhasználó nevét írja a fájl mellé, mint tulajdonost, hanem a felhasználó SID-jét. Ezért, ha a felhasználót valami ok miatt töröljük a felhasználók közül, majd később ugyanolyan néven létrehozzuk, akkor a generálás véletlenszerű része miatt a felhasználó nem a korábbi SID-jét kapja vissza. A felhasználó SID-jének megváltoztatására nincs lehetőség, korábbi fájljainak tulajdonosánál a törölt SID látszik, de mert a felhasználó törlésre került, ezért az operációs rendszer nem tudja a SID-et feloldani névvel. A felhasználó tehát nem lesz tulajdonosa korábbi fájljainak. A korrigálás igen macerás és időigényes. Elkerülésére a javaslat az, hogy a felhasználókat nem törölni kell, hanem letiltani. A letiltás később bármikor feloldható.
Kisebb vállalatok esetében a másolás viszonylag ritkán kerül használatra. A módszer eleve csak domain esetében áll rendelkezésre, és tulajdonképpen akkor kifizetődő, ha nagyobb létszámú olyan felhasználó van, vagy lesz, akik több jellemzőjükben (például csoporttagságukban) hasonlítanak egymásra.

Új felhasználó létrehozása
Létrehozáskor (22. ábra) tartomány esetében jellemzően meg kell adni a felhasználó nevét (Firstname, Lastname, Fullname), bejelentkezési nevét (User logon name), induló jelszavát (Password),

 Az új felhasználó alapadatainak megadása

majd checkbox-ok segítségével lehet kiválasztani a következőket (23. ábra):
  1. a felhasználónak az első sikeres bejelentkezéskor meg kell változtatnia jelszavát (User must change password at next logon);
  2. a felhasználó nem módosíthatja jelszavát (User cannot change password). Jellemző közösen használt fiók (account) esetében;
  3. a jelszó sohasem jár le (Password never expires);
  4. a fiók le van tiltva (Account is disabled).
Létrehozás után már további jellemzők is megadhatók 

Létező felhasználó adatainak megtekintése, módosítása
  1. telefonszámok (mobil, vezetékes, otthoni, fax, stb)
  2. e-mail cím
  3. web oldal címe
  4. lakcím vagy munkahelyi cím adatok (város, irányítószám, megye, stb)
  5. mely gépekről jelentkezhet be
  6. mely napokon, és azon belül mely időpontokban
  7. az account lejáratának ideje (soha, vagy egy adott nap).
Fontos tisztázni, hogy a felhasználó bejelentkezési nevének egyedinek kell lennie, hiszen két vagy több azonos nevű felhasználó esetében az azonos nevű felhasználókat már csak jelszavuk különböztetné meg egymástól. A felhasználó bejelentkezési nevének bizonyos kötöttségeket kell teljesítenie:
  1. fontos, hogy érvényességi körén belül egyedinek kell lennie (munkacsoport esetében az adott gépen, tartomány esetében az egész tartományban)
  2. a név bár 256 karakter hosszú is lehet, de nem javasolt, hogy hosszabb legyen, mint 64 karakter (minden bejelentkezéskor be kell gépelni…)
  3. ne tartalmazza a következő karakterek egyikét sem:   <  >  ?  =  *  +  ,  \  [  ]  /  |  
  4. nem hiba, de nem javasolt ékezetes karakterek használata, mert ékezet nélküli billentyűzeten problémát okozhat azok bevitele.
Ha a név megadásánál kisbetűk és nagy betűk is használatra kerültek, a Windows megjegyzi azt, de megadásnál nem különbözteti meg. Ennek megfelelően a következő nevek azonosítás szempontjából egymással egyenértékűek: kovacs, KOVACS, Kovacs, stb.

Csoportok létrehozása

A létrehozott felhasználók segítségével szabályozni lehet, kik jelentkezhetnek be a számítógépre. Ezek a felhasználók munkájuk során erőforrásokat fognak használni (nyomtatók, diszkek). A költséges erőforrások használatát célszerű korlátozni. Ugyancsak célszerű korlátozni a diszken tárolt fájlokhoz való hozzáféréseket is, a bennük levő információ miatt. Hozzáférési engedély megadása esetén jellemzően lesznek olyan felhasználók, akik a fájlokat olvashatják, és lesznek olyanok, akik módosíthatják is azokat. Ez a korábban már bevezetett engedélyek segítségével szabályozható. Nagyobb méretű vállalat esetében (bár a felhasználók egyediek) a felhasználók igényeit áttekintve általában kialakíthatók olyan csoportok, amely csoportba tartozó felhasználók jellemzően azonos erőforrásokat fognak használni, azonos módon. Ilyen esetekben ugyan van lehetősége a rendszergazdának arra, hogy mindenkinek egyedileg adja meg az engedélyeket, de sok felhasználó esetében ez időigényes, és többször lehet hibázni is. A feladat leegyszerűsítése érdekében csoportokat lehet létrehozni, és az engedélyeket a csoportokhoz lehet hozzárendelni. Ez után meg kell adni, mely felhasználók mely csoportokba tartoznak. A csoporttagság miatt automatikusan megkapják a csoporthoz rendelt erőforrás használati engedélyeket. Ha később (bármilyen okból) módosítani kell egy erőforrás használatának jellegét (olvasásról olvasás + írásra), akkor nem kell egyesével minden felhasználót módosítani, hanem csak a csoporthoz rendelt engedélyeket kell módosítani, és már a módosított engedélyek fognak a felhasználókra vonatkozni.

Új csoport létrehozása az Active Directory Users and Computers-ben
Tartomány esetében a csoport létrehozásánál (25. ábra) meg kell adni a csoport nevét (hasonló kötöttségekkel, mint a felhasználói név esetében), valamint ki kell választani a csoport hatókörét (hatókör: scope) (Domain Local – Tartományi helyi, Global – Globális, illetve Universal – Univerzális). A hatókör meghatározza, hol lehet hivatkozni a csoport nevére. Ugyancsak meg kejll adni a csoport típusát (típus: type) (Security – Biztonsági illetve Distribution – Terjesztési) (26. ábra). Összefoglalva, e két utolsó adat megadásával tulajdonképpen az kerül meghatározásra, hogy hol, és milyen célokra lehet majd használni a csoportot.
Már létező csoportok esetében kétféle módon lehet megadni a csoporttagságot:
  1. Az első esetben ki kell választani azt a csoportot, amelynek a tagjait módosítani kell, majd a Members (tagok) fül segítségével bővíthető, szűkíthető a tagok listája.
  2. A másik esetben a felhasználók oldaláról lehet megközelíteni a csoporttagságot. Kiválasztva a felhasználót, a Member Of (Tagja ezeknek a csoportoknak) fül segítségével meg lehet adni, mely csoportoknak legyen tagja.

Csoport létrehozásánál megadásra kerülő adatok
Bár mindkét módszer járható, egy konkrét esetben azt érdemes választani, amelyikkel egyszerűbb a feladat megoldása. Ha a csoporthoz kell több felhasználót hozzáadni, akkor a csoport oldaláról javasolt a feladatot elvégezni, ha pedig a felhasználót kell több csoportba beletenni, akkor a felhasználó oldaláról érdemes megoldani a feladatot (27. és 28. ábra).

 Csoporttagság módosítása a felhasználó felől

Csoporttagság módosítása a csoport felől
A felhasználó csoporttagságainak bővítését mutatja be a 29. ábra.

A felhasználó csoporttagságának kibővítése tartomány esetén
(Add. Advanced…, Find Now)
Vegyük a csoport hatókörét. Tételezzük fel, hogy egy konkrét vállalat esetében különböző osztályok vannak: Tervezési Osztály, Bér és Munkaügyi Osztály, Kiszállítási Osztály, stb. Ezeken az osztályokon van egy osztályvezető, akinek van titkárnője, és beosztottjai. Ebben az esetben célszerűnek látszik olyan csoportok létrehozása, amelyek megegyeznek az osztályok nevével. Például: TervO, BMO, KO, stb. A csoportoknak azok a felhasználók lesznek a tagjai, akik az adott osztályon dolgoznak. Ez jól áttekinthető csoporttagságot eredményez. Ugyanakkor érdemes végiggondolni, hogy az egyes osztályokon dolgozó titkárnők valószínűleg ugyanazokat az alkalmazásokat használják, és lesznek közösen használt fájljaik. Emiatt érdemes ilyen jellegű csoportokat is létrehozni (Titkarnok). Ebből adódóan lesznek olyan felhasználók, akik két, vagy még több csoportnak lesznek a tagjai. Ezzel a módszerrel könnyen kialakíthatók lesznek a csoportok, és a tagságok. Fontos tisztázni, hogy ekkor még semmilyen erőforráshoz való hozzáférés nem került meghatározásra. Az erre a célra létrehozott csoportok esetében a csoport hatókörének a Globális csoportot kell megadni.
Az engedélyek hozzárendelése akkor egyszerűsödne, ha a csoportok egymásba ágyazhatók lennének. Az egyik csoportba a felhasználók kerülnek, a másik csoporthoz pedig hozzárendelésre kerülnek az erőforrás használati engedélyek. Az egymásba ágyazás lehetséges, de nem tetszőleges módon. Globális csoportba tartományi helyi csoportot nem lehet beletenni, viszont tartományi helyi csoportba globális csoport (is) beletehető. Nézzük ennek figyelembevételével a tartományi helyi csoportokat.
Sor kerül tehát sor az erőforrásokhoz való hozzáférési engedélyek megadására. Az erőforrások (tartomány esetében) jellemzően valamelyik tartománybeli számítógépen keresztül állnak rendelkezésre. Az erőforráshoz való hozzáféréshez emiatt a felhasználónak olyan felhasználónak kell lennie, aki az adott számítógépen rendelkezik (helyi) felhasználói fiókkal. Korábban ugyanakkor tisztázásra került, hogy tartomány esetében nem célszerű helyi felhasználókkal dolgozni. Helyettük erre a célra a tartományi felhasználók vannak. Az ellentmondás feloldására alakították ki a tartományi helyi csoportokat. A globális csoportok a vállalat felépítésének megfelelően kerülnek kialakításra. A tartományi helyi csoportok pedig az erőforrásoknak megfelelően. Így létezhet például egy Nyomtathatnak nevű csoport. A csoport tagjainak megadjuk egy adott nyomtatóra való nyomtatás engedélyét. Mivel jelenleg még üres a csoport (hiszen most jött létre), ezért (az engedély megadásának ellenére) senki nem fog tudni nyomtatni. A következő lépés az, hogy fel kell tölteni ezt a csoportot.
Bármilyen hatókörű csoportról is beszélünk, csoportba egy felhasználó mindig beletehető. Viszont a globális csoportokban a felhasználók már benne vannak. Annak érdekében, hogy ezt fel lehessen használni, a tartományi helyi csoportokba bele lehet tenni globális csoportokat is. Előtte azonban meg kell vizsgálni a csoportok másik jellemzőjét, a típusát.
A biztonsági csoport rendelkezik a korábban már bevezetett SID-del, ami egyedi azonosításra ad lehetőséget, és így alkalmas hozzáférési engedélyek kezelésére. A terjesztési csoportnak nincs SID-je, ezért terjesztési csoporthoz nem lehet hozzáférési engedélyt rendelni. Az univerzális csoportokat egyelőre elhagyva a lehetséges csoporttok a következők lehetnek:
  1. Tartományi helyi, biztonsági (Domain Local Security - DLS)
  2. Tartományi helyi, terjesztési (Domain Local, Distribution – DLD)
  3. Globális, biztonsági (Global Security – GLS)
  4. Globális, terjesztési (Global Distribution – GLD).
Az előbb bevezetett rövidítések segítségével áttekinthető formában megadható, hogy mely csoportok ágyazhatók egymásba:
  1. DLS-be: DLD, DLS, GLD,
  2. DLD-be: DLD, DLS, GLD, GLS,
  3. GLS-be: GLD, GLS,
  4. GLD-be: GLD, GLS.
A felsorolás segítségével ellenőrizhető, hogy globális csoportba valóban csak globális csoport tehető bele. Ugyancsak a fenti rövidítések segítségével megadható az is, hogy ha hozzáférési engedélyt kell adni egy erőforráshoz, akkor ott csak DLS, illetve GLS fog megjelenni.
Első alkalommal gondot okozhat annak megértése, hogy mi történik olyan esetekben, ha egy felhasználó több csoportnak a tagja, és különböző csoporttagságai révén különböző hozzáférési engedélyekhez jut. Ennek megoldása tulajdonképpen egyszerű: egy adott erőforrás esetén tetszőleges sorrendben venni kell az egyes csoporttagságokkal járó hozzáférési engedélyeket, és azokat összegezni (kumulálni) kell. Példán keresztül: ha egy felhasználó Users csoporttagsága miatt kap egy olvasási engedélyt egy adott fájl esetében, egy másik csoporttagsága miatt pedig kap egy írási engedélyt, akkor ezek eredője az olvasási + írási engedély lesz. Ha a sorrend lenne a meghatározó, akkor az írási (mint másodszor megvizsgált engedély) felülírná az olvasási engedélyt, és az a fura helyzet állna elő, hogy olvasni ugyan nem tudja a felhasználó a fájlt, de írni igen.
A tiltás (egy engedély megvonása) mindent felülír függetlenül attól, hogy milyen sorrendben vizsgáljuk a csoporttagságokat.
Forrás;, https://gyires.inf.unideb.hu/KMITT/c09/ch01s05.html
https://support.google.com/groups/answer/2464926?hl=hu
https://gyires.inf.unideb.hu/KMITT/

Letöltés
https://m-info.hu/sites/default/files/oktatas/Windows_Server_2012_munkakornyezet_Office_365_%282012%29.pdf

2020. február 25., kedd

Java programozás gyakorlati óra

az elsõ 10 egészszám kiíratása
----------- 
public class Szamok {

 public static void main(String[] args) {
  int i,n=10;

  System.out.println("Az elso "+n+" egesz szam:");
  for(i=1;i<=n;i++){
   System.out.println(i);
   }
  }

 }
----------- 
 az elsõ 5 egész szám kiíratása növekvõ és csökkenõ sorrendben
--------------
public class Szamok1 {

 public static void main(String[] args) {
  int i,n=5;

  System.out.println("Az elso "+n+" egesz szam:");
  for(i=1;i<=n;i++){
   System.out.println(i);
   }
  System.out.println("Az elso "+n+" egesz szam visszafele:");
  for(i=n;i>=1;i--){
   System.out.println(i);
   }
  }

 } 
-------------
public class Szamok1a {

 public static void main(String[] args) {
  int i,n=20;

  System.out.println("Az elso "+n+" egesz szam:");
  i=15; //kezdőértékadás
  while(i<=20) {
   System.out.println(i);
   i++; //ciklusváltozó növelése
   }
  i=30;
  System.out.println("Az elso "+n+" egesz szam visszafele:");
  while(i>=25) {
   System.out.println(i);
   i--;
   }
  }

 } 
------------
public class Szamok1b {

 public static void main(String[] args) {
  int i,n=5;

  System.out.println("Az elso "+n+" egesz szam:");
  i=1; //kezdőértékadás
  do { //"do" blokk = a ciklusmag
   System.out.println(i);
   i++; //ciklusváltozó növelése
   } while(i<=n); //ciklusfeltétel: amíg igaz, addig ismétli a ciklusmagot
  i=n;
  System.out.println("Az elso "+n+" egesz szam visszafele:");
  do {
   System.out.println(i);
   i--;
   } while(i>=1);
  }

 } 
----------------
az elsõ 10 páratlanszám kiíratása 
-----------
public class Szamok2 {

 public static void main(String[] args) {
  int i,j,n=10;

  System.out.println("Az elso "+n+" paratlan szam:");
  j=1; //első páratlan szám
  for(i=1;i<=n;i++){
   System.out.println(j);
   j+=2; //következő páratlan szám
   }
  }

 } 
--------------
az elsõ 10 párosszám kiíratása 
--------------
public class Szamok2a {

 public static void main(String[] args) {
  int i,j,n=10;

  System.out.println("Az elso "+n+" paros szam:");
  j=2; //első páros szám
  for(i=1;i<=n;i++){
   System.out.println(j);
   j+=2; //következő paros szám
   }
  }

 } 
----------------
visszafelé
----------
public class Szamok2b {

 public static void main(String[] args) {
  int i,j,n=10;

  System.out.println("Az elso "+n+" paros szam visszafele:");
  j=2*10; //a 10. páros szám
  for(i=1;i<=n;i++){
   System.out.println(j);
   j-=2; //következő paros szám
   }
  }

 } 
------------
az elsõ 10 szám összegének kiszámítása 
-----------
public class Osszeg {

 public static void main(String[] args) {
  int i,sum,n=31;

  System.out.print("Az elso "+n+" egesz szam osszegenek erteke: ");
  sum=0;
  for(i=42;i<=73;i++){
   sum+=i;
   }
  System.out.println(sum);
  }

 } 
---------------
faktoriális
-------------
public class Fakt {

 public static void main(String[] args) {
  int i,n=10;
  long f; //bővebb értéktartomány

  f=1;
  for(i=2;i<=n;i++){
   f*=i;
   }
  System.out.println(n+" faktorialisanak erteke: "+f);
  }

 } 
--------------
az elsõ 10 páratlanszám szorzatának kiszámítása 
------------
public class Fakt3 {

 public static void main(String[] args) {
  int i,j,n=10;
  long f; //bővebb értéktartomány

  f=1;
  j=1;
  for(i=1;i<=n;i++){
   f*=j;
   j+=2;
   }
  System.out.println("Az elso "+n+" paratlan szam szorzatanak erteke: "+f);
  }

 } 
-----------------
az elsõ 5 páratlanszám összegének és szorzatának kiszámítása 
---------------
public class Fakt4 {

 public static void main(String[] args) {
  int i,j,sum,n=5;
  long f; //bővebb értéktartomány

  sum=0;
  f=1;
  j=1;
  for(i=1;i<=n;i++){
   sum+=j;
   f*=j;
   j+=2;
   }
  System.out.println("Az elso "+n+" paratlan szam osszegenek erteke: "+sum);
  System.out.println("Az elso "+n+" paratlan szam szorzatanak erteke: "+f);
  }

 } 
------------------
az elsõ 10 négyzetszámkiíratása 
---------------
public class Negyzet {

 public static void main(String[] args) {
  int i,n=10;

  System.out.println("Az elso 10 negyzetszam:");
  for(i=1;i<=n;i++){
   System.out.println(i+"*"+i+" = "+i*i);
   }
  }

 } 
-------------------
2 elsõ 10 pozitív hatványának kiíratása 
---------------
public class Hatvany {

 public static void main(String[] args) {
  int i,n=10;
  double h=2.0,x;

  x=1.0; //h^0 (h nulladik hatványa)
  System.out.println(h+" elso 10 hatvanya:");
  for(i=0;i<n;i++){
   System.out.println(h+"^"+i+" = "+x);
   x*=h;
   }
  }

 } 
-------------------
5 db véletlen egész szám kiíratása az [1,90] intervallumból ((int)) 
-------------
public class Veletlen3 {

 public static void main(String[] args) {
  int i,veletlen,n=5,min=1,max=90;
  
  System.out.println(n+" darab veletlen egesz szam a(z) ["+
                     min+","+max+"] intervallumbol:");
  for(i=1;i<=n;i++){
   veletlen=(int)(max*Math.random())+min; //típuskényszerítés (int)-re
   System.out.println(veletlen);
   }
  }

 } 
-------------------
Lotto
-----------
import java.awt.*;
import java.awt.event.*;

public class LottoFrame extends Frame implements WindowListener {

 public LottoFrame(String s) { //konstruktor paraméterrel
  super(s); //a Frame osztály konstruktora beállítja az ablak címsorát
  }

 public static void main(String[] args) {
  LottoFrame frame=new LottoFrame("Lottószámok");

  frame.setSize(150,70); //beállítja az ablak méretét
  frame.addWindowListener(frame); //bekapcsolja az ablakesemények figyelését
  frame.show(); //kirajzolja az ablakot
  }

 public void paint(Graphics g) {
  int i;
  Lotto lotto=new Lotto();
  
  g.drawString("A javasolt lottószámok:",5,42);
  for(i=0;i<Lotto.MAXNUM;i++){
   lotto.general();
   }
  for(i=0;i<Lotto.MAXNUM;i++){
   g.drawString(""+lotto.kihuz(),24*i+5,54);
   }
  }

 public void windowOpened(WindowEvent e) {}
 public void windowClosing(WindowEvent e) {
  System.exit(0);
  }
 public void windowClosed(WindowEvent e) {}
 public void windowIconified(WindowEvent e) {}
 public void windowDeiconified(WindowEvent e) {}
 public void windowActivated(WindowEvent e) {}
 public void windowDeactivated(WindowEvent e) {}

 }
---------------
Java tabulás Netbeenben
 
http://java2.uw.hu/ 
http://www.petrik.hu/files/tamop/SZINFO13/SZINFO13_TJ.pdf 
http://ctp.mkprog.eu/hu/java/menu/tipusok_es_valtozok/ 
https://szit.hu/doku.php?id=oktatas:programozas:programozasi_feladatok:java_nyelvhez_kapcsolodo_feladatok 
http://glac.hupont.hu/10/programozas 
https://hu.eferrit.com/category/java-programozas/ 
 
 

Példa CSS tartalmára

body {font-family: Arial, Helvetica, sans-serif; font-size: 100.01%; margin: 0; background-color: #ccc; }
#container {width: 800px; margin-top: 15px; margin-right: auto; margin-left: auto;}

h1 {font-size: 2em; color: #363; text-align: center;}

#fejlec {width: 770px; border-bottom: 2px solid #fc3; margin-left: 5px;}
#jelkep {float: left; width: 60px;}
#cim {width: 660px; text-align: center; margin-top: 5px;  padding-top: 1px;}


#tartalomjegyzek {width: 770px; margin-top: 15px; margin-left: 5px;}
#tartalomjegyzek table {width: 80%; margin-right: auto; margin-left: auto;}
td {padding-left: 30px; font-weight: bold;}

#tartalomjegyzek a {text-decoration: none; font-size: 12px; color: black; line-height: 150%;}
#tartalomjegyzek a:hover { color: blue; border-bottom: 1px solid blue;}

li{font-size: 12px;}

PHP gyakorlófeladatok

Szorzótábla

<?php
session_start();

include('./start.php');

$_GET['meddig']=3;
$_SESSION['meddig']=$_GET['meddig'];

if (!isset($_SESSION['ok']))
{
$_SESSION['ok'] = 0;
}
  
if (isset($_POST['ujra']))
    {
        unset($_SESSION);
        session_destroy();
        header("Refresh: 1; url=./szamol.php");
    }

if (isset($_POST['gomb']))
    {
    if (($_SESSION['V1']*$_SESSION['V2'])==$_POST['ertek'])
        {
         $_SESSION['ok']=$_SESSION['ok']+1;  
        }  
    }

Táblázatként szorzótábla

<?php
print("<table border='1'>");
for ($i=1;$i<3;$i++)
{
print ("<tr>");
for ($x=1; $x<3; $x++)
{
print ("<td>");
print ('adat');
print ("</td>");
}
print ("</tr>");
}
print ("</table>");
?>


Két for ciklussal

<?php
print("<table border='1'>");
for ($i=1;$i<3;$i++)
    {
    print ("<tr>");
    for ($x=1; $x<3; $x++)
        {
        print ("<td>");
        print ('adat');
        print ("</td>");
        }
    print ("</tr>");
    }
print ("</table>");
?>

Kör kerülete területe
<?php
$pi= M_PI;
echo "Pi értéke = $pi <br />";


$r = 10;                 // Kör sugara.
$kerulet= (2*$r)*M_PI;
echo "A kör kerülete = $kerulet <br />";

$terulet= ($r*$r)*M_PI;
echo "A kör területe = $terulet <br />";
?<


3*3-as táblázat  benne adat.

<?php
print("<table border='1'>\n");
for ($i=1;$i<4;$i++)
    {
    print ("<tr>");
    for ($x=1; $x<4; $x++)
        {
        print ("\t<td>");
        print ('adat');
        print ("</td>\n");
        }
    print ("</tr>\n");
    }
print ("</table>");
?>

Szorzótábla

<?php

print("<table border=\"1\">\n");

for ($i=1;$i<11;$i++)
    {
    print ("<tr>\n");

    for ($x=1;$x<11;$x++)
        {
        print ("\t<td>");
        print ($i*$x);
        print ("</td>\n");
        }

    print ("</tr>\n");
    }

print ("</table>");

?>


Ciklusok PHP-ban

FOR: előírt lépésszámú ciklus

WHILE: elöl tesztelő ciklus

DO-WHILE: hátul tesztelő ciklus

CONTINUE: A continue utasítást olyankor használjuk, amikor a ciklusban levő, a contiue utasítás után következő kódrészletet át akarjuk ugrani

BREAK: A break csak cikluson belül használható, és a for, foreach, while, do .. while  ciklusok futását szakítja meg.


Példa

<?php
for ($szam=1;$szam<=10;$szam+=2)
{
print "A szam változó értéke: $szam, négyzete: ";
print $szam*$szam;
print "<br>";
}
?> FOR
<?php
for ($i=1;$i<5;$i++)
{
for ($j=1;$j<4;$j++)
{
print "Az i változó értéke: $i";
print ", a j változó értéke: $j<br>";
}
}
?> FOR DEMO
<?php
$szam=1;
while ($szam<=10)
{
print "A szam változó értéke: $szam<br>";
$szam++;
}
?> WHILE
<?php
$szam=10;
while ($szam>0)
{
print "A szam változó értéke: $szam, négyzete: ";
print $szam*$szam;
print "<br>";
$szam-=2;
}
?> WHILE
<?php
$szam=1;//mindaddig megjelennek a számok amíg meg nem haladják a 10-et
do
{
print "A szam változó értéke: $szam, négyzete: ";
print $szam*$szam;
print "<br>";
$szam+=2;
} while ($szam<=10);
?> DO-WHILE
<?php
for ($i=1;$i<6;$i++)
{
for ($j=1;$j<5;$j++)
{
if ($j==2) continue;//ha ezt sort elhagyjuk j == 2 is megjelenik
print "Az i változó értéke: $i";
print ", a j változó értéke: $j<br>";
}
}
?> CONTINUE
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>A contiune utasítás használata</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
</head>

<body>
<?php
for ($i=10;$i>-11;$i--)
{
if ($i==0) continue;
print(" <br>100 / $i = ". 100/$i);
}
?>
</body>
</html>

CONTINUE
<?php
for ($szam=1;$szam<=10;$szam+=2)
{
if ($szam*$szam<20) break;
print "A szam változó értéke: $szam, négyzete: ";
print $szam*$szam;
print "<br>";
}
?> FOR-BREAK DEMO
<?php
for ($i = 0; $i < 10; $i++) {                     //3. szint     
        for ($j = 0; $j < 10; $j++) {             //2. szint
                for ($z = 0; $z < 100; $z++) {    //1. szint
                        if ($z > 10) {
                                break 2;        //2. szintre tör ki
                        }
                        echo "i: $i, j: $j, z: $z\n";
                }
        }
}
?> BREAK 2
Az utasítás számot is fogadhat el argumentumként: ha meg van adva, akkor ez a szám határozza meg, hogy az egymásba ágyazott ciklusokból milyen szintig kell kitörni.
 




Minta feladatok
Kód
Minta
<html>
<head>
<title>Szorzótábla kiíratása</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
</head>

<body>
<?php
print("<table border=\"1\">\n");
for ($i=1;$i<11;$i++)
{
print ("<tr>\n");
for ($j=1;$j<15;$j++)
{
print ("\t<td>");
print ($i*$j);
print ("</td>\n");
}
print ("</tr>\n");
}
print ("</table>");
?>
</body>
</html>


Szorzótábla

Írj egy programot ciklusutasítást használva, amely az alábbi elrendezésű szöveget írja ki a képernyőre:
2222
222
22
2



<?php
for($a=4;$a>=1;$a--)
{
for($b=1;$b<=$a;$b++)
{
print("2");
}
print("<br>");
}

?>

Írjon egy programot, amelyben egy x elemű tömböt tetszőleges értékekkel tölt fel, majd kiírja, hogy a tömbben hány darab olyan szám van, amely nagyobb, mint a és kisebb b.
<?php
for($i=1;$i<=x;$i++) //tömb feltöltése
{
$t[$i]=rand(5,25);
}

for($i=1;$i<=x;$i++) //teszt
{
print($t[$i]."<br>");
}

$szamlalo=0;

for($i=1;$i<=x;$i++)
{
if (($t[$i]>a) and ($t[$i]<b))
{
$szamlalo++;
}
}
print("A a-b közti számok: ".$szamlalo);
?>


Dátum php-ban
<?php
$maidatum = date ("m" ,time()) . "-hó " . date("d" ,time()) . ". napja " .
$maidatum = "";

echo "<h6>";
echo $maidatum;
echo " van ma!</h6>";

?>


Idő php-ban

<?php
echo date("Y.m.d. H:i",time());
?>


PHP kiterjesztés

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>PHP kiterjesztésű weblap </title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
<link href="stílus.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="azonosító">
<h1> PHP kiterjesztésű weblap </h1>
<?php
Ide jön, a PHP program leírása!
?>
</div>
</body>
</html>


Kör kerülete
 <?php
print_r($_GET);
print_r($_POST);
?>
<!doctype html>
<html>
    <head>
        <meta charset="utf-8">
        <title>Kerület</title>
    </head>
    <body>
<?php
//beolvasás
$sugar = $_GET['sugar'];
//feldolgozás
$pi = pi();
$ker = 2 * $sugar * $pi;
//kiirás
?>
        <p>Sugár = <?php echo $sugar; ?></p>
        <p>Kerület = <?php echo $ker; ?></p>
    </body>
</html>

---------------


 <?php
//nyomkövetés
print_r($_GET);
print_r($_POST);
 
$hiba = '';
if ($_POST) {
 
    //beolvasás
    $sugar = null;
    if (isset($_GET['sugar'])) {
        $sugar = $_GET['sugar'];
    }
 
    //előfeltétel ellenőrzése
    $hiba = '';
    if (is_null($sugar)) {
        $hiba = 'Sugár hiányzik!';
    }
    else if ($sugar == '') {
        $hiba = 'Sugár üres!';
    }
    else if (!is_numeric($sugar)) {
        $hiba = 'Sugár nem szám!';
    }
    if (!$hiba) {
 
        //feldolgozás
        $pi = pi();
        $ker = 2 * $sugar * $pi;
    }
}
 
//kiírás
?>
<!doctype html>
<html>
    <head>
        <meta charset="utf-8">
        <title>Kerület</title>
    </head>
    <body>
        <?php if ($hiba) : ?>
            <p><?php echo $hiba; ?></p>
        <?php endif; ?>
 
        <form action="kerulet.php" method="post">
            Sugár: <input type="text" name="sugar">
            <input type="submit">
        </form>
 
        <?php if (isset($ker)) : ?>
            <p>Sugár = <?php echo $sugar; ?></p>
            <p>Kerület = <?php echo $ker; ?></p>
        <?php endif; ?>
  </body>
</html>

------------














Terület kiszámítása

<?php
function terulet($aoldal, $boldal)
    {
        print("Terület $aoldal * $boldal= ". $aoldal * $boldal. "<br>");
    }
// Következik a paraméter átadás.
terulet(4, 8);
terulet(6, 7);
?>

Java programozás játék forrása

Bemelegitésnek

Példa ciklusra
for( int i = 0; i < 20; i++ ) {  System.out.println(i);}
vagy
for( int i = 0; i < 50; i++ ){  System.out.println(i + 1);}
Lottó sorsolás véletlen
for( int i = 0; i < 5; i++ ){  System.out.println( (int)(Math.random() * 90) + 1 );}
Páros számok
for( int i = 1; i <= 20; i++ ){  System.out.println(i * 2);}
Másik módszer
for( int i = 0; i < 20; i++ )
{
  System.out.println((i + 1) * 2);
}
És ha az 1-től indulva kell 20 páratlan?

for( int i = 1; i <= 20; i++ )
{
  System.out.println(i * 2 - 1);
}
A párosokból 1-et kivonva páratlanokat kapunk. Vagy 0-tól indulva:

for( int i = 0; i < 20; i++ )
{
  System.out.println(i * 2 + 1);
}
De csak hogy lássuk milyen rugalmas is a for ciklus, lássunk a párosokra egy másik megoldást:

for( int i = 2; i <= 40; i += 2 )
{
  System.out.println(i);
}

Elől tesztelő ciklusra példa
int db = 0;
int szam;
while( db != 10 )
{
  szam = (int)(Math.random() * 100) + 1;
  if( szam % 2 != 0 )
  {
    System.out.println(szam);
    db++;
  }
}

Értelmezzük a programot
kell egy változó, ami azt számolja majd, hogy hány páratlan számot sorsoltunk, mert a párosokkal nem foglalkozunk deklaráltam egy szam nevű változót, ahol az aktuálisan kisorsolt számot tároljuk
a ciklust futási feltétele az, hogy amíg nincs 10 páratlan szám, addig sorsolgasson a ciklusban sorsolok egy számot, és eltárolom miután kisorsoltam, megvizsgálom, hogy páratlan-e ha páratlan, akkor kiírom a sorsolt számot, és növelem eggyel a számlálót ha nem páratlan, akkor a ciklusmagból semmi nem hajtódik végre, mert nem megfelelő a szám és ismét próbálkozik egy sorsolással.

 Számítsuk ki két egész szám osztóját
Nem, nem a prímtényezős alakra bontással oldjuk meg

int szam1 = 660;
int szam2 = 366;
while( szam1 != szam2 )
{
  if( szam1 > szam2 )
  {
    szam1 = szam1 - szam2 ;
  }
  else
  {
    szam2 = szam2 - szam1 ;
  }
}
System.out.println("A ket szam legnagyobb kozos osztoja: " + szam1);

Értelmezzük elsőnek deklarálunk 2 változót a vizsgált számoknak kell egy ciklus azzal a futási feltétellel, hogy addig kell a kivonásokat ismételni, amíg a két szám nem egyenlő ha a szam1 a nagyobb, akkor abból vonjuk ki a szam2-őt fordított esetben a szam2-ből vonjuk ki a szam1-et
amikor a ciklus befejeződik, akkor a két szám bármelyike (mivel egyenlőek) a legnagyobb közös osztót jelenti, amit ki is íratunk Ha észrevetted, az is előfordulhat, hogy a ciklus egyszer sem fut le. Mi van akkor, ha a két szám alapból egyenlő? Akkor is kiírathatom bármelyiket, vagyis a ciklus utáni sorra lép a program és kiírja az egyiket. Az elöl tesztelő ciklusnál lehetséges, hogy a ciklus egyszer sem fut le!!!

Sorsolj ki egy páros számot a [10;50] intervallumból. Azt még egyszerűen megoldjuk, hogy az adott intervallumból sorsoljunk, de azzal a plusz feltétellel már nem tudunk mit kezdeni, hogy ez páros is legyen. Ezért addig sorsolunk, hogy a feltételnek megfelelő számot kapjunk:

int szam;
do
{
  szam = (int)(Math.random() * 41) + 10;
}
while( szam % 2 != 0 );

Nézzük akkor a programot részenként:
sorsolunk egy számot ha a szám 2-vel osztva nem 0 maradékot ad (páratlan), akkor a ciklus újraindul, vagyis megint sorsol egyet a ciklus akkor áll meg, ha a feltétel hamis lesz (páros) Azért jó itt a do-while ciklus, mert mindenképpen sorsolnom kell egy számot ahhoz, hogy megvizsgálhassam, meg kell-e ismételni a sorsolást. Természetesen összetett feltételt is megadhatok. Mondjuk olyan számot sorsoljunk az adott intervallumból, ami 2-vel és 5-tel is osztható:

int szam;
do
{
  szam = (int)(Math.random() * 41) + 10;
}
while( !(szam % 2 == 0 && szam % 5 == 0) );

Itt a ciklus futási feltételeként a kiemelt sorban egy összetett feltételt láthatsz, ami azért nem biztos, hogy annyira egyértelmű, mint amilyennek elsőre tűnik. A ciklus ugye akkor működik, ha a feltétel igaz. De itt eredetileg két részfeltételünk van, 2-vel és 5-tel osztható szám kell. Az már nem jó, ha esetleg egyik, vagy az sem, ha mindkét részfeltétel hamis. Igen ám, de a ciklus futási feltételeként nem azt kell megadni nekünk, amilyen számra nekünk szükségünk van, hanem pont az ellenkezőjét. Azt kell megadni, hogy milyen szám nem jó nekünk! Nézzük akkor lépésenként: szerkesszük meg azt a feltételt, ami nekünk megfelelő (ami összetett feltétel is lehet) negáljuk az egészet Természetesen itt is igaz, hogy ha akarjuk, egyszerűsíthetjük az összetett feltételt a már tanult módon:

while( !(szam % 2 == 0 && szam % 5 == 0) );

vagy ez

while( szam % 2 != 0 || szam % 5 != 0 );   





























Értelmezzétek a program forrását!

     import java.applet.*;
     import java.awt.*;
     public class Game extends Applet implements Runnable
     {
     }
     Thread gameThread;
     int width=400, height=400, MAX=1;
     int currentX[] = new int[MAX];
     int currentY[] = new int[MAX];
     public void start()
     {
          Thread gameThread = new Thread(this);
          gameThread.start();
     }
     public void init()
     {
          currentX[0]=0;
          currentY[0]=0;
     }
     public void run()
     {
     }
     public void paint(Graphics g)
     {
          update(g);
     }
     public void update(Graphics g)
     {
          Graphics2D g2 = (Graphics2D)g;

          // Háttérszín.

          g2.setBackground(Color.black);
          // Clear the applet.
          g2.clearRect(0, 0, width, height);
          // Rajzolószín zöld.
          g2.setColor(Color.green);
          //(X pos, Y pos, Width, Height)
          g2.fillOval(currentX[0], currentY[0], 20,20);
    }
     int speed=10; // Speed at which we will move the objects
     // Mozgatás
     int directionX[] = new int[MAX];
     int directionY[] = new int[MAX];
     long start=0;
     long tick_end_time;
     long tick_duration;
     long sleep_duration;
     static final int MIN_SLEEP_TIME = 10;
     static final int MAX_FPS = 20;
     static final int MAX_MS_PER_FRAME = 1000 / MAX_FPS;
     float fps=0;
     public void init()
     {
          currentX[0]=100;
          currentY[0]=0;
          directionX[0]=1;
          directionY[0]=0;
     }
     public void run()
     {
          while(true){
               start = System.currentTimeMillis();
               for(int i=0; i < MAX; i++){
                    if(directionX[i]==1)
                         currentX[i]+=speed;
                    if(directionX[i]==0)
                         currentX[i]-=speed;
                    if(currentX[i] <= 0)
                         directionX[i]=1;
                    if(currentX[i]+20 >= width)
                        directionX[i]=0;


                    if(directionY[i]==1)

                         currentY[i]+=speed;



                    if(directionY[i]==0)

                         currentY[i]-=speed;



                    if(currentY[i] <= 0)

                         directionY[i]=1;



                    if(currentY[i]+20 >= height)

                         directionY[i]=0;

               }



               repaint();



               tick_end_time = System.currentTimeMillis();

               tick_duration = tick_end_time - start;

               sleep_duration = MAX_MS_PER_FRAME - tick_duration;



               if (sleep_duration < MIN_SLEEP_TIME)

               {

                    sleep_duration = MIN_SLEEP_TIME;

               }

               fps = 1000 / (sleep_duration + tick_duration);



               try{

                    Thread.sleep(sleep_duration);

               } catch(InterruptedException e) {}



          }

     }




     start = System.currentTimeMillis();




     if(directionX[i]==1)

          currentX[i]+=speed;





     if(directionX[i]==0)

          currentX[i]-=speed;






These last two detect if the object has hit the side of the applet and if so change the direction:

     if(currentX[i] <= 0)

          directionX[i]=1;





     if(currentX[i]+20 >= width)

          directionX[i]=0;





     currentX[i]+20



     repaint();






     tick_end_time = System.currentTimeMillis();

     tick_duration = tick_end_time - start;

     sleep_duration = MAX_MS_PER_FRAME - tick_duration;



     if (sleep_duration < MIN_SLEEP_TIME)

     {

          sleep_duration = MIN_SLEEP_TIME;

     }

     fps = 1000 / (sleep_duration + tick_duration);





     try{

          Thread.sleep(sleep_duration);

     } catch(InterruptedException e) {}



     g.drawString("FPS: "+fps,1,400);


:




     java.awt.image.*;







     BufferedImage bufferdImg;

     Graphics2D bufferdImgSurface;






     bufferdImg = (BufferedImage)createImage(width, height);

     bufferdImgSurface = bufferdImg.createGraphics();






     public void update(Graphics g)

     {

          Graphics2D g2 = (Graphics2D)g;

          // Set the background color.

          bufferdImgSurface.setBackground(Color.black);



          // Clear the applet.

          bufferdImgSurface.clearRect(0, 0, width, height);



          bufferdImgSurface.setColor(Color.green);

          //(X pos, Y pos, Width, Height)

          bufferdImgSurface.fillOval(currentX[0], currentY[0], 20,20);



          g2.drawImage(bufferdImg, 0, 0, this);

     }


     g2.drawImage(bufferdImg, 0, 0, this);




     boolean collided=false;

     float dist;



     currentX[1]=0;

     currentY[1]=100;



     directionX[1]=0;

     directionY[1]=1;




     dist = (int)(Math.sqrt(Math.pow((currentX[0]+20)-(currentX[1]+20),2) + Math.pow((currentY[1]+20)-(currentY[1]+20),2)));



     if(dist < 20)

          collided = true;

     else

          collided = false;


     sqrt(pow((X1)-(X2),2) + pow((Y1)-(Y2),2)))



     bufferdImgSurface.fillOval(currentX[1], currentY[1], 20,20);



     if(collided==true)

          bufferdImgSurface.drawString("Collided",10,10);



     g2.drawImage(bufferdImg, 0, 0, this);




     public class Game extends Applet implements Runnable, MouseMotionListener, MouseListener



     int directionX[] = new int[MAX];

     int directionY[] = new int[MAX];



     BufferedImage bufferdImg;

     Graphics2D bufferdImgSurface;



     Thread gameThread;



     int width=400, height=400, MAX=50, speed=10;



     int currentX[] = new int[MAX];

     int currentY[] = new int[MAX];



     int step=0,          // Number of movements left/right

     direction=1,          // Current left/right direction (0=left, 1=right)

     shipX=width/2-10,          // Current player X possition

     shipY=height-45,          // Current player Y possition

     mbx=-10,          // The mouse position after mouse down, sets the_

     mby=-10,          // enemy bullet position to this.

     randomShoot=0,          // Used to work out which enemy is shooting

     health=50,          // The players health

     BNUM=10,          // Number of bullets

     playing=0;          // Are is the game playing (0=Playing, 1=Paused, 2=Game Over, 3=Win)



     int bX[] = new int[BNUM]; // Bullet X pos.

     int bY[] = new int[BNUM]; // Bullet Y pos.



     int ebX[] = new int[BNUM]; // Enemy Bullet X pos.

     int ebY[] = new int[BNUM]; // Enemy Bullet Y pos.



     long start=0,     // Frame start time

     tick_end_time,     // End frame time

     tick_duration,     // Time taken to display the frame

     sleep_duration;     // How long to sleep for



     static final int MIN_SLEEP_TIME = 10,                    // Min time to sleep for

                              MAX_FPS = 20, // Max frame rate.

                              MAX_MS_PER_FRAME = 1000 / MAX_FPS; // MS per frame



     float fps=0, // Current frame rate

               dist; // Distance between 2 points




     int row=10,     // Current Y position

     col=10,     // Current X position

     count=0;     // How many circles have been drawn



     currentX[0]=col;

     currentY[0]=row;





     for(int i=0; i < 50; i++) {

          count++;

          currentX[i]=col;

          col+=25;



          currentY[i]=row;



          if(count==10){

               row+=25;

               col=10;

               count=0;

          }

     }




The following two lines of code are used to start the mouse listener �listening� on the applet:

     addMouseMotionListener(this);

     addMouseListener(this);



     for(int i=0; i < BNUM; i++){

          bX[i]=-10;

          bY[i]=-10;

          ebX[i]=0;

          ebY[i]=height+10;

     }





     while(true){     // Starts the game loop

          start = System.currentTimeMillis(); // Sets the current time



          if(playing==0){     // Are we playing or is the game over?





     step++;

     for(int i=0; i < MAX; i++){

          if(step > 15) {

               if(direction==1){

                    direction=0;

               } else {

                    direction=1;

               }

          step=0;

          for(int j=0; j < MAX; j++)

               currentY[j]+=speed;

          }

          if(direction==1)

               currentX[i]+=speed;

          else

               currentX[i]-=speed;

     }





     for(int i=0; i < BNUM; i++){

          if(bY[i] <= 0) {

               bX[i]=mbx;

               bY[i]=mby;

               mbx=-10;

               mby=-10;

          }

          bY[i]-=speed;

     }





     for(int i=0; i < MAX; i++){

          for(int j=0; j < BNUM; j++) {

               if(!(bY[j]<=0)){

                    dist = (int)(Math.sqrt(Math.pow((currentX[i]+10)-bX[j],2) + Math.pow((currentY[i]+10)-bY[j],2)));

                    if(dist <= 20){

                         bY[j]=-50;

                         currentY[i]=-500;

                    }

               }

          }

     }





     for(int k=0; k < MAX; k++){

          randomShoot=(int)(Math.random()*MAX);

               if(currentY[randomShoot] >= 0){

                    for(int i=0; i < BNUM; i++){

                         if(ebY[i] >= height) {

                              ebX[i]=currentX[randomShoot];

                              ebY[i]=currentY[randomShoot];

                              break;

                         }

                    }

               }

     }







     for(int j=0; j < BNUM; j++) {

          if(!(ebY[j]>=height)){

               dist = (int)(Math.sqrt(Math.pow((shipX+10)-ebX[j],2) + Math.pow((shipY+10)-ebY[j],2)));

               if(dist <= 20){

                    ebY[j]=height+10;

                    health-=10;

               }

          }

     }






     for(int i=0; i < BNUM; i++){

          if(ebY[i] < height) {

               ebY[i]+=speed;

          }

     }







     if(health <=0)

          playing=2;






          int count=0;

          for(int j=0; j < MAX; j++){

               if(currentY[j]<0)

                    count++;



               if(currentY[j]>=340)

                    playing=2;

          }



          if(count==MAX)

               playing=3;





     } else { }



     repaint(); // Redraw the screen






               tick_end_time = System.currentTimeMillis();

               tick_duration = tick_end_time - start;

               sleep_duration = MAX_MS_PER_FRAME - tick_duration;



               if (sleep_duration < MIN_SLEEP_TIME)

               {

                    sleep_duration = MIN_SLEEP_TIME;

               }

               fps = 1000 / (sleep_duration + tick_duration);



               try{

                    Thread.sleep(sleep_duration);

                    } catch(InterruptedException e) {}

          }

     }




     public void paint(Graphics g)

     {

          update(g);

     }



     public void update(Graphics g)

     {

          Graphics2D g2 = (Graphics2D)g;



     // Set the background color.

     bufferdImgSurface.setBackground(Color.black);



     // Clear the applet.

     bufferdImgSurface.clearRect(0, 0, width, height);



     bufferdImgSurface.setColor(Color.green);

     //(X pos, Y pos, Width, Height)

     for(int i=0; i < MAX; i++)

          bufferdImgSurface.fillOval(currentX[i], currentY[i], 20,20);



     // Draw the read ship (a square)

     bufferdImgSurface.setColor(Color.red);

     bufferdImgSurface.fillRect(shipX, shipY, 20, 20);





     for(int j=0; j < BNUM; j++){

          bufferdImgSurface.setColor(Color.yellow);

          bufferdImgSurface.fillOval(bX[j], bY[j], 5,5);



          bufferdImgSurface.setColor(Color.blue);

          bufferdImgSurface.fillOval(ebX[j], ebY[j], 5,10);

     }

     // Draw a bottom line to our window

     bufferdImgSurface.setColor(Color.red);

     bufferdImgSurface.drawString("_________________________________________________________",0,375);






     if(playing==1)

          bufferdImgSurface.drawString("PAUSED", width/2-10, 390);

     else if(playing==2)

          bufferdImgSurface.drawString("****Game Over****", width/2-10, 390);

     else if(playing==3)

          bufferdImgSurface.drawString("****You Win!****", width/2-10, 390);






          for(int i=0; i < health; i++)

               bufferdImgSurface.drawString(" |", (2*i), 390);



          // Draw the buffered image to the screen.

          g2.drawImage(bufferdImg, 0, 0, this);

     }



     public void mouseMoved(MouseEvent e) { shipX=e.getX()-5; }



     public void mouseDragged(MouseEvent e) { shipX=e.getX()-5; }






     public void mouseClicked(MouseEvent e) {

          mbx=e.getX();

          mby=shipY;

     }



     public void mousePressed(MouseEvent e) {

     mbx=e.getX();

     mby=shipY;

     }






     public void mouseEntered(MouseEvent e) { playing=0; }



     public void mouseExited(MouseEvent e) { playing=1; }






     public void mouseReleased(MouseEvent e) { }