Programiranje 1 Beleške sa vežbi Školska 2007/2008 godina Matematički fakultet, Beograd Jelena Tomašević December 5, 2007

Слични документи
Programiranje 1 Beleške sa vežbi Školska 2007/2008 godina Matematički fakultet, Beograd Jelena Tomašević January 23, 2008

Uvod u računarstvo 2+2

PowerPoint Presentation

Uvod u računarstvo 2+2

Razvoj programa, Code::Blocks, struktura programa, printf, scanf, konverzioni karakteri predavač: Nadežda Jakšić

Programiranje 2 0. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog2 2019, 0. predavanje p. 1/4

Programiranje II Beleške sa vežbi Smer Informatika Matematički fakultet, Beograd Sana Stojanović 1

070-ALIP2-udzbenik.indb

Microsoft PowerPoint - Datoteke [Compatibility Mode]

Uvod u takmičarsko programiranje

Programski jezik C

Funkcije predavač: Nadežda Jakšić

Tutoring System for Distance Learning of Java Programming Language

Grananje u programu predavač: Nadežda Jakšić

Programski jezik C

Konverzije, operatori, matematičke funkcije predavač: Nadežda Jakšić

I grupa 1. Napisati program koji izračunava i ispisuje zbir 4 najveća od pet brojeva unetih sa standardnog ulaza. ulaz izlaz Analiza: 1.

Tutoring System for Distance Learning of Java Programming Language

Uvod u računarstvo 2+2

Tutoring System for Distance Learning of Java Programming Language

Microsoft PowerPoint - Bitovi [Compatibility Mode]

PowerPoint Presentation

Programiranje u C-u ili C++-u Pseudo-slučajni brojevi; Dinamička alokacija memorije 1 ZADACI SA ČASA Zadatak 1 Napraviti funkciju koja generišlučajan

Microsoft PowerPoint - C-4-1

Datoteke predavač: Nadežda Jakšić

Programski jezici i strukture podataka

Programiranje 1 5. predavanje dodatak Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2018, 5. predavanj

Microsoft PowerPoint - Programski_Jezik_C_Organizacija_Izvornog_Programa_I_Greske [Compatibility Mode]

Funkcije predavač: Nadežda Jakšić

Programiranje predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2016, 10. predavanje p. 1

PowerPoint Presentation

Programiranje 2 Beleške sa vežbi Školska 2007/2008 godina Matematički fakultet, Beograd Jelena Tomašević February 23, 2008

Programiranje 1 drugi kolokvij, 2. veljače Ime i prezime: JMBAG: Upute: Na kolokviju je dozvoljeno koristiti samo pribor za pisanje i brisanje,

Računarski praktikum I - Vježbe 01 - Uvod

Microsoft PowerPoint - 10-Jednodimenzionalni nizovi.ppt [Compatibility Mode]

PowerPoint Presentation

Uvod u računarstvo 2+2

Microsoft PowerPoint - 11.Programski_Jezik_C_ulaz-izlaz [Compatibility Mode]

Računarski praktikum I - Vježbe 03 - Implementacija strukture string

Microsoft Word - 11 Pokazivaci

PROGRAMIRANJE Program je niz naredbi razumljivih računalu koje rješavaju neki problem. Algoritam je postupak raščlanjivanja problema na jednostavnije

Slide 1

Strukture predavač: Nadežda Jakšić

Konstrukcija i analiza algoritama vežbe 10 Nina Radojičić 15. decembar Algoritamske strategije - podeli pa vladaj (divide and conquer) Ova stra

Microsoft Word - 02 Elementi programskog jezika Pascal

Programiranje 1 9. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2018, 9. predavanje p. 1/6

Pojačavači

P1.3 Projektovanje makroasemblera

Microsoft PowerPoint - 13-Funkcije_2.ppt [Compatibility Mode]

Konstrukcija i analiza algoritama Nina Radojičić februar Analiza algoritama, rekurentne relacije 1 Definicija: Neka su f i g dve pozitivne fun

Microsoft PowerPoint - MR - Vjezbe - 03.ppt [Compatibility Mode]

Sveucilište u Zagrebu

Microsoft PowerPoint - 03-Slozenost [Compatibility Mode]

PROMENLJIVE, TIPOVI PROMENLJIVIH

ELEKTROTEHNIČKI FAKULTET UNIVERZITETA U BEOGRADU BEOGRAD, Ispit iz Programiranja 2 Ispit traje 135 minuta Napomene: a) Pažljivo proučite U

PHP kod

Osnovi programiranja Beleške sa vežbi Smer Računarstvo i informatika Matematički fakultet, Beograd Jelena Tomašević i Sana Stojanović November 7, 2005

07_PJISP_II_Predavanja

P11.3 Analiza zivotnog veka, Graf smetnji

PowerPoint Presentation

PowerPoint Presentation

UVOD - OD JAVE DO C# ELEMENTARNE RAZLIKE Veliki broj Java/C# razlika su uglavnom preimenovane ključne reči i razlike u konvencijama imenovanja. Neke o

Državna matura iz informatike

Elementi praćenja i ocjenjivanja za nastavni predmet Matematika u 4. razredu Elementi praćenja i ocjenjivanja za nastavni predmet Matematika u 4. razr

P1.2 Projektovanje asemblera

Test ispravio: (1) (2) Ukupan broj bodova: 21. veljače od 13:00 do 14:00 Županijsko natjecanje / Osnove informatike Osnovne škole Ime i prezime

Programiranje 2 popravni kolokvij, 15. lipnja Ime i prezime: JMBAG: Upute: Na kolokviju je dozvoljeno koristiti samo pribor za pisanje i brisanj

Microsoft Word - Zadaci za samostalno vjezbanje 4.doc

23. siječnja od 13:00 do 14:00 Školsko natjecanje / Osnove informatike Srednje škole RJEŠENJA ZADATAKA S OBJAŠNJENJIMA Sponzori Medijski pokrovi

Programski jezici i strukture podataka 2018/2019. Programski jezici i strukture podataka Računarske vežbe vežba 10 Zimski semestar 2018/2019. Studijsk

MergedFile

MJEŠOVITA SREDNJA TEHNIČKA ŠKOLA TRAVNIK PROGRAMIRANJE I PROGRAMSKI JEZICI PROGRAMSKI JEZIK C -SKRIPTA ZA INTERNU UPOTREBU-

1. OPĆE INFORMACIJE 1.1. Naziv kolegija Programiranje 1.6. Semestar Nositelj kolegija dr.sc. Bruno Trstenjak, v. pred Bodovna vrijednost

Inženjering informacionih sistema

Fortran

Uvod u PHP

3.Kontrlne (upravlja~ke) strukture u Javi

PRIRODNO MATEMATIČKI FAKULTET U NIŠU DEPARTMAN ZA RAČUNARSKE NAUKE Utorak, godine PRIJEMNI ISPIT IZ INFORMATIKE 1. Koja od navedenih ekste

The real problem is that programmers have spent far too much time worrying about efficiency in the wrong places and at the wrong times; premature opti

Državno natjecanje / Osnove informatike Srednje škole Zadaci U sljedećim pitanjima na odgovore odgovaraš upisivanjem slova koji se nalazi ispred

Računarski praktikum I - Vježbe 07 - Podstrukture, const, reference

Microsoft PowerPoint - Programski_Jezik_C_Organizacija_Izvrsnog_Programa [Compatibility Mode]

1

Generated by Foxit PDF Creator Foxit Software For evaluation only. Operativni sistem U računarstvu, operativni sistem (OS

INF INFORMATIKA INF.27.HR.R.K1.20 INF D-S INF D-S027.indd :50:41

Програмирај!

PowerPoint Presentation

1 jmbag ime i prezime Programiranje 2 prvi kolokvij, Rezultati i uvidi u kolokvije: Rezultati u petak, 3.5., navečer na webu, a uvidi u p

Programiranje 1

Programiranje 1 3. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2017, 3. predavanje p. 1/1

Microsoft Word - CAD sistemi

Osnovni programiranja I

Microsoft PowerPoint - 12-Funkcije_1.ppt [Compatibility Mode]

Microsoft Word - 1. REALNI BROJEVI- formulice

Programiranje 1 Milena Vujošević - Janičić 2008/2009

МОДЕЛ КОНТРОЛНЕ ВЕЖБЕ Информатика и рачунарство за шести разред разред Наставна тема: Редни број часа: 8. РАЧУНАРСТВО Циљ часа: Теститарање постигнућа

P11.2 Izbor instrukcija, IBURG

Математика основни ниво 1. Одреди елементе скупова A, B, C: a) б) A = B = C = 2. Запиши елементе скупова A, B, C на основу слике: A = B = C = 3. Броје

Slide 1

PASCAL UVOD 2 II razred gimnazije

Транскрипт:

Programiranje 1 Beleške sa vežbi Školska 2007/2008 godina Matematički fakultet, Beograd Jelena Tomašević December 5, 2007

2

Sadržaj 1 Programski jezik C 5 1.1 Oblast važenja lokalnih promenljivih.......................... 5 1.2 Konverzija......................................... 5 1.2.1 Automatska konverzija.............................. 5 1.2.2 Eksplicitna konverzija.............................. 6 1.3 Ugnježdena petlja.................................... 6 1.4 Znakovni ulaz i izlaz - getchar i putchar........................ 7 1.5 Priprema za kolokvijum................................. 10

4 SADRŽAJ

1 Programski jezik C 1 1.1 Oblast važenja lokalnih promenljivih Primer 1 int pom=1; printf("pre ulaska u unutrasnji blok pom=%d\n",pom); int pom=50; printf("pre izlaska iz unutrasnjeg bloka pom=%d\n",pom); printf("nakon izlaska iz unutrasnjeg bloka pom=%d\n",pom); Izlaz: Pre ulaska u unutrasnji blok pom=1 Pre izlaska iz unutrasnjeg bloka pom=50 Nakon izlaska iz unutrasnjeg bloka pom=1 Primer 2 Program koji ispisuje prvih n prostih brojeva 1.2 Konverzija 1.2.1 Automatska konverzija Ako je jedan od operanada razližličit vrši se konverzija, uvek u smeru manjeg ka većem tipu Naredba dodele: int i=5; float f=2.3; f=i; /* f ce imati vrednost 5.0*/ 1 Zasnovano na primerima sa sajtova http://www.matf.bg.ac.yu/ filip,http://www.matf.bg.ac.yu/ milena.

6 Jelena Tomašević obrnuto: int i=5; float f=2.3; i=f; /* i ce imati vrednost 2*/ 1.2.2 Eksplicitna konverzija (tip)<izraz> float x; x=2.3+4.2; /* x ce imati vrednost 6.5 */ x=(int)2.3+(int)4.2; /* x ce imati vrednost 6 */ x=(int)2.3*4.5; /* x ce imati vrednost 9.0 jer zbog prioriteta operatora konverzije prvo ce biti izvrsena konverzija broja 2.3 u 2 pa tek onda izvrseno mnozenje. */ x=(int)(2.3*4.5) /* x ce imati vrednost 10.0 */ Primer 3 Kako izbeći celobrojno deljenje int a,b; float c; a = 5; b = 2; c = a/b; /* Celobrojno deljenje, c=2*/ c = (1.0*a)/b; /* Implicitna konverzija: 1.0*a je realan broj pa priliko deljenja sa b dobija se realan rezultat c=2.5*/ c = (0.0+a)/b; /* Implicitna konverzija: (0.0+a) je realan broj pa priliko deljenja sa b dobija se realan rezultat c=2.5*/ c = (float)a/(float)b; /* Eksplicitna konverzija*/ 1.3 Ugnježdena petlja Primer 4 Ilustracija dve ugnježdene petlje. #include<stdio.h> int int i,j; for(i=1; i<=3; i++) for(j=1; j<=3; j++) printf("%d * %d = %d\t", i, j, i*j); printf("\n"); Izlaz: 1 * 1 = 1 1 * 2 = 2 1 * 3 = 3

1.4 Znakovni ulaz i izlaz - getchar i putchar 7 2 * 1 = 2 2 * 2 = 4 2 * 3 = 6 3 * 1 = 3 3 * 2 = 6 3 * 3 = 9 Primer 5 Program koji ispisuje tablicu množenja #include<stdio.h> int n, m; /* Dimenzije tablice */ int i, j; /* Brojaci */ scanf("%d", &n); scanf("%d", &m); /* Petlja po redovima... */ for(i = 0; i < n; i++) /* unutrasnja petlja */ for(j = 0; j < m; j++) printf("%d * %d = %d\t", i, j, i*j); /* na kraju prelazimo u sledeci red */ printf("\n"); 1.4 Znakovni ulaz i izlaz - getchar i putchar Standardna biblioteka obezbežuje nekoliko funkcija za čitanje i pisanje po jednog znaka posebno, od kojih su getchar i putchar najprostije. Primer korišćenja funkcije za čitanje jednog znaka sa ulaza je: c = getchar();. Nakon izvršetka ove naredbe, promenljiva c će sadržati jedan znak sa standardnog ulaza. Primer korišćenja funkcije za štampanje jednog znaka na izlazu je: putchar(c); Nakon izvršetka ove naredbe, štampa se karakter koji je sadržaj promenljive c na standardnom izlazu. Konstanta EOF je celobrojna vrednost definisana u biblioteci <stdio.h>. Ovo je vrednost koju vraća funkcija getchar() kada nema više ni jednog znaka na ulazu, odnosno kada se stigne do kraja ulazne datoteke. Nazvana je EOF kao End Of File, engleski prevod za kraj datoteke. Ova vrednost mora da se razlikuje od svake vrednosti koja može da bude karakter. Zato promenljiva c za koju se poziva c=getchar() treba da bude tipa dovoljno velikog da može da prihvati sve što može da vrati poziv ove funkcije, dakle sve što je karakter i plus EOF. Zbog toga se za c koristi tip int a ne char. Napomena: EOF se pod Linux-om označava karakterom ctrl-d a pod Windows-om u Dev- C++ sa enter ctrl-z enter. Primer 6 Program vrši demonstraciju poziva funkcija putchar i getchar. int c1, c2;

8 Jelena Tomašević c1 = getchar(); printf("------------\n"); c2 = getchar(); printf("c1 = %d, c2 = %d\n",c1, c2); printf("c1 = %c, c2 = %c\n",c1, c2); putchar(c1); /* isto je kao i printf("%c",c1); */ putchar(c2); /* isto je kao i printf("%c",c2); */ putchar( \n ); /* Za ispisivanje karaktera a */ putchar( a ); /* dozvoljeno je : printf("abc"); printf("a"); */ /* nedozvoljeno je : printf( a ); putchar( abc ); putchar("abc"); */ Ulaz: ab Izlaz: ------------ c1 = 97, c2 = 98 c1 = a, c2 = b ab a Primer 7 Program čita jedan karakter sa standardnog ulaza i ispisuje ga na standardnom izlazu. int c; /* Karakter - obratiti paznju na int */ c = getchar(); /* cita karakter sa standardnog ulaza */ putchar(c); /* pise karakter c na standardni izlaz */ putchar( \n ); /* prelazak u novi red */ putchar( a ); /* ispisuje malo a */ putchar(97); /* ekvivalentno prethodnom */ Ulaz: s Izlaz iz programa: s aa Primer 8 Program vrši prebrojavanje cifara unetih na ulazu. /* zbog isdigit */ #include <ctype.h>

1.4 Znakovni ulaz i izlaz - getchar i putchar 9 int c; int br_cifara = 0; while ((c = getchar())!= EOF) if (c>= 0 && c<= 9 ) /* moze i if (isdigit(c)) */ br_cifara++; printf("broj cifara je : %d\n", br_cifara); Napomena: Obratiti pažnju na zagrade u okviru while ( (znak=getchar() )!= EOF). Ako bi se izostavile onda bi se prvo ispitalo da li je getchar()!= EOF pa bi se vrednost (1 ii 0) dodelila promenljivoj znak, što nije željeni efekat. Primer 9 Napisati program koji prepisuje ulaz na izlaz tako što mala slova pretvara u velika, velika u mala, a ostale karaktere prepisuje nepromenjene. int c; while ((c = getchar())!= EOF) if (c>= a && c<= z ) putchar(c- a + A ); else if (c>= A && c<= Z ) putchar(c+ a - A ); else putchar(c); Primer 10 Program broji linije i znakove na ulazu. int znak; /* Prihvata znak sa ulaza */ long br_linija=0 ; /* Brojac linija */ long br_znakova=0; /* Brojac znakova na ulazu */ while ( (znak=getchar() )!= EOF) br_znakova++; if (znak== \n ) br_linija ++; printf("prelazaka u novi red: %ld, karaktera: %ld \n",br_linija,br_znakova); Primer 11 Program broji blankove, horizontalne tabulatore.

10 Jelena Tomašević int znak; /* Prihvata znak sa ulaza */ int br_blankova=0; /* Brojac blankova */ int br_tabulatora=0; /* Brojac horizontalnih tabulatora */ /* UOCITI: blok naredbi while ciklusa NIJE OGRADJEN viticastim zagradama jer postoji samo jedna if naredba! */ while( (znak=getchar())!=eof ) if( znak== ) ++br_blankova; /* brojimo blanko simbole */ else if( znak== \t ) ++br_tabulatora; /* brojimo tab-ove */ /* Izdavanje rezultata na standardnom izlazu */ printf("broj blankova je %d a tabulatora %d.\n", br_blankova, br_tabulatora); Primer 12 Napisati program koji prepisuje ulaz na izlaz čineći tabulatore, nove linije i backslashove vidljivim. int znak; znak=getchar(); while( znak!=eof ) if( znak== \t ) /*uciniti tab vidljivim */ putchar( \\ ); putchar( t ); else if( znak== \n ) /*uciniti new line vidljiv */ putchar( \\ ); putchar( n ); putchar( \n ); else if( znak== \\ ) /*backslash udvojiti */ putchar( \\ ); putchar( \\ ); else putchar(znak); /* */ znak=getchar(); /* while( znak!=eof ) */ 1.5 Priprema za kolokvijum Primer 13 Šta će biti izlaz iz sledećeg programa? printf("\"zdravo, svima\"\n"); printf("\\n\tprelazak u novi red\n"); printf("\\t\ttabulator\n"); printf("\\\\\tkosa crta\n"); printf("%%%%\tprocenat\n"); Izlaz iz programa:

1.5 Priprema za kolokvijum 11 "Zdravo, svima" \n prelazak u novi red \t tabulator \\ kosa crta %% procenat Primer 14 A šta iz ovog? putchar( \\ ); putchar( t ); putchar( \t ); printf("za %d ispisujem %c", \\, \\ ); printf("\n\n\\n\\\n\\\\n\n"); Izlaz iz programa: \t Za 92 ispisujem \ \n\ \\n Primer 15 int vrednost; vrednost= A ; printf("%s\nkarakter=%3c\nvrednost=%3d\n", "Veliko slovo",vrednost,vrednost); vrednost= a ; printf("%s\nkarakter=%3c\nvrednost=%3d\n", "Malo",vrednost,vrednost); Izlaz (u slucaju ASCII): Veliko slovo karakter= A vrednost= 65 Malo karakter= a vrednost= 97 Primer 16 Napisati program koji ispisuje ascii tabelu.

12 Jelena Tomašević int c; for (c = 0; c<128; c++) printf("%d - %c\n",c,c); Primer 17 Napisati program za razmenu vrednosti dva cela broja. Prvi nacin: int a = 10; int b = 15; int tmp; tmp = a; a = b; b = tmp; printf ("a=%d, b=%d\n", a, b); Drugi nacin: int a = 10; int b = 15; b = a+b; /* a = 10; b = 25; */ a = b-a; /* a = 15; b = 25; */ b = b-a; /* a = 15; b = 10; */ printf ("a=%d, b=%d\n", a, b); Primer 18 Napisati program koji menja mesta cifara u broju. int n,t=0; printf("unesite broj\n"); scanf("%d",&n); while(n) t=t*10+n%10; n/=10; printf("novi broj je %d\n", t);

1.5 Priprema za kolokvijum 13 return 0; Izlaz: Unesite broj 1234 Novi broj je 4321 Zadatak 1 Šta će biti ispisano nakon izvršavanja sledećeg programa? int x=506, y=3, z=21, t=2; printf("x=%d y=%d\n",x,y); printf("z - t=%d\n", z-t); printf("z / t =%d\n",z / t); printf("-x=%d\n",- x); printf("x %% y=%d\n", x%y); Zadatak 2 Dat je fragment C programa: i=1; j=1; while (i+j<10) ++j; i+=2; suma=i+j; a) Koliko puta će se ponoviti while ciklus? b) Koje su vrednosti promenljivih i, j, suma nakon izvršenja fragmenta? c) Napisati ekvivalentan for ciklus. Rešenje: a) 3 puta b)i=7, j=4, suma=11 c)for(i=1,j=1; i+j<10; ++j, i+=2); suma=i+j; Zadatak 3 Dat je fragment C programa: i=1; j=1; while (i+j<10) ++j; i+=2; suma=i+j; a) Koliko puta će se ponoviti while ciklus? b) Koje su vrednosti promenljivih i, j, suma nakon izvršenja fragmenta? c) Napisati ekvivalentan for ciklus. Rešenje: a) 8 puta b)i=3, j=9, suma=12 c)for(i=1,j=1; i+j<10; ++j); i+=2; suma=i+j;

14 Jelena Tomašević Zadaci za praktikum: Zadatak 4 Uraditi zadatke sa kolokvijuma. Zadatak 5 Program koji prepisuje ulaz na izlaz pri čemu više blanko znakova zamenjuje jednim. Zadatak 6 Sledeći program koji prepisuje standardni ulaz na standardni izlaz pokrenuti sa: (iustracija redirekcije standardnog ulaza i izlaza)./a.out <zadatak.c./a.out >tekst.txt./a.out <zadatak.c >kopija.c int c; /* Obratiti paznju na raspored zagrada */ while ((c = getchar())!= EOF) putchar(c);