Ovo Izlaganje C++

You might also like

You are on page 1of 79

НАЗИВ РАДА

 ИНФОРМАЦИОНИ СИСТЕМ
СТУДЕНТСКЕ СЛУЖБЕ УРАЂЕН У
ПРОГРАМУ C++
 INFORMATION SYSTEM OF
STUDENT SERVICES DONE IN
PROGRAMS C + +

Damnjan Radosavljević, 2009 1


Шта је програм?

 Низ инструкција које упућују компјутор како


да реши проблем се назива програм.
Statment 1
Statment 2
Statment 3
...

Damnjan Radosavljević, 2009 2


Шта је програмирање?

 Процес планирања низа корака


(инструкција) за компјутер.
STEP 1
STEP 2
STEP 3
...
 Чин дизајнирaњa, писaњa и одржaвaњa
прoгрaмa sе нaзивa programiranje.

Damnjan Radosavljević, 2009 3


Шта компјутер разуме?

 Компјутер разуме само наредбе у тзв.


машинском облику.
 Машински језик је одређени низ 0 и 1
који упућују компјутер да учини неку
од радњи, као што је збир, разлика ...
 нпр. сабери два броја 100000010

Damnjan Radosavljević, 2009 4


Машински језик (ML)

 ML naredbe su smeštene u memoriji


kompjutera koja je niz bistabila (switch -
sklopke).
 Radi jednostavnosti prikaza,
 “on” switch se predstavlja s 1
 an “off” switch se predstavlja s 0
 ML je prema tome zasnovan na binarnom
sistemu (base-2):
 npr: 100000010

Damnjan Radosavljević, 2009 5


Машински језик

 neprenosiv
 Izvodiv samo na određenoj platformi
 Sastoji se od binarno-kodiranih instrukcija
(stringovi 0 i 1)
 Izravno izvodiv od strane kompjutora
 Programiranje izuzetno složeno!

Damnjan Radosavljević, 2009 6


Кључна идеја

 Odrediti niz “reči” (mnemonics) koje


odgovaraju ML instrukcijama, plus program
prevodioc u ML.

ADD asembler 100000010

 Te reči su asembler(assembly language), a


program tumač je asemblerski prevodioc
(assembler).

Damnjan Radosavljević, 2009 7


Asembler

 Omogućava korištenje “reči”-naredbi


koje su za programera prirodniji oblik od
binarnih brojeva.
+ Lakše pisanje programa
+ Lakše “čitanje” programa
+ Lakše otkrivanje i ispravljanje grešaka
 Ipak neprenosiv na druge platforme

Damnjan Radosavljević, 2009 8


Asembler (srednji nivo)

 Manje više čitljiva verzija ML


 reči, abrevijacije, znakovi i brojevi zamenjuju nule i
jedinice
 Lagan prevod između čitljivog i izvršnog, mašinskog,
koda
 neprenosiv, kao i ML (hardware dependent)

Damnjan Radosavljević, 2009 9


Високи језици HLL

 Približavanje jeziku čoveka (if, while,


do, ...), plus program prevodioc u ML.
 Skup naredbi (+ostalo) koji se naziva
visoki programski jezik (high level
language), skraćeno HLL, a program za
prevod u ML se naziva prevodioc
(compiler).

Damnjan Radosavljević, 2009 10


HLL prevodioci (Compilers)

 Gde asemblerski prevodilac prevodi jednu


naredbu u jednu ML instrukciju,
HLL compiler prevodi jednu HLL naredbu
u niz ML naredbi. 10101100
00000000
00101110
z = x + y; Compiler
00000000
00101110
00000000
Damnjan Radosavljević, 2009 11
Visoki jezici (kao C++)

Visoki jezici (kao C++) su


+ Još lakši za pisanje programa
+ Još lakši za čitanje programa
+ Još je lakše pronalaženje i otklanjanje
grešaka
+ Prenosivi među platformama
(ukoliko programirate u okviru standardnog
jezika).

Damnjan Radosavljević, 2009 12


HLL карактеристике

 prenosivost
 Korisnik piše program koji nalikuje govornom
jeziku

 primeri -- FORTRAN, COBOL, Pascal,


Ada, Modula-2, C++, Java
 Obično standardizirani ISO/ANSI što daje
službeni opis jezika

Damnjan Radosavljević, 2009 13


High Level Languages

Jezik Opis
BASIC Početnički “All-purpose Symbolic Instruction Code”. Opći programski
jezik zamišljen za početnike i učenje.
FORTRAN Formula Translator. Dizajniran za compleksne matematičke
algoritme.
COBOL Common Business-Oriented Language. Poslovne aplikacije.
Pascal Strukturalni, opći programski dizajniran za učenje programiranja.
C Strukturiran, opći programski jezik razvijen pri Bell Labs. C nudi kako
high-level tako i low-level značajke.
C++ Zasnovan na C i Smalltalk jezicima, C++ nudi objektno-orijentirane
značajke kojih nema u C. Također Bell laboratoriji.
Java Objektno-orijentiran jezik dizajniran pri Sun Microsystems. Java se
može koristiti za razvoj izuzetno prenosivih aplikacija koje se mogu
izvršavati i preko Interneta, u web pregledniku.

Damnjan Radosavljević, 2009 14


Interpreteri

 Poseban način prevoda HLL u ML ili


objektni kod
 prevod (source - objektni kod) nije
poseban korak korisnika
 Prevod je “on-line,” i.e. Tokom izvršavanja
High
Level machine
Interpreter language
Language

Damnjan Radosavljević, 2009 15


Compilers vs. Assemblers vs.
Interpreters
 Compilers / Assemblers
 Prevod je poseban korak
 “off-line”, a ne tokom izvršavanja
 Jedan korak do izvršne datoteke

High Level Compiler Machine


Language ili Language
Interpreter

Damnjan Radosavljević, 2009 16


Compilers vs. Assemblers vs.
Interpreters
 Interpreters – drugi način za prevod izvorni –
objektni kod
 Interpretacija nije poseban korak
 “on-line,” tokom izvođenja
 Svaka naredba uključuje:

Machine
Instruction Assembler Language

Damnjan Radosavljević, 2009 17


Compilers vs. Interpreters

 Kompajlirani programi se izvode brže od


interpretiranih
 Interpreteri su popularni u razvojnim
okruženjima gde programe često
kompajliramo (dodavanje značajki otklanjanje
grešaka)
 Na kraju kompajliramo konačnu izvršnu

verziju

Damnjan Radosavljević, 2009 18


Izvršenje programa

Program

Data input Computer Data Output


(input for the Processing (Output of the
program) Data program)

Damnjan Radosavljević, 2009 19


Извршење програма

Data Input
Program (input for the
program)

Computer, Processing Data

Data Output
(output for the
program)

Damnjan Radosavljević, 2009 20


C++ три стадијума

myprog.cpp myprog.obj myprog.exe


SOURCE OBJECT EXECUTABLE
izvorni
C++ kod ML datoteka ML datoteka

via compiler via linker

other code
from libraries,
etc.

Damnjan Radosavljević, 2009 21


Превод у извршну датотеку

Source Code
// a small C++ program
#include <iostream>
int main(void) Preprocessor
{
std::cout << “Hello World” Modified Source Code
<< std::endl;
return 0; Compiler
}
Object Code

Objektni kod ostalih funkcija Linker

Executable Code

Damnjan Radosavljević, 2009 22


Анализа: коментар

// a small C++ program  tipovi:


#include <iostream>
int main(void)
+ //
{ + /* */ (C stil)
std::cout << “Hello World”
<< std::endl;
return 0;
}

Damnjan Radosavljević, 2009 23


Анализа: #include

// a small C++ program


 Izvor funkcionalnosti
#include <iostream> + Core language
int main(void) + Standard library
{
std::cout << “Hello World”  <> prema tome
<< std::endl; + Standard header
return 0;  nudi
}
+ Funkcionalnost
+ Nije važno što je
već što i kako nudi

Damnjan Radosavljević, 2009 24


Анализа: main

// a small C++ program


 funkcija
#include <iostream> + Ima ime
int main(void) + Biva pozivana
{  main vraća broj
std::cout << “Hello World”
<< std::endl;
+ Uspješnost izvršenja
return 0;
}

Damnjan Radosavljević, 2009 25


Анализа: {}

// a small C++ program


 naredbe
#include <iostream> + {
int main(void) + statements
{ + }
std::cout << “Hello World”
<< std::endl;  Sve unutra je celina
return 0; + unutra su delovi iste
} funkcije

Damnjan Radosavljević, 2009 26


Анализа: standard library

// a small C++ program


 Korištenje standardne
#include <iostream> biblioteke
int main(void) + << ispisni operator
{ + std:: namespace
std::cout << “Hello World” + std::cout standardni
<< std::endl;
ispisni stream
return 0;
}
+ std::endl novi redak

Damnjan Radosavljević, 2009 27


Анализа: return instrukcija

// a small C++ program


 Vraća vrijednost cjelini
#include <iostream> koja je funkciju pozvala
int main(void) (ovdje sistem)
{ + tip int
std::cout << “Hello World”
<< std::endl;
return 0;
}

Damnjan Radosavljević, 2009 28


Студенска служба Факултета

 Студенска служба Факултета има законску обавезу да


води Матичну књигу студената, да чува сву
документацију о студенту све до дипломирања и да
по дипломирању архивира документацију и чува исту
у својој архиви.
 Осим ових података, руководство Школе, пратећи
промене у високошколском образовању, има потребу
за додатним информацијама (анализа пролазности:
из предмета и у наредну годину студија, структура
студената по месту и завршеној школи итд).
 Идеја је да се направи солидна софтверска основа
која омогућава даљу једноставну и поуздану
надоградњу и да се из постојећих података, које
законодавац тражи, извуче што више корисних
информација.
Damnjan Radosavljević, 2009 29
Студенска служба Факултета

Обрада програма у језику C++ се врши у следећа четири корака:


1. Уношење изворног текста програма,
2. Превођење изворног текста, (compiling),
3. Повезивање преведеног облика програма са потребним
корисничким и системским потпрограмима у изводљив облик
(linking),
4. Извршење програма.
Уопштено гледано, објектно-оријентисано решавање проблема се
састоји из четири корака:
1. Идентификовање проблема
2. Идентификовање објеката који су потребни за његово решење
3. Идентификовање порука које ће објекти међусобно слати и
примати
4. Креирање секвенце порука објектима, које ће решавати проблем
или проблеме.

Damnjan Radosavljević, 2009 30


КОНЦЕПТИ И МЕТОДЕ
ПРОГРАМИРАЊА
Програмирање, као што је већ речено је
једна фаза у животном циклусу софтвера и
она обухвата:

а). Анализу програма


б). Дизајн програма
ц). Кодирање
д). Тестирање
е). Одржавање.

Damnjan Radosavljević, 2009 31


ФАЗА АНАЛИЗЕ

Програм мора да садржи:


1. Упис студената: Универзитет; Назив факултета (више
школе); Смер; ЈМБГ; Презиме, име родитеља и име;
Финансирање; Број индекса; Број освојених бодова.
2. Унос професора: ЈМБГ; Презиме, име родитеља и име;
Смер; Назив предмета; Фонд часова.
3. Упис студената на нову годину: Година која се уписује;
Презиме, име родитеља и име; Број индекса; Да ли се
студент поново уписује на исту годину студија; Година
уписа.
4. Унос пријава: Име; Презиме; Назив предмета: Број
индекса; Име и презиме професора; Датум полагања;
Оцена.
5. Преглед пријава: Читање свих унетих пријава у досије
студената.
6. О аутору: Информације о аутору.
Damnjan Radosavljević, 2009 32
ДИЗАЈН СИСТЕМА
УПИС СТУДЕНАТА

ИДЕЈА ЈЕ ДА СЕ НАПРАВЕ КЛАСЕ СА ФУНКЦИЈАМА.


ФУНКЦИЈЕ ТРЕБАЈУ ДА НАМ ПРУЖЕ МОГУЋНОСТ УНОШЕЊА
ОСНОВНИХ ПОДАТАКА И КОНТРОЛУ ЊИХОВЕ ИСПРАВНОСТИ.
СВАКИ УНОС БИЋЕ ЈЕДНА НОВА ФУНКЦИЈА КОЈА ЋЕ ПРОВЕРАВАТИ
ДА ЛИ ЈЕ УНОС ВАЛИДАН ИЛИ НЕ.
У СЛУЧАЈУ ДА СМО ИЗВРШИЛИ ГРЕШКУ ПРИЛИКОМ УНОШЕЊА,
ПРОГРАМСКА ПЕТЉА ЋЕ НАС ВРАТИТИ НА ПОЧЕТАК КАКО БИ УНОС
БИО ИСПРАВАН.
КЛАСА ПОДАТАКА О СТУДЕНТУ ТРЕБА ДА САДРЖИ
СЛЕДЕЋЕ ФУНКЦИЈЕ:
УНИВЕРЗИТЕТ, НАЗИВ ФАКУЛТЕТА (ВИШЕ ШКОЛЕ), СМЕР, ЈМБГ,
ПРЕЗИМЕ, ИМЕ РОДИТЕЉА И ИМЕ, ФИНАНСИРАЊЕ, БРОЈ ИНДЕКСА,
БРОЈ ОСВОЈЕНИХ БОДОВА.

Damnjan Radosavljević, 2009 33


ДИЗАЈН СИСТЕМА
УНОС ПРОФЕСОРА

 КЛАСА ПОПИСА ПРЕДАВАЧА ЋЕ ИМАТИ


СЛЕДЕЋЕ ФУНКЦИЈЕ:
ЈМБГ, ПРЕЗИМЕ, ИМЕ РОДИТЕЉА И ИМЕ, СМЕР,
НАЗИВ ПРЕДМЕТА, ФОНД ЧАСОВА.
 КЛАСА УПИС У НОВУ ГОДИНУ ТРЕБА ДА
САДРЖИ СЛЕДЕЋЕ ФУНКЦИЈЕ:
ГОДИНА КОЈА СЕ УПИСУЈЕ, ПРЕЗИМЕ, ИМЕ
РОДИТЕЉА И ИМЕ, БРОЈ ИНДЕКСА, ДА ЛИ СЕ
СТУДЕНТ ПОНОВО УПИСУЈЕ НА ИСТУ ГОДИНУ
СТУДИЈА, ГОДИНА УПИСА.

Damnjan Radosavljević, 2009 34


ДИЗАЈН СИСТЕМА
УНОС ПРИЈАВА

ФУНКЦИЈЕ:
1. ПРИЈАВА О ПОЛОЖЕНИМ (НЕПОЛОЖЕНИМ) ИСПИТИМА
 ФУНКЦИЈА БИ ТРЕБАЛА ДА САДРЖИ: ИМЕ, ПРЕЗИМЕ, НАЗИВ
ПРЕДМЕТА, БРОЈ ИНДЕКСА, ИМЕ И ПРЕЗИМЕ ПРОФЕСОРА, ДАТУМ
ПОЛАГАЊА И ОЦЕНУ. ТРЕБА ВОДИТИ РАЧУНА И О ТОМЕ ДА
СВАКА ПРИЈАВА БУДЕ ПОСЕБНО ОДВОЈЕНА ОД ДРУГЕ ДА НЕ БИ
ДОШЛО ДО ИКАКВЕ ЗАБУНЕ ПРИЛИКОМ ЧИТАЊА ТИХ ПРИЈАВА.
2. ПРЕГЛЕД ПРИЈАВА
 ПРЕГЛЕД ПРИЈАВА ЈЕ ЈОШ ЈЕДНА ФУНКЦИЈА КОЈА ЧИТА СВЕ
ПРЕТХОДНО ИСПИСАНЕ ПРИЈАВЕ КОЈЕ СУ СНИМЉЕНЕ У БАЗИ
СТУДЕНТСКЕ СЛУЖБЕ. ТРЕБАМО ЈАСНО ОДВОЈИТИ СВАКОУ
ПРИЈАВУ ПОСЕБНО ДА НЕ БИ ДОШЛО ДО ЗАБУНЕ ПРИЛИКОМ
ЧИТАЊА.
3. О АУТОРУ
 ЈОШ ЈЕДНА ФУНКЦИЈА КОЈА САДРЖИ И ИСПИСУЈЕ ПРЕТХОДНО
ДЕФИНИСАНЕ ПОДАТКЕ О АУТОРУ.

Damnjan Radosavljević, 2009 35


ИНТЕРФЕЈС

ПРОГРАМ БИ ТРЕБАО ДА ИМА ПРЕГЛЕДАН ИНТЕРФЕЈС ДА НЕ БИ


ДОШЛО ДО ЗАБУНЕ ПРИЛИКОМ УНОШЕЊА ПОДАТАКА.
ТРЕБА ДА НАМ ДА ЈАСНО ОБАВЕШТЕЊЕ ШТА ЋЕ СЕ ДЕСИТИ У
СЛУЧАЈУ ДА УНЕСЕМО НЕКИ КАРАКТЕР.
ИНТЕРФЕЈС ПРИЛИКОМ ОТВАРАЊА ПРОГРАМА ТРЕБАЛО БИ ДА
ИЗГЛЕДА УПРАВО ОВАКО:

ПМФ СТУДЕНТСКА СЛУЖБА


1. Унос пријава
2. Унос Професора
3. Упис новог студента
4. Упис студента на нову годину
5. Испис унетих пријава
6. О аутору
9. Крај

Damnjan Radosavljević, 2009 36


ИНТЕРФЕЈС

У СЛУЧАЈУ ДА КОРИСНИК УНЕСЕ НЕКИ ДРУГИ БРОЈ, РАЗЛИЧИТ ОД


БРОЈЕВА 1, 2, 3, 4, 5, 6, 9 ПРОГРАМ НАС ТРЕБА ОБАВЕСТИТИ ДА ЈЕ
УНЕТИ КАРАКТЕР ПОГРЕШАН И ДА ОПЕТ ВРАТИ ИЗГЛЕД ПОЧЕТНОГ
ИНТЕРФЕЈСА И ДА НАМ ПРУЖИ МОГУЋНОСТ ДА ОПЕТ УНЕСЕМО
ЖЕЉЕНИ БРОЈ.
КАДА КОРИСНИК ОДАБЕРЕ ЈЕДНУ ОД ПОНУЂЕНИХ ОПЦИЈА
ПОТРЕБНО ЈЕ ДА ИЗАЂЕ ЧИСТ ПРЕГЛЕДАН ЕКРАН НА ЧИЈЕМ ЋЕ
ГОРЊЕМ УГЛУ ДА БУДЕ ИСПИСАНО МЕСТО ГДЕ СЕ КОРИСНИК
НАШАО ПА ТАКО, ПРИЛИКОМ ПРИТИСКА ТАСТЕРА 1 НА ЧИСТОМ
ЕКРАНУ ЋЕ БИТИ ИСПИСАНО итд.
########################################
#### U N O S P R I J A V A ####
########################################

Damnjan Radosavljević, 2009 37


КОДИРАЊЕ

КОДИРАЊЕ ЈЕ НАЈВАЖНИЈА ФАЗА У ПРОГРАМИРАЊУ. У ОВОМ ДЕЛУ


ДЕТАЉНО ЋЕМО ОПИСАТИ СВАКУ ФУНКЦИЈУ И СВАКИ КОРАК У
ПРОГРАМИРАЊУ.
#INCLUDE ЈЕ ПРЕТПРОЦЕСОРСКА ДИРЕКТИВА КОЈА ДАЈЕ
ИНСТРУКЦИЈЕ КОМПАЈЕРУ ДА УКЉУЧИ БИЛО СТАНДАРНИ ХЕДЕР
ИЛИ НЕКИ ДРУГИ ИЗВОРНИ ПОДАТАК КОЈИ САДРЖИ
#INCLUDE ДИРЕКТИВУ.
ИМЕ СТАНДАРНДНОГ ХЕДЕРА СЕ НАЛАЗИ ИЗМЕЂУ ЗНАКОВА<>. КАДА
УКЉУЧУЈЕМО НЕКИ ДРУГЕ ИЗВОРНЕ ПОДАТКЕ, ЊИХОВО ИМЕ СЕ МОЖЕ
СТАВИТИ ИЗМЕЂУ ОВИХ ЗНАКОВА ИЛИ ЗНАКОВА НАВОДА.
#include<iostream.h>
#include<conio.h>
#include<stdlib.h>
#include<string.h>
#include<fstream>

Damnjan Radosavljević, 2009 38


КОДИРАЊЕ

САДА КАДА СМО УКЉУЧИЛИ СВЕ ОВЕ ХЕДЕР ФАЈЛОВЕ НАЈПРЕ ЈЕ ПОТРЕБНО
И РАЗЈАСНИТИ ИХ.

iostream – СКУП НАРЕДБИ КОЈЕ НАМ ОМОГУЋУЈУ КОМУНИКАЦИЈУ СА


ПРОГРАМОМ, НА ПРИМЕР НЕ БИ БИЛО МОГУЋЕ ИСПИСАТИ ТЕКСТ.
stdlib – БИБЛИОТЕКА СТАНДАРДНИХ НАРЕДБИ
string – КОРИСТИ СЕ ДА БИ ПРОГРАМ МОГАО КОРИСТИТИ СТРИНГ ОБЈЕКТЕ
conio – ЈЕ ХЕДЕР ФАЈЛ КОЈИ СЕ КОРИСТИ КАДА ЖЕЛИМО ДА У ПРОГРАМУ
ИСПИШЕМО TUI (TEXT USER INTERFACE) ИНТЕРФЕЈС.
fstream – СЕ КОРИСТИ ЗА РАД СА ТОКОВИМА НА ДИСКУ (ДАТОТЕКАМА). ОВА
КЛАСА ЈЕ ИЗВЕДЕНА ИЗ IOSTREAM ХЕДЕР ФАЈЛА.
using namespace std; ПОСТОЈИ МНОШТВО БИБЛИОТЕКА НАРЕДБИ. МОГЛО БИ
СЕ ДЕСИТИ ДА СЕ У ДВЕ РАЗЛИЧИТЕ БИБЛИОТЕКЕ НАЂУ НАРЕДБЕ ИСТОГ
НАЗИВА А РАЗЛИЧИТЕ НАМЕНЕ. ОВОМ НАРЕДБОМ ОБАВЕШТАВАМО COMPILER
ДА ЋЕМО КОРИСТИТИ СТАНДАРДНЕ НАЗИВЕ НАРЕДБИ.

Damnjan Radosavljević, 2009 39


КЛАСА ПОДАЦИ О СТУДЕНТУ
class PodaciOStudentu – ДЕФИНИСАЊЕ КЛАСЕ ПОДАТАКА О
СТУДЕНТУ
{ - Почетак
ФУНКЦИЈА ЗА УНОС ЈМБГ
public:
int unesiJMBG()
{
char UJMBG[30];
int x;
int p;
do
{
cout <<"Unesite JMBG:\t";
cin.getline(UJMBG,30);
x=0;
p=1;

Damnjan Radosavljević, 2009 40


КЛАСА ПОДАЦИ О СТУДЕНТУ

while (UJMBG[x]!='\0')
{
if (isalpha(UJMBG[x]))
{
p=0;
}
x=x+1;
}
}
while (p==0);
return 0;
}

Damnjan Radosavljević, 2009 41


ФУНКЦИЈА ЗА УНОС ИМЕНА

public:
int unesiIme()
{
char UI[250];
int x;
int p;
do
{
cout <<"Prezime ime jednog od roditelja i ime :\t";
cin.getline(UI,250);
x=0;
p=1;

Damnjan Radosavljević, 2009 42


ФУНКЦИЈА ЗА УНОС ИМЕНА
while (UI[x]!='\0')
{
if (isdigit(UI[x]))
{
p=0;
}
x=x+1;
}
}
while (p==0);
return 0;
}
ЈЕ ЈАВНА (PUBLIC) ФУНКЦИЈА КОЈА ВРШИ ПРОВЕРУ И ВАЛИДНОСТ УНОСА. НА ПОЧЕТКУ
ЋЕМО ДЕФИНИСАТИ ПОТРЕБНЕ ВАРИЈАБЛЕ А ЗАТИМ У ГЛАВНОМ ДЕЛУПРОГРАМА
УНОСИМО ТЕКСТ И ИСПИТУЈЕМО ЈЕСУ ЛИ УНЕСЕНА СЛОВА ИЛИ БРОЈЕВИ. У СЛУЧАЈУ ДА
СЕ УНЕСУ БРОЈЕВИ УНОС СЕ ПОНАВЉА.

Damnjan Radosavljević, 2009 43


ФУНКЦИЈА ЗА УНОС БРОЈА
БОДОВА

public:
void BrojOsvojenihBodova()
{
float bodovi;
do
{
cout<<"Unesite broj bodova\t";
cin>>bodovi;
}
while (bodovi > 100);
}

Damnjan Radosavljević, 2009 44


ФУНКЦИЈА ЗА УНОС ИМЕНА
УНИВЕРЗИТЕТА

public:
int Univerzitet()
{
char Un[50];
int x;
int p;
do
{
cout <<"Univerzitet:\t";
cin.getline(Un,50);
cin.getline(Un,50);
x=0;

Damnjan Radosavljević, 2009 45


ФУНКЦИЈА ЗА УНОС ИМЕНА
УНИВЕРЗИТЕТА

p=1;
while (Un[x]!='\0')
{
if (isdigit(Un[x]))
{
p=0;
}
x=x+1;
}
}
while (p==0);
return 0;
}

Damnjan Radosavljević, 2009 46


ФУНКЦИЈА ЗА УНОС ИМЕНА
ФАКУЛТЕТА И СЕДИШТА

public:
int NazivFakulteta()
{
char NF[50];
int x;
int p;
do
{
cout <<"Naziv fakulteta (vise skole):\t";
cin.getline(NF,50);
x=0;
p=1;

Damnjan Radosavljević, 2009 47


ФУНКЦИЈА ЗА УНОС ИМЕНА
ФАКУЛТЕТА И СЕДИШТА

while (NF[x]!='\0')
{
if (isdigit(NF[x]))
{
p=0;
}
x=x+1;
}
}
while (p==0);
return 0;
}

Damnjan Radosavljević, 2009 48


ФУНКЦИЈА ЗА УНОС СМЕРА

public:
int Smer()
{
char SM[50];
int x;
int p;
do
{
cout <<"Smer:\t";
cin.getline(SM,50);
x=0;
p=1;

Damnjan Radosavljević, 2009 49


ФУНКЦИЈА ЗА УНОС СМЕРА

while (SM[x]!='\0')
{
if (isdigit(SM[x]))
{
p=0;
}
x=x+1;
}
}
while (p==0);
return 0;
}

Damnjan Radosavljević, 2009 50


ФУНКЦИЈА ЗА УНОС НАЧИНА
ФИНАНСИРАЊА СТУДЕНТА

public:
int Finansiranje()
{
char DRZ[50];
int x;
int p;
do
{
cout <<"Finansiranje:\t";
cin.getline(DRZ,50);
x=0;
p=1;

Damnjan Radosavljević, 2009 51


ФУНКЦИЈА ЗА УНОС НАЧИНА
ФИНАНСИРАЊА СТУДЕНТА

 while (DRZ[x]!='\0')
 {
 if (isdigit(DRZ[x]))
 {
 p=0;
 }
 x=x+1;
 }
 }
 while (p==0);
 return 0;
 }

Damnjan Radosavljević, 2009 52


ФУНКЦИЈА ЗА УНОС ГОДИНЕ
ПРВОГ УПИСА

public:
int GodinaPrvogupisa()
{
char GPU[5];
int x;
int p;
do
{
cout <<"Godina upisa:\t";
cin.getline(GPU,5);
x=0;
p=1;

Damnjan Radosavljević, 2009 53


ФУНКЦИЈА ЗА УНОС ГОДИНЕ
ПРВОГ УПИСА

while (GPU[x]!='\0')
{
if (isalpha(GPU[x]))
{
p=0;
}
x=x+1;
}
}
while (p==0);
return 0;
}

Damnjan Radosavljević, 2009 54


ФУНКЦИЈА ЗА УНОС БРОЈА
ИНДЕКСА

public:
int BrIndexa()
{
char BRI[8];
int x;
int p;
do
{
cout <<"Broj indeksa:\t";
cin.getline(BRI,8);
x=0;
p=1;

Damnjan Radosavljević, 2009 55


ФУНКЦИЈА ЗА УНОС БРОЈА
ИНДЕКСА

while (BRI[x]!='\0')
{
if (isalpha(BRI[x]))
{
p=0;
}
x=x+1;
}
}
while (p==0);
return 0;
}

Damnjan Radosavljević, 2009 56


КЛАСА УПИС У НОВУ ГОДИНУ

class UpisUNovuGodinu : public PodaciOStudentu – ДЕФИНИСАЊЕ


КЛАСЕ УПИС
СТУДЕНАТА У НОВУ ГОДИНУ СТУДИЈА ГДЕ НОВА КЛАСА НАСЛЕЂУЈЕ
СВЕ ЈАВНЕ
ФУНКЦИЈА КЛАСЕ ПОДАЦИ О СТУДЕНТУ.
{ - почетак
САДА ЈЕ ПОТРЕБНО ДЕФИНИСАТИ У ОКВИРУ НОВЕ КЛАСЕ НЕКЕ НОВЕ
ФУНКЦИЈЕ
ФУНКЦИЈА ГОДИНА КОЈА СЕ УПИСУЈЕ
ФУНКЦИЈА ДА ЛИ СТУДЕНТ ПОНОВО УПИСУЈЕ ИСТУ ГОДИНУ

Damnjan Radosavljević, 2009 57


КЛАСА ПОПИС ПРЕДАВАЧА

КЛАСА ПОПИС ПРЕДАВАЧА


class PopisPredavaca – ДЕФИНИСАЊЕ КЛАСЕ О ПРОФЕСОРИМА НА
ФАКУЛТЕТУ
{ - почетак
ФУНКЦИЈА УНЕСИ ЈМБГ
ФУНКЦИЈА УНЕСИ ИМЕ И ПРЕЗИМЕ
ФУНКЦИЈА ФОНД ЧАСОВА
ФУНКЦИЈА СМЕР
ФУНКЦИЈА НАЗИВ ПРЕДМЕТА
}; - крај класе

Damnjan Radosavljević, 2009 58


ВОИД ФУНКЦИЈА

void main()
СВАКИ ПРОГРАМ ИМА САМО ЈЕДНУ MAIN ФУНКЦИЈУ. НАРЕДБА MAIN
ОЗНАЧАВА ДА НА ОВОМ МЕСТУ ПОЧИЊЕ САМ ПРОГРАМ. ОНО ШТО
ЈЕ ПРЕТХОДНО ДЕФИНИСАНО СЕ НЕ СМАТРАЈУ ПРОГРАМОМ НЕГО
УПУТИ КОМПАЈЛЕРУ КАКО ЋЕ ПРЕВЕСТИ ПРОГРАМ КОЈИ СЛЕДИ.
{ - почетак
PopisPredavaca b;
PodaciOStudentu c;
UpisUNovuGodinu d;
У овом делу формирају се објекти класе које називамо b, c и d.
int izbor=0;
while (izbor != 9){
У овом делу дефинисаћемо избор. Све док је избор различит од 9,
следи:
system("cls"); - чишћење екрана а затим следи испис главног
интерфејса.
Damnjan Radosavljević, 2009 59
УНОШЕЊЕ БРОЈА

НАКОН ГЛАВНОГ ИНТЕРФЕЈСА СЛЕДИ УНОШЕЊЕ БРОЈА И ТО У


СЛЕДЕЋОЈ ЛИНИЈИ:
cout <<"\t\t>"; cin >> izbor;
У СЛУЧАЈУ ДА УНЕСЕМО 1 ИЗВРШИЋЕ СЕ СЛЕДЕЋЕ:
switch (izbor){
case 1 : {
char prezime[50], ImeIPrezimeP[250];
char brojIndexa[80],datum[80],ime[50],p[20];
char nazivPredmeta[50],ocena[50];
system("cls"); - чишћење екрана
ofstream cprn("Unos_prijava.txt",ios::app);
ofstream – користи се само за излазне датотеке
ios::app – уписивање на крају датотеке

Damnjan Radosavljević, 2009 60


УНОШЕЊЕ БРОЈА

##############################
cout<<"\n\t\t #### U N O S P R I J A V A ####
cout<<"\n\t\t ######################
Штампање због прегледности
ИСПИС НА ЕКРАНУ:
cin.getline(p,20);
cout<<"\nIme:\t";
cin.getline(ime,50);
cout<<"\nPrezime:\t";
cin.getline(prezime,50);
cout<<"\nNaziv predmeta:\t";
cin.getline(nazivPredmeta,50);

Damnjan Radosavljević, 2009 61


УНОШЕЊЕ БРОЈА

cout<<"\nBroj indeksa:\t";
cin.getline(brojIndexa,80);
cout<<"\nIme i prezime profesora:\t";
cin.getline(ImeIPrezimeP,250);
cout<<"\nUnesite datum:\t";
cin.getline(datum,80);
cout<<"\nUnesite ocenu:\t";
cin.getline(ocena,50);
cout<<"\n\n\n";

Damnjan Radosavljević, 2009 62


ШТАМПАЊЕ ПОДАТАКА У ФАЈЛ

cprn<<"\n\n\n";
cprn<<"Student "<<ime<<"\n";
cprn<<"\n##########################";
cprn<<"\n\nIme:"<<ime;
cprn<<"\n\nPrezime:"<<prezime;
cprn<<"\n\nBroj indeksa:"<<brojIndexa;
cprn<<"\n\nIme i prezime profesora:"<<ImeIPrezimeP;
cprn<<"\n\nNaziv Predmeta:"<<nazivPredmeta;
cprn<<"\n\nOcena:"<<ocena;
cprn<<"\n\nDatum:"<<datum;
cprn<<"\n##########################";
break;
}

Damnjan Radosavljević, 2009 63


ШТАМПАЊЕ ПОДАТАКА У ФАЈЛ

У СЛУЧАЈУ ДА ОДАБЕРЕМО 2 ИЗВРШАВА СЕ СЛЕДЕЋЕ:


case 2 : {
system("cls"); - чишћење екрана
cout<<"\n\t\t#########################";
cout<<"\n\t\t#### U N O S P R O F E S O R A ####";
cout<<"\n\t\t#########################";
cout<<"\n\n\n\n";
Штампање на екрану због прегледности

Damnjan Radosavljević, 2009 64


ПОЗИВАЊЕ ФУНКЦИЈА ИЗ КЛАСЕ

ПОЗИВАЊЕ ФУНКЦИЈА:
b.unesiJMBG();
b.unesiIme();
b.Smer();
b.NazivPredmeta();
b.unesiFond(); break;
}
У СЛУЧАЈУ ДА ОДАБЕРЕМО ТАСТЕР 3 ИЗВРШИЋЕ СЕ:
case 3 : {
system("cls"); - чишћење екрана
cout<<"\n\t\t##############################";
cout<<"\n\t\t#### U P I S N O V O G S T U D E N T A ####";
cout<<"\n\t\t##############################";
ШТАМПАЊЕ ЗБОГ ПРЕГЛЕДНОСТИ

Damnjan Radosavljević, 2009 65


ПОЗИВАЊЕ ФУНКЦИЈА ИЗ КЛАСЕ

ПОЗИВАЊЕ ФУНКЦИЈА ИЗ КЛАСЕ:


c.Univerzitet();
c.NazivFakulteta();
c.Smer();
c.unesiJMBG();
c.unesiIme();
c.GodinaPrvogupisa();
c.Finansiranje();
c.BrIndexa();
c.BrojOsvojenihBodova(); break;
}
У СЛУЧАЈУ ДА ОДАБЕРЕМО ТАСТЕР 4 ИЗВРШИЋЕ СЕ:
case 4 : {
system("cls"); - чишћење екрана
cout<<"\n\t\t###########################";
cout<<"\n\t\t#### U P I S U N O V U G O D I N U ####";
cout<<"\n\t\t###########################";
Штампање због прегледности

Damnjan Radosavljević, 2009 66


ПОЗИВАЊЕ ФУНКЦИЈА ИЗ КЛАСЕ

ПОЗИВАЊЕ ФУНКЦИЈА ИЗ КЛАСЕ


d.Godina();
d.unesiIme();
d.BrIndexa();
d.PonovnoUpisivanje();
d.GodinaPrvogupisa(); break;
}
У СЛУЧАЈУ ДА УНЕСЕМО ТАСТЕР 5 ИЗВРШИЋЕ СЕ:
case 5 :
{
system("cls"); - чишћење екрана
cout<<"\n\t\t#########################";
cout<<"\n\t\t#### P R E G L E D P R I J A V A ####";
cout<<"\n\t\t#########################";
cout<<"\n\t\t-------------------------------------------------";

Damnjan Radosavljević, 2009 67


ПОЗИВАЊЕ ФУНКЦИЈА ИЗ КЛАСЕ

ifstream in("Unos_prijava.txt"); - користи се само за улазне датотеке


char c;
while(true)
{
c=in.get();
if(!in)break;
cout.put(c);
}
cout<<"\n\n\n\n\n";
system ("PAUSE");
break;

Damnjan Radosavljević, 2009 68


ПОЗИВАЊЕ ФУНКЦИЈА ИЗ КЛАСЕ

У СЛУЧАЈУ ДА УНЕСЕМО ТАСТЕР 6 ИЗВРШИЋЕ СЕ:


case 6:
{
system("cls");
cout<<"\n\t\t##############";
cout<<"\n\t\t#### A U T O R ####";
cout<<"\n\t\t###############";
cout<<"\n\t\t--------------------------------------------------------------------";
cout<<"\n";
cout<<"\n"<<"\t\t "<<"#########";
cout<<"\n"<<"\t\t "<<"# Prirodno matematicki fakultet K. Mitrovica #";

Damnjan Radosavljević, 2009 69


ПОЗИВАЊЕ ФУНКЦИЈА ИЗ КЛАСЕ

cout<<"\n"<<"\t\t "<<"# rad #";


cout<<"\n"<<"\t\t "<<"# Student: #";
cout<<"\n"<<"\t\t "<<"# Broj indeksa 73 #";
cout<<"\n"<<"\t\t "<<"#########"
}
{
system ("PAUSE");
break;
}
У СЛУЧАЈУ ДА УНЕСЕМО 9 НАПУСТИЋЕМО ПРОГРАМ:
case 9 : break;
А У СЛУЧАЈУ ДА УНЕСЕМО НЕКУ ДРУГУ ВРЕДНОСТ:
default : cout <<"Pogresan unos!"<<endl;
}
}
} – Крај програма.
Damnjan Radosavljević, 2009 70
ТЕСТИРАЊЕ

 СОФТВЕРСКИ ПРОГРАМИ ПОСТОЈЕ У ОДРЕЂЕНИМ ОБЛИЦИМА И


ПИСАНИ СУ НА РАЗЛИЧИТИМ ПРОГРАМСКИМ ЈЕЗИЦИМА. СТОГА
ПОСТОЈЕ РАЗЛИЧИТИ НИВОИТЕСТИРАЊА КОЈИ ЗАВИСЕ ОД
КОДОВА, ПРОГРАМСКИХ ЈЕЗИКА ИТД.
 НА ГОТОВО СВИМ НИВОИМА МОЖЕМО ТЕСТИРАТ
ИНДИВИДУАЛНЕ ЕЛЕМЕНТЕ.
 У ЗАВИСНОСТИ ОД ПРОГРАМСКОГ ЈЕЗИКА КОЈЕ ЈЕ КОРИШЋЕН
ЈЕДИНИЦЕ МОГУ ОДГОВОРИТИ НА ТЕСТ ПРОЦЕДУРУ ИЛИ
МЕТОДУ.
 ФУНКЦИОНАЛНО ТЕСТИРАЊЕ ИМА УЛОГУ ПРАВИЛНОГ
РУКОВАЊА СА СПОЉНИМ ФУНКЦИЈАМА СОФТВЕРА.
 ЊИМЕ ЋЕМО ПРАТИТИ СПОЉАШЊЕ ПОНАШАЊЕ КРОЗ УНОС И
ИЗНОС ПОДАТАКА.
 НАЈПРЕ ЋЕМО ТЕСТИРАТИ ПОЧЕТНИ ИНТЕРФЕЈС ПРОГРАМА.

Damnjan Radosavljević, 2009 71


ТЕСТИРАЊЕ

Почетак рада

Damnjan Radosavljević, 2009 72


ТЕСТИРАЊЕ

Унос пријава

Damnjan Radosavljević, 2009 73


ТЕСТИРАЊЕ

Преглед пријава

Damnjan Radosavljević, 2009 74


ТЕСТИРАЊЕ

Унос професора

Damnjan Radosavljević, 2009 75


ТЕСТИРАЊЕ

Упис новог студента

Damnjan Radosavljević, 2009 76


ТЕСТИРАЊЕ

Упис
Упис уновог студента
нову годину

Damnjan Radosavljević, 2009 77


ЗАКЉУЧАК

 У УСЛОВИМА КОНКУРЕНЦИЈЕ НА ТРЖИШТУ СВАКА ИНОВАЦИЈА ИЛИ ЕФИКАСНОСТ


 МОГУ ПРЕСУДНО УТИЦАТИ НА ПРОБЕДУ У ТРЖИШНОЈ УТАКМИЦИ.
 НАЈВЕЋИ ДОПРИНОС УШТЕДИ ВРЕМЕНА И ЕФИКАСНОСТИ ЈЕДНОГ ПОСЛОВНОГ
ПРОГРАМА ОБЕЗБЕЂУЈЕ РАЗВИЈЕН СОФТВЕР КОЈИ У ПОТПУНОСТИ АУТОМАТИЗУЈЕ
ОДВИЈАЊЕ ПОСЛОВНИХ АКТИВНОСТИ.
 МОДЕЛИРАЊЕ РЕАЛНОГ ПРОГРАМА УЗ ПОМОЋ САВРЕМЕНИХ ТЕХНОЛОГИЈА ИЛИ
ДИЗАЈНИРАЊЕ СИМУЛАЦИОНОГ СОФТВЕРА ПОДРАЗУМЕВА АНАЛИЗУ СТРУКТУРЕ И
ПОНАШАЊА ПОСМАТРАНОГ СИСТЕМА, РЕГИСТРОВАЊЕ СТЕЧЕЧЕНИХ ЗНАЊА ПОМОЋУ
ВЕРБАЛНИХ, ГРАФИЧКИХ, МАТЕМАТИЧКИХ ИЛИ ЛОГИЧКИХ МОДЕЛА И ПРЕТАДАЊЕ ТИХ
МОДЕЛА КОД ОДГОВАРАЈУЋЕГ СОФТВЕРА.
 У СВЕ ТРИ ПОМЕНУТЕ ФАЗЕ, КОЈЕ ПРЕДСТАВЉАЈУ САМО ВРХ ЛЕДЕНОГ БРЕГА,
ПРЕВАЗИЛАЖЕЊЕ КОМПЛЕКСНОСТИ ЈЕ ОСНОВНИ ПРОБЛЕМ. КОЈУ АНАЛИТИЧКУ
ТЕХНИКУ, МОДЕЛЕ И ПРОГРАМИРАЊЕ ИЗАБРАТИ И ДОЋИ ДО ВЕРНОГ МОДЕЛА
РЕАЛНОСТИ КОЈИ ЋЕ ПРИ ТОМ И САМ ИМАТИ СПОСОБНОСТ ПРИРОДНЕ, ТЈ. ЦИКЛИЧНЕ
ИНКРЕМЕНТАЛНЕ ЕВОЛУЦИЈЕ?
 ОДГОВОРЕ НА ОВА ПИТАЊА ПРУЖА ОБЈЕКТНО ОРИЈЕНТИСАНА МЕТОДОЛОГИЈА.

Damnjan Radosavljević, 2009 78


ЗАКЉУЧАК
 ПРИСТУП МОДЕЛИРАЊУ СИСТЕМА ЈЕ НАЛАЖЕЊЕ ЈЕДИНСТВЕНОГ МОДЕЛА ПОДАТАКА.
 ПОДАЦИ СУ ОНО ШТО ЧИНИ ЈЕДАН СОФТВЕР ЈЕДИНСТВЕНИМ, ПА СЕ ЗАТО И КАЖЕ ДА
СЕ ПОДАЦИМА ЈЕДИНСТВЕНО УПРАВЉА ТИМ МОДЕЛОМ.
 МОДЕЛ ПОДАТАКА ТРЕБА ПРЕКО СКУПА ПОДАТАКА И ЊИХОВИХ ВЕЗА ДА ПРЕДСТАВИ
 СТАЊЕ СИСТЕМА У ТРЕНУТКУ ВРЕМЕНА. ТО ЈЕ У СТВАРИ СТРУКТУИРАНИ СКУП
ИНФОРМАЦИЈА О ПРОШЛОСТИ И САДАШЊОСТИ СИСТЕМА, КОЈИ ЈЕ ПОТРЕБАН ДА СЕ
ПОД ДЕЈСТВОМ БУДУЋИХ ПОЗНАТИХ УЛАЗА ОДРЕДЕ БУДУЋИ ИЗЛАЗИ ИЗ СИСТЕМА.
 ПОСТОЈАЊЕ ЈЕДНОГ ДОБРОГ СОФТВЕРА ЈЕ НЕЗАМИСЛИВО БЕЗ ДОБРОГ
 ОРГАНИЗОВАЊА ПОДАТАКА У ЈЕДНУ ЈЕДИНСТВЕНУ ЦЕЛИНУ.
 С++ ЈЕ ПРОГРАМСКИ ЈЕЗИК КОЈИ НАМ И ТЕК КАКО ПОМАЖЕ У РАЗВОЈУ ДРУШТВА И
САВРЕМЕНОЈ ТЕХНОЛОГИЈИ.
 ПОРЕД ДОБРОГ ПОЗНАВАЊА ПРОГРАМСКОГ ЈЕЗИКА ПОТРЕБНО ЈЕ И ДОБРО
ПОЗНАВАЊЕ ЗАХТЕВА ТРЖИШТА И УЗ МАЛО ВЕШТИНЕ ТО СПОЈИТИ У ЈЕДНУ ЦЕЛИНУ
КОЈА ЋЕ ЗАДОВОЉИТИ ПОТРЕБЕ ДАНАШЊЕГ ТРЖИШТА НА НАЈЕФИКАСНИЈИ НАЧИН.
 СОФТВЕР МОРА БИТИ ПОУЗДАН А ТАКОЂЕ И КОМПАТИБИЛАН ШТО ЗНАЧИ ДА ГА
МОЖЕМО ПОВЕЗАТИ СА ДРУГИМ СИСТЕМИМА АКО ЈЕ ТО ПОТРЕБНО ИЛИ ГА
ПРОШИРИТИ НОВИМ САДРЖАЈЕМ ПО ПОТРЕБИ.

Damnjan Radosavljević, 2009 79

You might also like