Pocetak na Dev-C++

Robinzon Kruso

Zainteresovan član
Poruka
301
Kao prvo zahvalio bih se Incu i Null na pomoci oko skidanja ovog kompajlera, juce sam to uradio i uspeo sam da skinem verziju Dev-C++ 4, a peticu nisam mogao da skinem.

Zamolio bih vas sada bih hteo da pocnem. Malo sam zbunjen knjigom koju imam. Juce sam pokusavao da napisem neki kod ali mi nije poslo za rukom....

Da li neko moze da mi napise programcic od pocetka do kraja koji ce da sabira 10 brojeve nekog niza koji se prethodno ubace preko tastature kako bih za pocetak shvatio ovaj programski jezik

Na BASUC-u bi ja to uradio ovako

' Program koji sabira elemente niza A koji se ubacuju sa tastature
C=0
For i = 1 to 10
Print "Ubaci" i". element niza A"
Input A(i)
Next
For i = 1 to 10
C = C + A(i)
Next
Print "Suma Niza A(i) je:" C
End

Da li neko moze da isti ovaj problem prikaze u C++.

Hvala unapred...
 
vrlo prosto...

Kod:
#include <iostream>

using namespace std;

int main(int argc, char *argv[]) {
    int i, C=0, A[10];
    for (i=0; i<10; i++) {
        cout << "Unesi " << (i+1) << ". element niza A: ";
        cin >> A[i];
    }
    for (i=0; i<10; i++) {
        C += A[i];
    }
    cout << "Suma niza A je: " << C << endl;
    return 0;
}

Mada, generalno, kod ovakvog programa se moze odraditi vrlo laka optimizacija:

Kod:
#include <iostream>

using namespace std;

int main(int argc, char *argv[]) {
    int i, C=0, A;
    for (i=0; i<10; i++) {
        cout << "Unesi " << (i+1) << ". broj: ";
        cin >> A;
        C += A;
    }
    cout << "Suma unetih brojeva je: " << C << endl;
    return 0;
}

... moze cak i dodatno da se optimizuje, ali necu ulaziti u detalje... Naravno, sve ovo se moze odraditi na milion nacina, ali eto, ovo je najlaksi koji mi pada na pamet...

Poz.
 
Hvala Inko...

Sto se tice ovog programa uneo sam ga kao takvog i radi pnda sam menja neke parametre itd...ali imam neka pitanja o pocetku konkretno ovog programa i ukoliko neko ima vremena neka kratko odgovor, please....

#include iostream sta ustvari ovo predstavlja ?

using namespace std; Korisnjenje prostora za ime std, sta predstavlja std ?

int main(int argc, char *argv[]) a ovo?

return 0; Gde se to vracamao...

Ukapirao sam da su zagrade { .... } pocetak i kraj neke naredbe ili dela programa....


E da postoji jedan problem, kako da zadrzim kraj programa na ekranu da bih video rezultat sume, jer cim ja ubacim sve brojeve i kliknem enter na kraju se ponovo vratim u deo za pianje programa jer moja aplikacija se iskljuci,,,,


Hvala unapred...

Pozdrav....
 
Robinzon Kruso:
Hvala Inko...

Sto se tice ovog programa uneo sam ga kao takvog i radi pnda sam menja neke parametre itd...ali imam neka pitanja o pocetku konkretno ovog programa i ukoliko neko ima vremena neka kratko odgovor, please....

#include iostream sta ustvari ovo predstavlja ?

using namespace std; Korisnjenje prostora za ime std, sta predstavlja std ?

int main(int argc, char *argv[]) a ovo?

return 0; Gde se to vracamao...

Ukapirao sam da su zagrade { .... } pocetak i kraj neke naredbe ili dela programa....


E da postoji jedan problem, kako da zadrzim kraj programa na ekranu da bih video rezultat sume, jer cim ja ubacim sve brojeve i kliknem enter na kraju se ponovo vratim u deo za pianje programa jer moja aplikacija se iskljuci,,,,


Hvala unapred...

Pozdrav....

Pa nema teorije da te naucim step-by-step C++, jer bi trebalo dosta vremena... Za pocetak kupi neku knjigu...

#include direktive ubacuju odredjene header-e za odredjene funkcije... iostream je skup funkcija za I/O komunikaciju, pa su tako cin i cout funkcije koje isti implementira

std su standardne C++ biblioteke... kako ne bi morao da pises std::cin ili std::cout, ti dodas to kao namespace ispred funkcija...

Posto pravis konzolnu aplikaciju, ne ubacujes winapi headere (windows.h), i ne zoves WinMain, vec osnovnu main() funkciju... int argc i char *argv[] unutar nje definisu unesene parametre sa tastature... argc je broj parametara, a argv je niz sa unesenim parametrima...

Posto je funkcija tipa 'int', a ne void, potreban je return kako bi sve bilo po propisu (mada vecina kompajlera to tolerise)

Sto se 'problema' tice, program nije kriv... Tako reaguje tvoj shell (windows command prompt)... Kad se program izvrsi, on zatvori prozor... Pusti ga direktno iz command prompt-a, i onda ces videti i sta se desilo... Mozes i da napravis pauzu, dok korisnik ne pritisne nesto na tastaturi... samo dodaj: system("PAUSE"); iznad return-a...

Poz.
 
Stvarno sam zahvalan ljudima (programerima) koji odgovaraju i pomazu nama koji manje znamo...

Posto malo po malu ulazim u tajne programiranja u C++. Interesuje me kako se crta tacka na ekranu i jos po nesto o grafici u C++.

Nikako ne mogu da aktiviram program koji bi radio u Windows okruzenju pa bih pitao za pomoc ako neko zna...


Pozdrav i unarede zahvalan.

P.S. Kad namlatim dosta love oduzicu se svakom prikladnim poklonom...
 
Za windows programe, moras koristiti windows.h header, tj. winapi funkcije.

Evo ti osnovne 'skoljke' za pravljenje windows programa:

Kod:
#include <windows.h>

LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);

char szClassName[ ] = "WinApp";

int WINAPI WinMain (HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPSTR lpszArgument, int nFunsterStil) {
    HWND hwnd;
    MSG messages;
    WNDCLASSEX wincl;

    wincl.hInstance = hThisInstance;
    wincl.lpszClassName = szClassName;
    wincl.lpfnWndProc = WindowProcedure;
    wincl.style = CS_DBLCLKS;
    wincl.cbSize = sizeof (WNDCLASSEX);

    wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);
    wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
    wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
    wincl.lpszMenuName = NULL;
    wincl.cbClsExtra = 0;
    wincl.cbWndExtra = 0;
    wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;

    if (!RegisterClassEx (&wincl)) return 0;

    hwnd = CreateWindowEx(0, szClassName, "Test Window", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 640, 480, HWND_DESKTOP, NULL, hThisInstance, NULL);

    ShowWindow (hwnd, nFunsterStil);

    while (GetMessage (&messages, NULL, 0, 0)) {
        TranslateMessage(&messages);
        DispatchMessage(&messages);
    }

    return messages.wParam;
}

LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) {
    switch (message) {
        case WM_DESTROY:
            PostQuitMessage (0);
            break;
        default:
            return DefWindowProc (hwnd, message, wParam, lParam);
    }
    return 0;
}

e, sad, da bi razumeo sta svaka funkcija radi, moras da naucis winapi, tj. njegove osnove... Skini sa MSDN-a Winapi Reference, pomoci ce ti itekako...

Sto se crtanja tice, imas mnogo biblioteka za to, a nisi naveo gde hoces da crtas... Po konzoli ili u winapi-ju... Sto se konzole tice (do VGA rezolucije), proveri funkcije koje ima biblioteka graphics.h, sto se crtanja po Windows-u tice, imas i funkcije u winapi-ju, a imas i mnoge dodatne biblioteke... Prava poslastica su 3d biblioteke, poput OpenGL-a i DirectX...

Srecno...
 
ne mogu ti dati konkretan odgovor jer sam i ja pocetnok za C++ kao i ti

ali evo ti neki savet

imas u folderu gde si instalirao dev C++ folder examples i tu su ti neki primeri
gledaj njih i proucavaj code

zatim slucajno sam kliknuo na about da vidim koja mi je verzija programa i tamo sam nasao u prozoru koji se otvorio par satjova gde je forum. mailing list i resources for dev c++
 
kreirajn novi projekat windows aplikaciju
napravi novi folder gde ces je cuvati!
idu tri fajla
main.cpp
main.h
main.rc

kompajliraj, startuj program i proucavaj ih posle!

main.cpp:
----------------------------------------
#include <windows.h>
#include "Main.h"

static char g_szClassName[] = "MyWindowClass";
static HINSTANCE g_hInst = NULL;

#define IDC_MAIN_TEXT 1001

BOOL LoadFile(HWND hEdit, LPSTR pszFileName)
{
HANDLE hFile;
BOOL bSuccess = FALSE;

hFile = CreateFile(pszFileName, GENERIC_READ, FILE_SHARE_READ, NULL,
OPEN_EXISTING, 0, 0);
if(hFile != INVALID_HANDLE_VALUE)
{
DWORD dwFileSize;
dwFileSize = GetFileSize(hFile, NULL);
if(dwFileSize != 0xFFFFFFFF)
{
LPSTR pszFileText;
pszFileText = (LPSTR)GlobalAlloc(GPTR, dwFileSize + 1);
if(pszFileText != NULL)
{
DWORD dwRead;
if(ReadFile(hFile, pszFileText, dwFileSize, &dwRead, NULL))
{
pszFileText[dwFileSize] = 0; // Null terminator
if(SetWindowText(hEdit, pszFileText))
bSuccess = TRUE; // It worked!
}
GlobalFree(pszFileText);
}
}
CloseHandle(hFile);
}
return bSuccess;
}

BOOL SaveFile(HWND hEdit, LPSTR pszFileName)
{
HANDLE hFile;
BOOL bSuccess = FALSE;

hFile = CreateFile(pszFileName, GENERIC_WRITE, 0, 0,
CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);
if(hFile != INVALID_HANDLE_VALUE)
{
DWORD dwTextLength;
dwTextLength = GetWindowTextLength(hEdit);
if(dwTextLength > 0)// No need to bother if there's no text.
{
LPSTR pszText;
pszText = (LPSTR)GlobalAlloc(GPTR, dwTextLength + 1);
if(pszText != NULL)
{
if(GetWindowText(hEdit, pszText, dwTextLength + 1))
{
DWORD dwWritten;
if(WriteFile(hFile, pszText, dwTextLength, &dwWritten, NULL))
bSuccess = TRUE;
}
GlobalFree(pszText);
}
}
CloseHandle(hFile);
}
return bSuccess;
}

BOOL DoFileOpenSave(HWND hwnd, BOOL bSave)
{
OPENFILENAME ofn;
char szFileName[MAX_PATH];

ZeroMemory(&ofn, sizeof(ofn));
szFileName[0] = 0;

ofn.lStructSize = sizeof(ofn);
ofn.hwndOwner = hwnd;
ofn.lpstrFilter = "Text Files (*.txt)\0*.txt\0All Files (*.*)\0*.*\0\0";
ofn.lpstrFile = szFileName;
ofn.nMaxFile = MAX_PATH;
ofn.lpstrDefExt = "txt";

if(bSave)
{
ofn.Flags = OFN_EXPLORER | OFN_PATHMUSTEXIST | OFN_HIDEREADONLY |
OFN_OVERWRITEPROMPT;

if(GetSaveFileName(&ofn))
{
if(!SaveFile(GetDlgItem(hwnd, IDC_MAIN_TEXT), szFileName))
{
MessageBox(hwnd, "Save file failed.", "Error",
MB_OK | MB_ICONEXCLAMATION);
return FALSE;
}
}
}
else
{
ofn.Flags = OFN_EXPLORER | OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;
if(GetOpenFileName(&ofn))
{
if(!LoadFile(GetDlgItem(hwnd, IDC_MAIN_TEXT), szFileName))
{
MessageBox(hwnd, "Load of file failed.", "Error",
MB_OK | MB_ICONEXCLAMATION);
return FALSE;
}
}
}
return TRUE;
}

LRESULT CALLBACK WndProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam)
{
switch(Message)
{
case WM_CREATE:
CreateWindow("EDIT", "",
WS_CHILD | WS_VISIBLE | WS_HSCROLL | WS_VSCROLL | ES_MULTILINE |
ES_WANTRETURN,
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
hwnd, (HMENU)IDC_MAIN_TEXT, g_hInst, NULL);

SendDlgItemMessage(hwnd, IDC_MAIN_TEXT, WM_SETFONT,
(WPARAM)GetStockObject(DEFAULT_GUI_FONT), MAKELPARAM(TRUE, 0));
break;
case WM_SIZE:
if(wParam != SIZE_MINIMIZED)
MoveWindow(GetDlgItem(hwnd, IDC_MAIN_TEXT), 0, 0, LOWORD(lParam),
HIWORD(lParam), TRUE);
break;
case WM_SETFOCUS:
SetFocus(GetDlgItem(hwnd, IDC_MAIN_TEXT));
break;
case WM_COMMAND:
switch(LOWORD(wParam))
{
case CM_FILE_OPEN:
DoFileOpenSave(hwnd, FALSE);
break;
case CM_FILE_SAVEAS:
DoFileOpenSave(hwnd, TRUE);
break;
case CM_FILE_EXIT:
PostMessage(hwnd, WM_CLOSE, 0, 0);
break;
case CM_ABOUT:
MessageBox (NULL, "File Editor for Windows !\n Using the Win32 API" , "About...", 0);
}
break;
case WM_CLOSE:
DestroyWindow(hwnd);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd, Message, wParam, lParam);
}
return 0;
}


int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
{
WNDCLASSEX WndClass;
HWND hwnd;
MSG Msg;

g_hInst = hInstance;

WndClass.cbSize = sizeof(WNDCLASSEX);
WndClass.style = 0;
WndClass.lpfnWndProc = WndProc;
WndClass.cbClsExtra = 0;
WndClass.cbWndExtra = 0;
WndClass.hInstance = g_hInst;
WndClass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
WndClass.hCursor = LoadCursor(NULL, IDC_ARROW);
WndClass.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
WndClass.lpszMenuName = "MAINMENU";
WndClass.lpszClassName = g_szClassName;
WndClass.hIconSm = LoadIcon(NULL, IDI_APPLICATION);

if(!RegisterClassEx(&WndClass))
{
MessageBox(0, "Window Registration Failed!", "Error!",
MB_ICONEXCLAMATION | MB_OK | MB_SYSTEMMODAL);
return 0;
}

hwnd = CreateWindowEx(
WS_EX_CLIENTEDGE,
g_szClassName,
"File Editor Example Program",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT, 320, 240,
NULL, NULL, g_hInst, NULL);

if(hwnd == NULL)
{
MessageBox(0, "Window Creation Failed!", "Error!",
MB_ICONEXCLAMATION | MB_OK | MB_SYSTEMMODAL);
return 0;
}

ShowWindow(hwnd, nCmdShow);
UpdateWindow(hwnd);

while(GetMessage(&Msg, NULL, 0, 0))
{
TranslateMessage(&Msg);
DispatchMessage(&Msg);
}
return Msg.wParam;
}
//kraj od main.cpp

------------------
main.h
------------------
#define CM_FILE_SAVEAS 9072
#define CM_FILE_EXIT 9071
#define CM_FILE_OPEN 9070
#define CM_ABOUT 9069

------------------
main.rc
------------------
#include "main.h"

MAINMENU MENU
{
POPUP "&File"
{
MENUITEM "&Open...", CM_FILE_OPEN
MENUITEM "Save &As...", CM_FILE_SAVEAS
MENUITEM SEPARATOR
MENUITEM "E&xit", CM_FILE_EXIT
}

POPUP "&Help"
{
MENUITEM "&About", CM_ABOUT
}
}
 

Back
Top