уторак, 26. јануар 2021.

Zašto sam pokrenuo novi YouTube kanal?

Svima je poznato da je prethodna 2020 godina bila poprilično teška s obzirom šta se sve dešavalo i kod nas i u celom svetu. Limitirani; da putujemo, izlazimo i da provodimo vreme sa bliskim ljudima i prijateljima svima nama su se na neki način životi usporili i prisili nas da sagledamo realnost, gde smo; gde idemo; i šta smo pre radili. Takođe, imali smo i više i dovoljno vremena da se posvetimo online aktivnostima i gledamo kako su se mnoge stvari preselile na Internet. Došao sam u situaciju da se pitam gde se moj stari YouTube kanal zaglavio; tolike godine postoji; na njemu je baziran celi ovaj blog a sa druge strane posle toliko godina još uvek nema ni 1000 subskrajbera. Setio sam se žalbi, gde su mi mnogi govorili da moram da pričam i da objašnjavam svoja video-a. Sa jedne strane ljudi od vas traže da pričate a da u isto vreme video ne traje dugo što samo po sebi nema smisla. I tu je naravno i konflikt da ako pričate da li to radite na Engleskom ili Srpskom jeziku. Zatim se od vas zahteva kvalitetan zvuk i odlična kamera i visoka HD rezolucija. Onda vam se pronalaze svakakve mane da bi se na kraju sve svelo na to koga danas interesuje programiranje. Za razliku od starog YouTube kanala, blog je druga priča. Trenutna posećenost od 500 do 800 ljudi koja ume da skoči i 2000 pregleda samo za jedan dan sa jedne strane me oduševljava ali sa druge čovek se zapita koliko to ljudi dnevno treba da poseti blog da bi barem 100 njih kliknulo na neku reklamu. Verujem da je ta cifra negde od 100 000 do milion i više da bi ste u proseku od bloga zaradili neku minimalnu platu, pod uslovom da vam pola od toga i država ne uzme za takozvani porez za nezaposlene koji je inače skoro duplo veći nego da imate svoju firmu. Svaka normalna osoba koja mora da razmišlja o egzistenciji odavno bi se bavila nečim drugim. Zato sam pred samu novu 2021 godinu, kada se donose odluke i planovi šta ćete raditi u sledećoj godini; doneo odluku da nešto moram da menjam.


( Onaj ko zna QBasic ni Python mu kasnije neće biti stran )

Ja sam neko ko je tolike godine proveo svoj život uz računare. Posvetio sam tehnologiji sve što sam imao čak i zdravlje. Ne mogu se požaliti da nisam gledao hiljade filmova, igrao hiljade igrica, koristio stotine raznovrsnih aplikacija, menjao operativne sisteme i kodirao na više od 15 programskih jezika. Opet čovek ne može sve da prati i sve da pamti ali neke stvari se nikada ne zaboravljaju dok se drugih lako čovek može podsetiti. A onda se zapitam. Šta sam ja drugo nego programer? To sam bio, to jesam i to ću uvek biti! Ne postoji ništa što bi mene činilo srećnim u zamenu za kodiranje. I ne postoji ništa u čemu sam sposobniji nego u logičkom, programerskom razmišljanju. I šta je to što ja pokušavam da učinim sa svim tim mojim talentima i sa znanjem koje sam tolike godine gomilao. Ja to znanje treba da podelim sa drugima i na neki način treba da ga sačuvam dok u isto vreme treba da probudim i razvijam svoje talente koje mi je Bog podario sve ove godine; a ne da ih držim uspavane. Ali isto tako i sa tim znanjem koje sam skupo stekao treba da stvorim nešto što niko na svetu nije video. To bi po mom trenutnom razmišljanju trebao da bude neki sistem koji će olakšati milionima ljudi i učenje i život. I onda i takva ideja zahteva još mnogo učenja, truda, vremena i rada. I onda sam se počeo prisećati detinjstva; srećnog detinjstva i svog prvog računara. Nešto sam o tome pisao i ovde. I onda mi je jednostavno palo na pamet, što ne krenem od početka. Da od početka, da radim one stvari koje su me toliko činile srećnim. I onda sam tako rešio, pokrenuo sam novi YouTube kanal; Učite programiranje sa Manuelom. Učite stvari od Quick Basic-a! I radost je opet zakucala na moja vrata. 

Zašto QBasic kad se danas ne koristi?

четвртак, 03. децембар 2020.

Prilozi u Nemačkom jeziku

S obzirom da smo zatvorili još jedno od važnih gramatičkih poglavlja; Glagolski načini u Nemačkom jeziku; i sa time završili kompletnu gramatičku priču o glagolima; sada jednostavno možemo otvoriti jedno novo gramatičko poglavlje. Ovaj put učimo Unflektierbare Wortarten – nepromenjive vrste reči. Sama reč nepromenjive; svim teškim nastojanjima da se što jednostavnije nauči gramatika Nemačkog jezika; nam daje malo olakšanje jer ne moramo učiti da menjamo iste kroz padeže itd. Nepromenjive reči su jednostavno nepromenjive i zato uraaa! To jedino ne važi ako na primer koristite priloge kao prideve, tj. pridevske priloge. Nepromenjive reči delimo na priloge, predloge, veznike i uzvike. I pored toga što do sada nismo učili gramatiku istih, bez obzira da li učite početni ili napredniji nivo Nemačkog jezika; sa ovim gramatičkim terminima ste se već susretali. Dovoljno je da znate nekoliko nemačkih rečenica ili fraza; i za Vas se slobodno može reći da ste već koristili nepromenjive reči. I pored toga što nepromenjive reči nisu toliko komplikovane i teške kao ostala gramatika Nemačkog jezika, bitno je da svaku vrstu nepromenjivih reči i svaku njihovu podelu shvatite veoma ozbiljno; da možete posle lako prepoznati iste u svakoj rečenici i olakšati sebi život. Njena česta upotreba će Vam dosta olakšati i lakše pamćenje istih jer se konstantno koriste. Tako isto, iskoristiću ovu priliku da svima Vama koji mi pišete i koji se brinete kako ne možete mnogo da pamtite; daću Vam jedan veoma koristan savet; jednostavno ne razmišljajte o tome! Već samim tim što se stotinu puta susrećete na Nemačkom jeziku sa istim rečima, glagolima itd.; u raznim tekstovima ili govoru; sve se pamti samo od sebe. Ali morate sami sebe naterati da svaki dan učite Nemački jezik. Pa makar samo u jednom danu da ste pogledali neki nemački film ili prepisali neki tekst na Nemačkom jeziku, ili uradili neku vežbu; posetili ovaj blog; važno je da imate u učenju kontinuitet. Nisam za ovo plaćen za ovo što ću reći, ali definitivno svima preporučujem Duolingo da Vam bude svaki dan najbolji prijatelj! 


( Prilozi se i u pisanju i u govoru koriste konstantno )

Sada ćemo se baviti isključivo prilozima u Nemačkom jeziku dok ćemo se ostalim vrstama nepromenjivih reči baviti u drugim postovima. Pa da prvo vidimo šta su to prilozi? Die Adverbien – prilozi, najjednostavnije rečeno su reči koje stoje uz prideve i glagole i opisuju ih. Međutim, prilozi mogu da stoje i uz imenice, zamenice i predloge. Oni jednostavno izražavaju okolnost ili način radnje, stanja ili svojstva. U rečenicama ih prepoznajemo kao priloške odredbe ili atribute ili predikate. Prilozi se dele na:

  • Die Lokaladverbien – prilozi za mesto
  • Die Temporaladverbien – prilozi za vreme
  • Die Modaladverbien – prilozi za način
  • Die Kausaladverbien – prilozi za uzrok

Ukoliko koristite stariju literaturu kad učite gramatiku Nemačkog jezika, tamo ćete pronaći i petu podelu; Adverbien der Aussage – prilozi izjave, mada ona danas takođe spada u priloge za uzrok.

Prilozi za mesto

недеља, 22. новембар 2020.

Rad sa String tipom podataka u Python programskom jeziku

Većina Vas koji dolazite na moj blog ili uči ili već dosta zna C# programski jezik. Kako to znam? Pa na osnovu pregleda, Vaših poruka i komentara. To takođe znači da većina Vas ili uči ili prelazi ili čisto iz radoznalosti uči i Python programski jezik. Zato ja uvek prilikom pisanja postova s vremena na vreme napravim neko poređenje sa programskim jezicima, da bi stvari bile još jasnije. U ovom postu ćemo se baviti string tipovima podataka u Python programskom jeziku. Svi vi koji ste C# programeri; Vi na string tipove podataka više gledate kao na neku vrstu specijalnog niza referentnog tipa podataka ili još bolje rečeno String je specijalna klasa koja predstavlja string tip promenjivih sa mnoštvom korisnih metoda za manipulisanjem karaktera. Takođe znate da jedna string promenjiva može da sadrži 2GB ili bilion karaktera. Međutim, Python programeri više gledaju string tip podataka kao niz. I to immutable – nepromenjiv. Ali koji može da sadrži i 3GB karaktera i više što pre svega zavisi od toga da li vi imate instaliranu Python 32-bitnu ili 64-bitnu instalaciju, pa zatim OS, koliko imate RAM memorije itd. To vam u prevodu znači da ne možete izbrisati neko slovo u tekstu već ga možete jedino zameniti; na primer praznim znakom; funkcijom replace() gde dolazi od stvaranje nove sekvence vašeg niza. Što u praksi isto radite i kad radite sa stringovima u C# programskom jeziku. Pa zato o razlici između tipa string u C# programskom jeziku i Python programskom jeziku mogu Vam samo reći „Šijo mu ga Đura“ ili „Ista stvar samo drugo pakovanje.“


( Stringovi u Python programskom jeziku )

Sve u svemu rad sa stringovima u Python programskom jeziku je sličan, možda za nijansu drugačije se deklariše, Python programeri promenjive pišu uglavnom malim slovima i ima tu nekih detalja koje će vam čak biti lakši nego kad radite u C# programskom jeziku; npr. manje tipkanja. A sad da se obratimo početnicima. Tipove podataka string koristite kad god radite sa tekstom. Da li Vi u promenjivu hoćete da smestite samo Vaše ime ili celu knjigu „Na Drini Ćuprija - na nemačkom jeziku“, jednostavno koristite promenjivu tipa string. String je jednostavno skup karaktera. Karakter može biti i slovo i broj i većina specijalnih znakova ali i prazan string. Zahvaljujući mnogobrojnim string funkcijama vi možete dobiti informacije; na primer koliko vaš tekst ima karaktera. Jednostavno koristite string funkciju len(). Međutim, ako želite da znate koliko vaš tekst ima slova. U tom ćete slučaju morati sami da isprogramirate funkciju u kojoj će te manipulisati sa jednom ili više string funkcija. Tu nastupate Vi i vaše programersko razmišljanje. Postoji najmanje tri načina kako ćete da isprogramirate funkciju koja će vam vratiti tačan broj slova u rečenici. Sad koji je najbolji od njih zavisi isključivo od vaših programerskih sposobnosti da razmišljate ili da guglate. Ali meni što prvo pada na pamet jeste koliko ima karaktera i koliko ima praznog prostora i da se to dvoje oduzme. Za obe stvari već postoje string funkcije u Python  programskom jeziku. E sad da li je to bolje ili da putem petlje brojite karaktere ignorišući prazan prostor u tekstu; eh to je sad već programersko razmišljanje, iskustvo i praksa. Dok guglanje je daj šta daš, samo nek radi i nemam vremena sad da razmišljam. Sve u svemu uradićemo dva programa koja će Vam kroz praktične primere pomoći da upoznate neke česte manipulacije stringovima koje će vam itekako trebati u nekim Vašim budućim projektima.

Deklarisanje string tipova podataka

среда, 18. новембар 2020.

Iskazi odlučivanja if else i switch case u Java programskom jeziku

Pre nego što krenemo da studiramo iskaze odlučivanja, podsetio bih vas da pogledate prošli post; Operatori u Java programskom jeziku. Posebno obratite pažnju na operatore za poređenje i logične operatore. Ti operatori će biti osnova za mozganje i kreiranje što boljih i preciznijih iskaza za odlučivanje. Za praktičnu upotrebu, programerima su iskazi za odlučivanje nešto sa čime rade u skoro svakom projektu i prosto je nezamislivo napraviti bilo koji ozbiljniji program bez iskaza za odlučivanje. Ali ono što ja želim da kažem i dodam jeste; koliko ste vi sposobni da što savršenije iskonstruišete neki iskaz za neku odluku u programiranju od toga zavisi i tok vašeg programa ali i celi program. Ono što ste učili do sada jeste kako kompjuteri razmišljaju ali od iskaza odlučivanja vi počinjete da razmišljate kako će vaš program funkcionisati. Ukoliko ste početnik i počinjete sa jednostavnim malim programima;  dosta će te praviti uobičajene i jednostavne iskaze koje se podrazumevaju i u tim slučajevima nema mnogo pametovanja, ali kada budete trebali da konstruišete iskaze na osnovu teških i komplikovanih odluka, tu nastupa vaša programerska sposobnost razmišljanja i definitivno će te tada praviti dosta grešaka dok ne dovedete vaše programersko iskustvo do savršenstva. Zato nemojte uzimati iskaze odlučivanja kao nešto banalno i preći preko toga. Već mozgajte malo kako bi ste rešili neke vaše kućne probleme na programerski način. Na primer. Zadnjih meseci mnogo učim Nemački jezik ali u svojoj glavi ja već znam kako bi napravio neku funkciju i stavio u nju precizno iskaze odlučivanja, da mi funkcija prepozna i vrati pravilnu promenu glagola u bilo kojem gramatičkom vremenu. Razmišljam kako bi program radio sa gramatikom Nemačkog jezika. Ne, ja trenutno ne pravim nikakav program za učenje Nemačkog jezika ali kad učim Nemački jezik ja razmišljam kao da ću ga praviti. Zašto?


( Šema - if else statement - if else iskaza, kako se izvršava )


Zato što tako iskusni programeri razmišljaju i kad ne programiraju. Previše godina kodiranja učini to programeru da poboljša i motiviše samog sebe. Kada učite Java programski jezik, reći će vam da upravljačke naredbe se u programskim jezicima koriste za upravljanje tokom izvršavanja programa na osnovu promena stanja u programu. Iskazi odlučivanja su vam samo jedna kategorija upravljačkih naredbi. Upravljačke naredbe se dele na uslovne naredbe, iteracije i skokove. Iskazi za odlučivanje su uslovne naredbe. Ostale kategorije; iteracije su petlje i skokovi su komande koje pomažu da izađete iz petljih i funkcija. Njih ćete učiti kasnije u sledećim postovima. Za sada se koncentrišemo samo na iskaze odlučivanja. Java programski jezik podržava dve vrste iskaza za odlučivanje if else i switch case. Prvi iskaz if else se koristi kada imate manje uslova dok se switch case koristi kada imate više uslova. Zahvaljujući navedenim iskazima vi pomoću njih upravljate izvršavanje programa na osnovu uslova koji su poznati za vreme izvršavanja. Vaše mogućnosti i fleksibilnost zbog korišćenja istih su ogromne, s obzirom da vi možete čak i da u jedan uslov uslovite sa drugim ili više njih. To zovemo granjanje. Ali krenimo redom i skratimo vam muke; praktičnim korišćenjem istih.

If else iskazi

четвртак, 17. септембар 2020.

Klasa Random, biranje slučajnih brojeva u C# programskom jeziku

Najbolja stvar kod računara je što vas sluša. Kod njega nema ni levo ni desno, nego samo tačno kako ste mu naredili. Njegova akcija je uglavnom predvidljiva i kad ne dobijete od računara ono što očekujete to definitivno znači da ste vi pogrešili, a ne on. Ili nešto nije u redu na dubljem nivou!  Međutim, postoje situacije kad ćete hteti da računar bira jedan od više ponuđenih brojeva ili opcija. Na primer kada programirate igrice, kvizove, testove ili programirate Loto programe koji biraju brojeve umesto vas. Reći računaru da nešto izabere nije baš za njega jednostavan proces. Zato on ima specijalnu klasu Random, koja nasleđuje Object koji predstavlja generator pseudo slučajnih brojeva ili još preciznije Object koji sadrži algoritam koji stvara niz brojeva koji zadovoljavaju određene statističke zahteve za slučajnost. Zahvaljujući tome, biranje slučajnih brojeva u vašem programiranju jeste jednostavno. Vi čak ne morate ni da dodatno uvozite imenski prostor za ovu delatnost jer se Random klasa nalazi u System imenskom prostoru.  

( Random klasa je zadužena za bilo kakvo biranje slučajnih brojeva )

Da stvar bude još jednostavnija, korišćenje naredbe Random u C# programskom jeziku je mnogo jednostavnije nego u C ili C++ programskom jeziku. Metoda Next() je preklopljena i njene druge verzije vam omogućavaju da odredite minimalnu i maksimalnu vrednost opsega. Ona podrazumevano vraća pozitivan integer u opsegu od 0 do maksimalne vrednosti Int32. Ali ako odredite opseg od jednog broja do drugog, možete birati i negativne brojeve. Na primer ako hoćete da birate broj između -100 i 101 onda će te inicijalizovati metodu ovako. 

Random rnd = new Random();

rnd.Next(-100, 101);

I to je sve. I ako imate potrebu da birate više puta, dovoljno je da koristite istu rnd promenjivu čak i sa drugačijim postavkama. Nema potrebe da razmišljate da će svaki put kad izvršite ovaj kod da dobijate isti broj jer podrazumevani konstruktor za klasu Random dodeljuje generatoru slučajnih brojeva početnu vrednost koja je vremenski zavisna, tako da se smanjuje sekvenca biranja istih brojeva. Klasa Random sa njenom metodom Next() je sasvim dovoljna da precizno radite testove, iako su u nekim projektima uključeni razne vrste algoritma da bi slučajni broj bio dodatno naizmeničan broj.

Kako da napravim jednostavan program za izvlačenje Loto brojeva?

четвртак, 10. септембар 2020.

Imperativ u Nemačkom jeziku

U Nemačkom jeziku postoji 3 glagolska načina: indikativ, konjunktiv i imperativ. Indikativ je vremenski oblik koji nam govori da se nešto dešava realno, konjunktiv da će se nešto možda desiti i imperativ koji naređuje da se nešto desi. Indikativ smo već učili, pogledajte glagolska vremena u sadržaju; konjunktiv smo takođe učili; pogledajte Konjunktiv I i Konjunktiv II. I sad učimo imperativ. Imperativ se i na Nemačkom jeziku i na Srpskom jeziku kaže isto. Ali šta je to Imperativ? Imperativ ili što mi često kažemo zapovedni način je prost lični glagolski oblik kojim izričemo zapovest, molbu ili želju da se određena radnja izvrši. Imperativom se takođe može nešto zabraniti ili dati savet. A sad onaj lakši deo; Imperativ ima samo drugo lice jednine i množine:

  • Lies! – Čitaj! – od ( du liest )
  • Lest! – Čitajte! – od ( ihr lest )

U prethodnom primeru možete primetiti da mi u imperativu ne koristimo lične zamenice. One se pretpostavljaju, ali se u nekim situacijama mogu koristiti. Na primer kada radite sa grupom ljudi. 

  • Lies du! – Čitaj ti! – Obraćate se jednoj osobi iz grupe.
  • Lest ihr! – Čitajte vi! – Obraćate se jednoj izdvojenoj grupi ljudi ili celom kolektivu.



( Budite oprezni kada koristite Imperativ jer niko ne voli da mu se naređuje! )

Međutim ako hoćete da budete učtivi, ne morate glagol ni da menjate: 

  • Lesen Sie! – Čitajte!
  • Kommen Sie! – Dođite!
  • Gehen Sie! – Idite!

Obratite pažnju da ljudi u Nemačkoj ne vole da im se naređuje, kao ni mi. Možda je bolje da uvek budete ljubazni i da ne morate menjati glagol. Ali ipak postoje situacije kad morate koristiti zapovedni način. Zar ovo nije sve jednostavno? A da, možete pomisliti sve je to divno ali kako ja da znam da se čitaj kaže lies. Ko će sad naučiti sve te glagole ponovo kako se govore u imperativu? Znate, i ja kad sam se susreo privi put u nekom tekstu sa imperativom isto sam pomislio. Pogotovo šta na primer u Engleskom jeziku kada pravite imperativ uopšte ne menjate glagol, već ga koristite isto: 

  • You read – ti čitaš - Read – čitaj!  

Prosto čoveku dođe da se naljuti; a onda pogledam lepu mladu devojku iz Nemačke koja mi predaje nemački jezik, priča rečenice u imperativu i uopšte se ne brine kako ćemo naučiti imperativ; kao da je to lako. I onda sam došao do neverovatnog otkrića. Znate imperativ se gradi, pravi… znači ne morate ga učiti napamet; već treba da samo primenite jednostavnu formulu i sami ćete znati imperativ svakog glagola. Međutim, imperativ se gradi i na druge načine gde onda treba da naučite fraze napamet. Ali da mi prvo pogledamo kako se gradi imperativ.

Kako se gradi Imperativ?

среда, 02. септембар 2020.

Kako napraviti Space Invaders igricu u Python-u ?

Evo posle pauze od dva i po meseca, zbog letnjih vrućina i neophodnog psihičkog odmora od mnogobrojnih obaveza, nastavljamo sa razvijanjem bloga. Čak i pored toga što na blogu nije bilo novih postova, samo prekuče je blog brojao 547 novih poseta. Iskreno se zahvaljujem svim ljudima koji posećuju moj blog i podržavaju moj trud. Od danas pokrećem novu podgrupu u Sadržaju koju ćemo zvati Projekti. U njoj ćemo grupisati kako se programiraju razne igrice i mali programi u raznim programskim jezicima. Kad učite neki programski jezik važno je da pređete osnovne komande istog, ali isto tako je poželjno da isprogramirate nešto konkretno. Programiranje malih igrica i programa pojačavaju programeru volju i radoznalost kako su neki na izgled kompleksni zadaci rešeni na jednostavan način. Možete se pitati dobro, ali zašto u raznim programskim jezicima? Zato što poznavanje samo jednog programskog jezika kao na primer C# programskog jezika u poslovnom svetu; više nije dovoljno. To je kao da znate Engleski jezik ali hoćete da znate i Nemački jezik ili neke druge jer su vam na momente postali potrebniji. Tako je i sa programskim jezicima. Cilj je da se ne ograničavate i da budete fleksibilni. Pa da krenemo.


( Space Invaders igrica koju pravimo u Python programskom jeziku )

Space Invaders, arkadna; shooter igrica je nastala još 1978 godine. Mnogi od nas su odrasli uz tu igricu ili njene slične verzije. Naravno, danas su igrice otišle mnogo daleko i neophodna je kompanija i tim profesionalnih programera da isprogramiraju neku modernu i kvalitetnu igricu. Međutim, mi možemo malo da se vratimo u prošlost i sa veoma malo programiranja možemo napraviti neku malu kao arkadnu igricu. Zato ćemo mi sad isprogramirati nešto najjednostavnije, čisto da bi smo imali neki uvid kako se programira shooter igrica. Da bi smo napravili Space Invaders igricu, treba nam pucač ili neki svemirski brod, neprijatelj, metak i univerzum. Mi to možemo nacrtati programerski ili jednostavno koristiti sličice. Sličice možete nacrtati i kreirati sami ili jednostavno skinuti sa Interneta. Naravno hoćemo i da naša igrica ima ton i za to nam trebaju dva zvuka. Jedan zvuk lasera ili pucanja i jedan zvuk eksplozije. S obzirom da igricu pravimo u Python programskom jeziku; to znači da ćemo mi pre programiranja prvo da kreiramo jedan prazan direktorijum space_invarders. Zatim ćemo otići na Google i pretražiti slike za Space Invaders. Vidićete da imate već mnogo gotovih sličica, vaše je samo da izaberete koje vam se sviđaju. Potrebne su vam tri sličice: svemirski brod, neprijatelj i univerzum. Obratite pažnju da su za igricu potrebne sličice u *.gif formatu. Vi možete sličice koje skinete sa Interneta prepraviti ili nacrtati svoje. U Photoshop-u je neophodno da podesite veličinu sličica. I to: svemirski brod 32x34 piksela, neprijatelj 32x32 i univerzum ili pozadinska slika treba da bude 600x600 piksela. Isto tako kao što na Google pretražujete slike, tako možete pretraživati i datoteke za zvuk u *.wav formatu. Pronađite zvuk za laser ili pucanje i odaberite koji vam se dopada; zatim pretražite i zvuk za eksploziju. Ubacite fajlove u direktorijum space_invarders i spremni ste za programiranje.

Kako se programira Space Invaders?