Blog Archives

Moj prvi program


Izvršavanje napisanog programa predstavlja vrlo jednostavan proces pri kojem program od korisnika zahtjeva ulazne podatke, a korisnik od programa očekuje da vrati rezultat odnosno da prikaže izlazne varijable kao traženi rezultat. Ovaj jednostavan proces izvršavanja programa nimalo nije sličan procesu njegovog nastajanja odnosno pisanja. Često program koji pišemo predstavlja dug, zamoran i frustrirajući proces implementacije, testiranja, debugiranja i korekcije. Između svake pobrojane stavke možete staviti litre popijene kafe ili čaja. Jednom kada naš program radi ispravno, svodi se na proces koji smo na početku opisali. Pisanje programa u bilo kojem programskom jeziku za mnoge a posebno developere predstavlja poseban izazov. Prije svega program predstavlja zapis određene količine znanja o nekom problemu. Ono je pohranjeno u elektronskom obliku kojeg možemo koristiti kad god želimo bez bojazni da će ono biti zaboravljeno.

Na primjer kada posmatramo program Kalkulator vidimo da on predstavlja skup određenog znanja iz područja algebre odnosno množenja, dijeljenja, logaritmiranja, trigonometrijskih i drugih transcedentnih funkcija. To je znanje trajno zapisano u digitalni oblik i kad god želimo da ga iskoristimo pokrenut ćemo program i obaviti određenu matematičku operaciju. Iz razloga što napisani program predstavlja akumuliranu količinu znanja, ono prije svega predstavlja neku posebnu vrstu ljudskog stvaranja, koju većinom koriste ljudi koji u opće nemaju to znanje. Kod primjera Kalkulator kojeg smo naveli, većina ljudi poznaje sabiranje, oduzimanje množenje, medjutim algebarske operacije mogu biti jako komplikovane za čovjeka ako koristimo velike brojeve, ili pak trigonometrijske ili logaritmaske funkcije manje poznatih uglova i brojeva.
U kontekstu korištenja programa jedan od najboljih primjera je igranje video igara. Opće je poznato da programiranje video igara predstvlja jedan od najkompleksnijih poslova softverskih inženjera. Da bi bili sposobni programirati video igrice ili razvijati engine za razvoj video igara potrebno je pored znanja razvoja softvera imati znanje iz matemtike posebno vektora, analitičke i diferencijalne geometrije i drugih područja matematike i sličnih nauka. Korisnici takvih kompleksnih softverskih proizvoda su uglavnom djeca od nekoliko godina do odraslih. Većina njih ni neposjeduje osnovne vještine razvoja softvera jer im to nije ni potrebno niti se u budućnosti žele s tim baviti. Upravo zbog ove činjenice programi predstavljaju poseban proizvod kod kojeg njegovi kreatori (developeri, razvojni inžinjeri, softverski arhitekti) imaju poseban odnos.

U ovom poglavlju biće prikazana tri jednostavna listinga u tri različita programska jezika, FORTRAN, C++ i C#. Intencija knjige je da općenito približi problematiku programiranja bez obzira kojim jezikom programer piše. Kroz cijeli tekst prikazat će se osnovne osobine svakog programskog jezika, i navesti ključne riječi koje su sasvim dovoljne da se čitalac upozna sa osobinama programskih jezika, te da u svakom od njih može pisati programe. Intencija ove knjige je da rješenje problema bude neovisno od programskog jezika, jer algoritam koji rješava problem predstavlja najvažniji korak u pisanju programa. Kada znamo algoritam rješenja problema, pisanje programa predstavlja samo jednu of faza pisanja programa. Dakle pri rješavanju problema akcenat će biti na algoritmu, dok će implementacija algoritma u specifičnom programskom jeziku biti u drugom planu. Nekada će program biti napisan u pseudo kodu, koji je lahak za razumijeti i prepisati u neki od postojećih programskih jezika. Kada implementacija određenog algoritma bude zahtijevala dodatna obrazloženja ona će biti navedena za svaki programski jezik ponaosob.
Naš prvi program neće imati nikakvih ulaznih podataka, a kad se pokrene kao rezultat prikazat će rečenicu “Moj prvi napisani program”. Napišimo zadatak za pri program.

Zadatak 1: Napisati program koji na konzolu (izlazna jedinica) ispisuje “Moj prvi napisani program”.

U FORTRAN jeziku jedno od rješenja zadatka 1 može biti:

! glavna ulazna funkcija  
program PrviProgram  
  
  implicit none  
  integer re_i  
 
  write(*,*) "Moj prvi napisani program!"  
  
  re_i = system("pause")  
  end

Listing 2.1 Rješenje zadatka 1 u FORTRAN jeziku

Kod FORTRAN jezika za ispis na konzolu koristi se ključnu riječ write koja je sastavni dio programskog jezika. Kod pisanja programa u FORTRAN jeziku potrebno da program započinje ključnom riječju program a zatim nazivom programa (Listing 2.1), dok završava ključnom riječju end, odnosno end program PrviProgram. Svaki program u ovom jeziku mora zadovoljavati ove uvjete. FORTRAN za razliku od C++ i C# nije osjetljiv na velika i mala slova, tako da svaka ključna riječ može se pisati malim ili velikim slovima ili miješanjem velikih i malih slova. Tako da ključna riječ program može biti napisana i PROGRAM ili pRoGrAm.
U C++ jeziku jedno od rješenja zadatka može biti:

#include <iostream>  
using namespace std;  
//glavna ulazna funkcija   
int main()  
{  
    cout << "Moj prvi napisani program!" <<endl;  
  
    system("Pause");  
    return 0;  
}

Listing 2.1 Rješenje zadatka 1 u C++ jeziku

Svaki program napisan u C++ mora imati započinjati sa ključnom riječju include s kojom naš program povezujemo sa eksternim bibliotekama koje su potrebne za pisanje programa. U naš zadatak povezali smo biblioteku iostream koja služi da bi koristili metode za ispis i čitanje sa konzole, odnosno da bi koristili klasu cout za ispis na konzolu. Uviđamo da C++ ne posjeduje ključnu riječ sličnu FORTRAN jeziku za ispis na konzolu, write. Pored uključivanja određenih biblioteka, svaki C++ program kao početnu tački odnosno metodu ima metodu koja se zove main. Ova metoda ima nekoliko varijanti u smislu da prihvata različit broj argumenata. Tako da main metoda ima slijedeće varijante:

int main( );
int main( int argc, const char** argv );

U slučaju kada main metoda prihvata argumenta, tada pri pokretanju programa je moguće postaviti vrijednosti za date argumente.
U C# jeziku jedno od rješenja zadatka 1 moze biti:

using System;  
  
namespace KnjigaCSharp  
{  
    class Program  
    {  
        static void Main(string[] args)  
        {  
           Console.WriteLine("Moj prvi napisani program!") 
  
        }  
    }  
}

Listing 2.3 Rješenje zadatka 1 u C# jeziku

U koliko posmatamo C# verziju vidimo da smo koristili standardnu metodu WriteLine klase Console koja čini sastavni dio .NET frameworka koji predstvlja okolinu ili okvir u kojem radi C#. Izvan .NET Frameworka C# ne može da radi. Pri pisanju programa u C# potrebno je slično kao u C++, koristiti biblioteke iz .NET Frameworka, definisati prostor imena (en. namespace) i definisati klasu koja sadrži najmanje jednu metodu koja se zove main. Ralog zašto je u C# potrebno sve ovo deklarisati prije same implementacije main metoda jeste što C# predstavlja čisti objektno orijentisani programski jezik kod kojeg sve počinje sa klasama odnosno instancama klasa koje zovemo objekti.

How to manually fix content error in Microsoft Word


Word2013_error1

Today while I was editing a document suddenly Word crashed and the document became unable to be opened. Every time I wanted to open it the same error was:

We’re sorry. We can’t open DocumentName.docx because we found a problem with its contents.
When I want to see Details the following message shows:
Unspecified error
Location: Part: /word/document.xml, Line 2, Column: 0.

Then I wanted to open auto-saved version of the document, the same error appeared. So I changed the DocumentName.docx  file in to DocumentName.zip, and extract the content, found document.xml file and opened it in Notepad++.

The picture below shows the content of the DocumentName.docx file, renamed in to zip and extracted:

Word2013_error2

If you didn’t know the word document with doc or docx extension is actually zip file, which you can extract.

I have opened the docuemnt.xml and try to find error in second line. This was mission impossible because all xml content is placed in this line. As you can see on the picture below:

Word2013_error3

To find which element cause the content problem we have to format XML content. I prefer using Notepad++ and XML Tool PlugIn. It can be installed through Plungins menu of Notepad++.

Word2013_error4

To format xml content choose option Pretty print (XML only – with line breaks) . After the content is formatted, back the Document.xml to zip, change the extension from zip to docx, and open the word document.

The same error appear, but when you choose for details you can read in which line is the error. Find the line in Notepad++ and delete whole tag element:

Word2013_error7

Copy document.xml back in to zip file, rename the extension and try to open. If you have another error, repeat the process again, otherwise your document is opened.

Word2013_error8

Windows 8 i System on a Chip (SoC) tehnologija


Na najvećem sajmu potrošačke elektronike i inovacija CES koji se održava od 6-9. januara u Las Vegasu u USA, Steve Ballmer šef Microsofta pored zanimljivih stvari oko Windows Phone 7, igraće konzole Xbox 360 i KINECT, kao šlag na tortu najavio je novu verziju Windowsa 8 i prezentirao neke novine koje dolaze s njim.

Naime, u saradnji sa proizvođačima hardvera prikazan je set novih uređaja koji imaju svojstvo System on Chip (SoC), a što će podržavati nova verzija Windows 8.

System on Chip (Soc) kao pojam označava integraciju svih komponenata u jedan čip preko kojeg se mogu obrađivati kako digitalni tako i analogni signali. Tipična primjena ovakvih uređaja su embeded sistemi. S druge strane System on Chip predstavljaju uređaje koji su dizajnirani za mobitele i tablet računare. Ovo svojstvo omogućava istim uređajima dramatično povećanje vijeka trajanja baterije, odnosno smanjenje energije koje je potrebno imati za njihov rad.

SoC predstavljaju ARM bazirane sisteme koje razvijaju microsoftovi partneri NVIDIA Corp., Qualcomm Inc. i Texas Instruments Inc. Tehnologiju koja je demonstrirana na razlčitim uređajima sastojala se od hardverskog ubrzanja grafike i media playbacka, kao i uređaje na kojima je demonstriran rad Office 2010 programa u prirodnom obliku, demonstrirajući printanje dokumenta iz MS Worda. Pogledajte video ove vrlo interesantne prezentacije SoC tehnologije i Windows 8 OS-a.

Lansirane nove verzije Windows Vista i Office 2007



Krajem Novembra 2006, godine lansirane su nove verzije micrsoftovih najpopularnijih proizvoda Window Vista i Office. Pored znane najave o mukotrpnom radu na sigurnosti i borbi protiv piratstva, odmah po izlasku internet je postao prepun vrlo jednostavniji hackova za isključivanje tajmera za evaluacijsku verziju.

Čovjek se ponekada upita da li je to stvarno tako, da li su ljudi u microsoftu zaista nemoćni ili je to namjerno tako. Microsoft i pored piratstva ima najveći budžet kod prodaje ovih proizvoda.
Nameće se činjenica da microsoftu ipak odgovara piratstvo jer bez obzira, piratstvo popularizira njegove proizvode i svakim danom je sve vise korisnika kako piratskih verzija tako i legalnih. Mislim da ovaj dvog je nerastavljiv i kao takav zajedno najbolje funkcioniše, puneći budžet kako microsofta tako i ilegalnih prodavača.

Ova misao me je ponukala krakom zadnjeg operativnoh sistema koji je toliko jednostavn da ga i slabo upućeni korisnik Windowsa može primjeniti. Uputstvo koje zaobilazi tajming windowsovog evaluacijskog perioda nalazi se na svim oficijelnim sranicama blogovima, koje ovaj postupak objavljivaju kao vijest i uputstvo za korištenje windowsa.