http___www.ucionica.net_programiranje_naprednije-programiranje-u-c-u-120__1.xml
1.1 2.1 2.2 2.3 2.4 3.1 4.1 6.1 7.1 8.1 9.1 10.1 11.1 12.1 13.1 15.1 16.1 16.2 16.3 16.4 17.1 18.1 20.1 21.1 22.1 23.1 25.1 26.1 29.1 30.1 30.2 31.1 32.1 34.1 35.1 36.1 38.1 39.1
Q:Can we get the mantissa and exponent form of a given number? A:The function frexp( ) splits the given number into a mantissa and exponent form. The function takes two arguments, the number to be converted as a double value and an int to store the exponent form. The function returns the mantissa part as a double value. Following example demonstrates the use of this function. #include void main( ) double mantissa, number ; int exponent ; number = 8.0 ; mantissa = frexp ( number, &exponent ) ; printf ( "The number %lf is ", number ) ; printf ( "%lf times two to the ", mantissa ) ; printf ( "power of %d\n", exponent ) ; return 0 ; Q:What is access( ) function... A:The access( ) function checks for the existence of a file and also determines whether it can be read,written to or executed. This function takes two arguments the filename and an integer indicating the access mode. The values 6, 4, 2, and 1 checks for read/write, read, write and execute permission of a given file, whereas value 0 checks whether the file exists or not. Following program demonstrates how we can use access( ) function to check if a given file exists. #include main( ) char fname[67] ; printf ( "\nEnter name of file to open" ) ; gets ( fname ) ; if ( access ( fname, 0 ) != 0 ) printf ( "\nFile does not exist." return ; Q:How do I convert a floating-point number to a string? A: Use function gcvt( ) to convert a floating-point number to a string. Following program demonstrates the use of this function. #include main( ) char str[25] ; float no ; int dg = 5 ; /* significant digits */ gcvt ( no, dg, str ) ; printf ( "String: %s\n", str ) ;
1.1 1.2 2.1 3.1 4.1 5.1 6.1 7.1 8.1 9.1 10.1 11.1 12.1 13.1 14.1 15.1 16.1 17.1 18.1 19.1 20.1 21.1 22.1 23.1 24.1 25.1 26.1 27.1 28.1 29.1 30.1 31.1 32.1 33.1 34.1 35.1 36.1 37.1 38.1 39.1 40.1 41.1 42.1 43.1 44.1 45.1 46.1 47.1 48.1 49.1 50.1 51.1 52.1 53.1 54.1 55.1 57.1 58.1 59.1 60.1 61.1 62.1 63.1 64.1 65.1 67.1 67.2 67.3 68.1 69.1 69.2 70.1 70.2 70.3 71.1 72.1 73.1 74.1 75.1 77.1 78.1 79.1 81.1 82.1 82.2 82.3 83.1 83.2 85.1 86.1 88.1 89.1 90.1 91.1 92.1 93.1 95.1 98.1 99.1 100.1 102.1 103.1 103.2 104.1 104.2 105.1 106.1 107.1 108.1 109.1 110.1 111.1 113.1 114.1 115.1 116.1 117.1 118.1 119.1 120.1 121.1 122.1 123.1 124.1 125.1 127.1 128.1 129.1 130.1 131.1 132.1 133.1 135.1 136.1 136.2 137.1 138.1 139.1 140.1 141.1 143.1 144.1 145.1 146.1 147.1 148.1 149.1 150.1 151.1 152.1 153.1 154.1 155.1 156.1 157.1 158.1 159.1 160.1 161.1 163.1 164.1 166.1 166.2 167.1 168.1
Na zahtjev korisnika Učionice donosimo novi tutorijal koji govori o naprednijem programiranju u C-u. U istom tutorijalu šturo ćemo proći kroz većinu toga kako biste zapravo znali mogućnosti programskog jezika C. Kako započeti sa C-om? Ako tražite razvojno okruženje za pisanje programa pod Windows operacijskim sustavima potražite program pod nazivom "Dev-C++" (Download Dev-C++). Prije svega trebali biste otvoriti Dev-C++ kako biste mogli paralelno s tutorijalom pisati svoj kôd. Varijable u C-u Navesti ćemo nekoliko osnovnih tipova koji su neophodni za programiranje u C-u: - char – znakovni tip ili mali cijeli broj - int – cjelobrojni tip - float – realni tip - double – realni tip dvostruke preciznosti Prefiksi tipova varijabli U C-u postoje i prefiksi, te kvalifikatori koje možemo ili smo prisiljeni koristiti: - short – smanjuje raspon cjelobrojnih vrijednosti koje varijabla može sadržavati - long – smanjuje raspon cjelobrojnih vrijednosti koje varijabla može sadržavati - signed – omogućuje pridruživanje pozitivnih i negativnih vrijednosti - unsigned – omogućuje pridruživanje samo pozitivnih vrijednosti i povećava raspon brojeva koje možemo pohraniti u varijablu. Primjer deklaracije varijabli int a; float b; Primjer deklaracije varijabli sa inicijalizacijom Inicijalizacija je postupak dodjeljivanja početne vrijednosti varijabli. int a = 5; char b = 'a'; Operatori u C-u Operatori u C-u, kao i u drugim programskim jezicima omogućuju nam manipulaciju vrijednostima varijabli. Neki od operatora koje možemo koristiti su: - + zbrajanje - - oduzimanje - * množenje - / dijeljenje - % modulo – ostatak cjelobrojnog dijeljenja. - ++ inkrement – uvećava varijablu za 1 - – dekrement – umanjuje varijablu za 1 Primjer korištenja operatora u C-u int a = 5; int b = 6; int c; ++a; /* uvećanje varijable a za 1 */ c = a + b; a = a + b; /* rezultat operacije može biti i u istoj varijabli */ a += b; /* skraćeni način zapisa linije iznad */ Prioriteti aritmetičkih operacija Prioriteti su određeni skraćenicom "B.O.D.M.A.S.", što znači: Brackets (zagrade), Order (potencije), Division i Multiplication (dijeljenje i množenje – isti prioritet), Addition i Substraction (zbrajanje i oduzimanje – isti prioritet). Sturktura C programa - Moguće je staviti više naredbi u isti redak - Razlikujemo velika i mala slova u imenima varijabli - Za nazive funkcija ne smijemo koristiti ključne riječi - Deklaracijom opisujemo tip i naziv varijable - Blok naredbi započinje znakom {, a završava znakom } - Iza znaka } ne stoji znak ; - Glavna funkcija naziva se main Konstante Konstante u C-u su one varijable koje se neće mijenjati, a imaju prefiks const: const double pi = 3.1415926; Konstante možemo i napisati na sljedeći način, neposredno iza uključivanja biblioteka poput stdio.h, a iznad glavne funkcije: Ispis i unos podataka Funkciju printf već smo imali prilike upoznati. U sljedećem primjeru ispisati ćemo vrijednost varijable na ekran. #include int main () { int a = 2; printf("Varijabla a ima vrijednost %d", a); getche(); return 0; Primjetimo "%d" u printf-u. To označava mjesto gdje će se pojaviti vrijednost varijable a. Mogli smo imati i sljedeći slučaj: printf("Varijabla a ima vrijednost %d, a varijabla b ima vrijednost %d", a, b); Sada ispisujemo 2 varijable. One u dijelu nakon zatvaranja navodnika moraju biti odvojene zarezima. Ako se radi o cjelobrojnim varijablama koristimo "%d". Za realne vrijednosti koristiti ćemo "%f", a za znakovne "%c". Ovo nisu jedini specifikatori formata, a postoje i njihove varijacije o kojima ćemo više kasnije. Primjer unosa vrijednosti varijable izgleda npr. ovako #include int main(){ int a; printf("Unesite vrijednost varijable a: "); printf("Vi kazete: %d", a); getche(); return 0; Funkcija koja obavlja unos zove se scanf. Primijetimo da pomoću specifikatora formata moramo odraditi tip. Razlika u odnosu na printf je u znaku „&“ ispred imena varijable koji označava da se vrijednost sprema u određenu memorijsku adresu. Više o tome kasnije. U jednom scanf-u možete unositi više i varijabli, ali točno na način kao što ste zapisali. Ako napišete sljedeće: program očekuje razmak između dvije vrijednosti. Ako napišete sljedeće: program očekuje enter između dvije vrijednosti. Sada možemo pogledati cijeli program koji koristi unos, ispis i operatore. #include int main(){ int a, b, c; printf("Unesite vrijednost varijable a ==> "); printf("Unesite vrijednost varijable b ==> "); printf("Zbroj %d i %d iznosi %d", a, b, c); getche(); return 0; Kontrola toka programa Primjer nečega što bi trebalo biti kontrolirano: Ako je na semaforu crveno, stani. Ako je na semaforu zeleno kreni. Najjednostavnija naredba za kontrolu toka programa je naredba if. Ako je izraz u zagradama točan tada će se izvršiti blok naredbi ili naredba ispod if-a. Primjer if naredbe: if ( varijabla < 5) varijabla++; Ako se radi o jednoj naredbi tada ne trebamo pisati vitičaste zagrade. if ( varijabla < 5 ) { varijabla++; printf("Varijabla sada iznosi %d", varijabla); Nakon if-a ne ide znak ; Osnovni operatori koje možemo koristiti kod if naredbe su: - < da li je manje - > da li je veće - <= da li je manje ili jednako - >= da li je veće ili jednako - == da li je jednako - != da li je različito Naredba else može se koristiti nakon naredbe if. if ( a%2 == 0 ) { /* provjera da li je vrijednost varijable a parna */ printf ("Broj je paran"); } else { printf ("Broj nije paran"); Također, postoji i else if naredba koja se koristi na sljedeći način: if ( a < 0 ) { printf ("Broj je negativan"); } else if ( a > 0 ) { printf ("Broj je pozitivan"); } else { printf ("Broj je jednak nuli"); Postoje i drugi načini pisanja if, else i else if naredbi koji su teži za korištenje i čitanje. Naredba switch također služi za kontrolu toka programa. Ukoliko se radi o višestranoj selekciji tada ćemo ovime skratiti mnogo koda u odnosu na if, else i else-if naredbe. Primjer korištenja u programu: #include int main() { int a; printf("Unesite ocjenu: "); switch(a) { case 1: printf("Nedovoljan"); break; case 2: printf("Dovoljan"); break; case 3: printf("Dobar"); break; case 4: printf("Vrlo dobar"); break; case 5: printf("Odlican"); break; default: printf("Pogreska - ocjena ne postoji"); break; getche(); return 0; Napomena: ne zaboravite "break;"! Uvijek dodajte default slučaj kako biste prikazali eventualne pogreške pri unosu. U drugom dijelu tutorijala obraditi ćemo sve od programskih petlji do kraja. Lijepi pozdrav ;-)