Ispis podataka

Sjedište: CARNET - Arhiva 2021 Loomen
E-kolegij: III. Gimnazija Osijek - Informatika 2
Knjiga: Ispis podataka
Otisnuo/la: Gost (anonimni korisnik)
Datum: ponedjeljak, 28. listopada 2024., 14:12

1. Ispis podataka

Najpoznatiji prvi program napisan u programskom jeziku C bio je program Hello world i prvi je put objavljen u spomenutoj knjizi The C Programming Language B. W. Kerninghana i D. M Ritchiea

Ovako je izgledao:



2. Ispis teksta

Da bismo napisali prvi funkcionalni program, možemo ispisati tekst na zaslon. Zato moramo naučiti i funkciju za ispis podataka. Funkcija koja se najčešće koristi za ispis u C-u je ona za formatirani ispis: printf(). Njezina sintaksa ima oblik:

     printf ("niz znakova koji se treba ispisati na zaslonu");

Zbog prije istaknute specifičnosti C-a, koji sve funkcije ima pohranjene u bibliotekama funkcija, potrebno je pretprocesorskom naredbom #include najaviti uporabu biblioteke stdio.h u kojoj je pohranjena većina ulazno-izlaznih funkcija.

Isto tako, prije pisanja prvog programa podsjetimo se da se programi napisani u C-u sastoje od niza međusobno povezanih funkcija čiji broj nije ograničen. U svakom je programu obvezna samo jedna funkcija ‒ funkcija main() koja označuje mjesto na kojem počinje izvršavanje programa. 

Ne zaboravite!

Početak i završetak funkcije označuje se vitičastim zagradama. Nakon svake naredbe u C-u mora stajati znak ; koji označuje završetak jedne naredbe i početak druge.

Algoritam zapisan pseudojezikom za primjer 1. bio bi:

{
     izlaz ("Sada pocinjemo s ozbiljnim poslom!")
}

             

Primjer 1.

#include <stdio.h>
int main()
{
     printf ("Sada pocinjemo s ozbiljnim poslom!");
     return 0;
}

Nakon upisivanja programa, odnosno stvaranja izvornog koda, program treba spremiti  i prevesti u računalu razumljiv jezik.

Zamijetite da smo naredbe unutar vitičastih zagrada malo uvukli. To je uobičajen način pisanja programa kojeg se drži većina programera jer pridonosi boljoj preglednosti i čitljivosti izvornog koda.

Ukoliko postoje sintaktičke ili leksičke pogreške, program prevoditelj će na to upozoriti i tražiti ispravak. Tek kada su sve pogreške u sintaksi ispravljene, program će se potpuno prevesti. Izvorni kôd ima nastavak .c (za C kompajlere) ili .cpp (za C++ kompajlere), a prevođenjem nastaje druga datoteka s nastavkom .exe (izvršni kod). 

Nakon uspješnog prevođenja (prva slika), program se može pokrenuti i izvršiti (druga slika).

      

Primjer 2.

Napišite program koji će na zaslon ispisati radne dane u tjednu.

Rješenje

#include <stdio.h>
int main ()
{
     printf("ponedjeljak utorak srijeda cetvrtak petak");
     return 0;
}

 

RAZMISLITE!

Na koji način bismo dane u tjednu mogli ispisati jedan ispod drugog?

Upišite primjer.

#include <stdio.h>
int main ()
{
     printf("ponedjeljak");
     printf("utorak srijeda cetvrtak petak");
     return 0;
}

Što ste dobili na zaslonu nakon prevođenja i pokretanja programa? Što možete zaključiti? Više printf () funkcija neće napisati tekst svaki u svojemu retku!


2.1. Oblikovanje ispisa

Prilikom ispisa teksta funkcijom printf() tekst naveden pod navodnicima napisan je pri izvršavanju programa točno onako kako smo to učinili pod navodnicima. Upravo zato, u slučajevima kada je potrebno tražene podatke ispisati u više redova, na više stranica ili ih treba samo pomaknuti ili poravnati, koriste se znakovne konstante namijenjene kontroli ispisa. One se sastoje od dva znaka, a počinju znakom \. Slovo navedeno pokraj znaka \ kontrolira ispis. Neke od konstanti koje se često koriste su:


 

Primjer 3.

Zadatak iz prethodnog odjeljka prepravite tako da se svaki dan ispisuje u novi redak.

Rješenje

#include <stdio.h>
int main ()
{
   printf("ponedjeljak\nutorak\nsrijeda\ncetvrtak\npetak");
   return 0;
}

Pokušajte napisati dane u tjednu uporabom ostalih konstanti za kontrolu ispisa ili ih kombinirajte međusobno ili s razmakom.


3. Osnovni tipovi podataka u C-u i njihovi formati

Sam ispis teksta koristi se vrlo rijetko. Namjena je svakog programa obrada podataka i prikaz rezultata te obrade (ispis dobivenih vrijednosti). U ispisu vrijednosti potrebno je odrediti format ispisa. Njime se oblikuje način ispisa vrijednosti.

Pojam formata ispisa usko je vezan za tipove podataka. 

Osnovni tipovi podataka u C-u:

  • cjelobrojni (int),
  • realni (float),
  • realni dvostruke preciznosti (double),
  • znakovni (char) i
  • tip podataka koji ne sadržava vrijednost (void).

Razlika među njima je u broju bitova koje zauzimaju tijekom zapisa u memoriji, a to će ovisiti o prevoditelju i platformi kojom se koristite. Moguće je da na vašem računalu broj bitova, odnosno opseg pojedinih tipova podataka bude drukčiji.


Uz te osnovne postoji nekoliko složenijih tipova podataka kao što su polja, strukture, polja struktura, unije i polja bitova. Također je omogućeno definiranje vlastitih tipova podataka.

NAPOMENA: Operator sizeof(tip_podatka) prikazat će vam koliko bajtova zauzima pojedini podataka u vašem računalu.  U nastavku je primjer programa koji će vam to omogućiti.

#include <stdio.h>
int main ()
{
     printf("int = %d\n",sizeof(int));
     printf("float = %d\n",sizeof(float));
     printf("double = %d\n",sizeof(double));
     printf("char = %d\n",sizeof(char));
     return 0;
}

Što ste dobili na zaslonu nakon prevođenja i pokretanja programa? Što možete zaključiti? Zauzimaju li tipovi podataka na vašem računalu isti broj bajtova kao u gore napisanoj tablici?

Oznake formata za ispis koje se najčešće koriste su:




4. Ispis vrijednosti

Vratimo se sada ispisu podataka i formatima za ispis. Za ispis vrijednosti koristi se funkcija printf(), ali malo drukčijeg oblika.

printf("lista_formata",lista_varijabli);

Primjer 1.

Naredbom  

         printf("%d %d", 3, 2);

na zaslonu će se ispisati brojevi 3 i 2, odvojeni razmakom, a naredbom 

         printf("%d, %d", 3, 2);

te iste vrijednosti, ali odvojene zarezom i razmakom.

Dakle, izgled ispisa na zaslonu uređuje se unutar dvostrukih navodnika, a u listi_varijabli dolazi samo popis varijabli. Unutar navodnika stvara se izgled ispisa na zaslonu, a izvan njih redom se navode sve varijable čije se vrijednosti trebaju ispisati (ili kao u ovom slučaju navode se konkretne vrijednosti). Redoslijed oznaka formata mora odgovarati redoslijedu imena varijabli. Ako je pogrešno zadan format u odnosu prema najavljenom tipu podatka varijable, i ispis će biti pogrešan.

Provjerite i na računalu:

#include <stdio.h>
int main()
{
    printf("%d %d\n", 3, 2);
    printf("%d, %d\n", 3, 2);
    return 0;
}


Primjer 2.

Izvođenjem naredbe 

           printf("Rezultat izraza %d+%d je %d!", 3, 2, 3+2);

na zaslonu će se ispisati: Rezultat izraza 3+2 je 5!

Provjerite i na računalu:

#include <stdio.h>

int main()

{

    printf("\nRezultat izraza %d+%d je %d!",3,2,3+2);

    return 0;

}



Tijekom navođenja formata za ispis podataka, uz pojedine formate mogu biti napisani i cijeli brojevi. Primjerice, format %nd znači da će cijeli broj koji se ispiše zauzeti n mjesta (n je cijeli broj). Ako je vrijednost koja se ispisuje „kraća” od broja zauzetih mjesta, s lijeve strane broja ostat će prazna mjesta, a ako vrijednost zahtijeva više mjesta, format će se zanemariti. Primjerice, naredba

     printf("%5d", 3);  

daje ispis  (kvadratići označuju prazno mjesto na zaslonu).

Naredba

     printf("%5d", 123456);  

daje ispis 123456 (broj 5 u formatu se zanemaruje jer ima više od 5 znamenki).

Provjerite i na računalu:

#include <stdio.h>
int main()
{
    printf("%5d", 3);
    printf("\n");
    printf("%5d", 123456);  
    printf("\n");
    return 0;
}


Standardno tijekom ispisa realnih brojeva format %f ispisuje broj na 6 decimala, no i format za realne brojeve može se oblikovati na sličan način kao format za cijele brojeve. Ako su n i m cijeli brojevi, n > m, format %n.mf znači da će vrijednost realne varijable zauzeti n mjesta. Od tih n mjesta, m se nalazi iza decimalne točke i jedno je rezervirano za decimalnu točku. Preostala mjesta (njih n-m-1) služe za ispis cijelog dijela realnog broja. Primjerice, naredba

     printf("%5.2f", 3.2564789);  

daje ispis (kvadratići označuju prazno mjesto na zaslonu). Ukupno je za ispis broja bilo pet mjesta, a od toga su dva mjesta rezervirana za decimalni dio broja, jedno mjesto za decimalnu točku i za cijeli dio broja ostanu dva mjesta. Zamijetite da će decimalni dio biti zaokružen prema matematičkim pravilima.

Naredba

     printf("%5.2f", 321.9998);  

daje ispis 322.00 (broj 5 u formatu se zanemaruje jer ima ukupno više od pet znamenki, a zbog matematičkih pravila zaokruživanja broj se zaokružuje na 322.00).

 Provjerite i na računalu:

#include <stdio.h>
int main()
{
    printf("%5.2f", 3.2564789);  
    printf("\n");
    printf("%5.2f", 321.9998);    
    printf("\n");
    return 0;
}