C/C++

back_rest

ex mod coder
Член од
19 јули 2006
Мислења
1.590
Поени од реакции
106
Мене на факс прво шо почнаа да ме учат беше структурно програмирање Ц...немаше ексел формули, аксес извештаи ниту па паскал програмчиња (до душа у средно нешо чепкав ама ептен малце). Мислам дека ако сакаш да научиш и имаш желба за програмирање можеш да почнеш со Ц/Ц++....:toe:

п.с. Јас сум од оние rookie програмерчиња шо ги спомна така да може и грешам :)
Јас сеуште стојам на моето мислење дека C/C++ не е добар старт за програмирање. Прв чекор е да го напреднеш работењето со компјутерот. Второ е да почнеш да го користиш компјутерот за логички проблеми а со тоа и да набилдаш логика. Понатака можеш да почнеш со некој лесен јазик како бејзик или паскал. Дури после може да стане муабет за Ц.

Во моите училишни денови, C++ ми беше прилично тежок за разбирање со оглед на моите ефтини познавања на програмирањето (Бејзик). Ми требаше време додека го разработив ВБ-то па почнав да ги укапирам работите кај C++.
Друг пат повеќе, сега идам на хепи брдеј партито. Чирс.
 

Dimitarc

Мрчатор
Член од
30 јануари 2005
Мислења
2.639
Поени од реакции
19
А едно 2000 студенти и едно 20 професори што почнуваат со Ц се глупи. ОК.
 

back_rest

ex mod coder
Член од
19 јули 2006
Мислења
1.590
Поени од реакции
106
А едно 2000 студенти и едно 20 професори што почнуваат со Ц се глупи. ОК.
Nope. 99% од студентите доаѓат на факс со веќе набилдан паскал. Оние коишто доаѓаат со нула познавање од програмирањето, заглавуваат или шибаат на друг смер (барем оние кои јас ги познавам).
Има и исклучоци, пример еден мој колега уште од средношколските денови пука на C++, па сега ме шиша.

Ајде сега ти се замисли како ептен почетник во програмирање и ти е дадена задача да направиш програма која ќе создаде и испечати матрица со произволни (ама теоретски неограничени) димензии, со елементи производ на бројот на редот и бројот на колоната.

Еве го решението во три јазика: Basic, Java и C++.
Просуди самиот каде е полесно

Basic:
Код:
Dim pole() As Integer
Print "Vnesi broj na redovi: "
Input dimX
Print "Vnesi broj na koloni: "
Input dimY
ReDim pole(dimX, dimY) As Integer
For I=1 To dimX
    For J=1 to dimY
        pole(I,J) = I*J
    Next J
Next I

'pecatenje
For I=1 To dimX
    For J=1 to dimY
        Print pole(I,J);" ";
    Next J
    Print ""
Next I
End
Java:
Код:
public static void main(String[] args) {
        // TODO Auto-generated method stub
        int dimX, dimY, pole[][];
        dimX = Integer.parseInt(JOptionPane.showInputDialog("Vnesi broj na redovi"));
        dimY = Integer.parseInt(JOptionPane.showInputDialog("Vnesi broj na koloni"));
        pole = new int[dimX][dimY];
        for (int i=0; i<dimX; i++)
            for (int j=0; j<dimY; j++)
                pole[i][j] = (i+1) * (j+1);
        
        //pecatanje
        for (int i=0; i<dimX; i++)
        {
            for (int j=0; j<dimY; j++)
                System.out.print(pole[i][j]+" ");
            System.out.println("");
        }
        
    }
C++, прво решение, онака како што ТРЕБА да биде
Код:
#include <iostream>
#include <vector>
using namespace std;

int main(int arg, char *agrv[])
{
    int dimX, dimY;
    cout <<"Vnesete broj na redovi: ";cin >>dimX;
    cout <<"Vnesete broj na koloni: ";cin >>dimY;
    vector < vector <int> > pole;
    for (int i=0; i<dimX; i++)
    {
        vector <int> vnPole;
        for (int j=0; j<dimY; j++)
            vnPole.push_back((i+1)*(j+1));
        pole.push_back(vnPole);
    }
    
    //pecatenje na gotovata matrica
    for(int i=0; i<dimX; i++)
    {
        for (int j=0; j<dimY;j++)
            cout <<pole[i][j]<<' ';
        cout <<endl;
    }
    system("PAUSE");
    return 0;
}
C++ второ решение. Пократко, ама грдо стои.
Код:
#include <iostream>
#include <vector>
using namespace std;

inline int getInd(int x, int y, int maxY)
{
    return x * maxY + y;
}

int main(int arg, char *agrv[])
{
    int dimX, dimY;
    cout <<"Vnesete broj na redovi: ";cin >>dimX;
    cout <<"Vnesete broj na koloni: ";cin >>dimY;
    int *pole = new int[dimX*dimY];
    
    for (int i=0; i<dimX; i++)
        for (int j=0; j<dimY; j++)
            pole[getInd(i,j,dimY)] = (i+1) * (j+1);
    
    //pecatenje na gotovata matrica
    for(int i=0; i<dimX; i++)
    {
        for (int j=0; j<dimY;j++)
            cout <<pole[getInd(i,j,dimY)]<<' ';
        cout <<endl;
    }
    system("PAUSE");
    return 0;
}
C++ е замислен и остварен како јазик близок со асемблерот. Работи на ниско ниво, може директно да комуницира со меморијата и како последица на тоа пројавува и одлични перформанси. Кај C/C++ се појавува и терминот странички ефекти што значи дека треба да се биде исклучително внимателен при програмирањето бидејќи може да ти настанат грешки кои директно нема да бидат предизвикани од ништо.
Тежината на програмските јазици иде обратно пропорционално од нивното ниво. C/C++ може се на најниско ниво од вишите програмски јазици, па според тоа не ни очекувајте дека ќе бидат лесни за учење.
 

Dzish

unlike any other...
Член од
15 февруари 2007
Мислења
13.994
Поени од реакции
2.687
А едно 2000 студенти и едно 20 професори што почнуваат со Ц се глупи. ОК.
Морам да те цитирам... Мислиш дека се што се учи на факс треба да се учи? Има еден куп работи што ги учиме на памет а ако некогаш ти притребаат (многу вероватно е дека никогаш нема ни да ти притребаат) ке си ги прочиташ од книга...
 

Dimitarc

Мрчатор
Член од
30 јануари 2005
Мислења
2.639
Поени од реакции
19
баш затоа сите професори ти дозволуваат литература на колоквиум.
 

MkForces

тантара пантара
Член од
25 јануари 2007
Мислења
600
Поени од реакции
19
Nope. 99% од студентите доаѓат на факс со веќе набилдан паскал. Оние коишто доаѓаат со нула познавање од програмирањето, заглавуваат или шибаат на друг смер (барем оние кои јас ги познавам).
Има и исклучоци, пример еден мој колега уште од средношколските денови пука на C++, па сега ме шиша.

Ајде сега ти се замисли како ептен почетник во програмирање и ти е дадена задача да направиш програма која ќе создаде и испечати матрица со произволни (ама теоретски неограничени) димензии, со елементи производ на бројот на редот и бројот на колоната.

Еве го решението во три јазика: Basic, Java и C++.
Просуди самиот каде е полесно

C++, прво решение, онака како што ТРЕБА да биде
Код:
#include <iostream>
#include <vector>
using namespace std;

int main(int arg, char *agrv[])
{
    int dimX, dimY;
    cout <<"Vnesete broj na redovi: ";cin >>dimX;
    cout <<"Vnesete broj na koloni: ";cin >>dimY;
    vector < vector <int> > pole;
    for (int i=0; i<dimX; i++)
    {
        vector <int> vnPole;
        for (int j=0; j<dimY; j++)
            vnPole.push_back((i+1)*(j+1));
        pole.push_back(vnPole);
    }
    
    //pecatenje na gotovata matrica
    for(int i=0; i<dimX; i++)
    {
        for (int j=0; j<dimY;j++)
            cout <<pole[i][j]<<' ';
        cout <<endl;
    }
    system("PAUSE");
    return 0;
}
C++ второ решение. Пократко, ама грдо стои.
Код:
#include <iostream>
#include <vector>
using namespace std;

inline int getInd(int x, int y, int maxY)
{
    return x * maxY + y;
}

int main(int arg, char *agrv[])
{
    int dimX, dimY;
    cout <<"Vnesete broj na redovi: ";cin >>dimX;
    cout <<"Vnesete broj na koloni: ";cin >>dimY;
    int *pole = new int[dimX*dimY];
    
    for (int i=0; i<dimX; i++)
        for (int j=0; j<dimY; j++)
            pole[getInd(i,j,dimY)] = (i+1) * (j+1);
    
    //pecatenje na gotovata matrica
    for(int i=0; i<dimX; i++)
    {
        for (int j=0; j<dimY;j++)
            cout <<pole[getInd(i,j,dimY)]<<' ';
        cout <<endl;
    }
    system("PAUSE");
    return 0;
}
C++ е замислен и остварен како јазик близок со асемблерот. Работи на ниско ниво, може директно да комуницира со меморијата и како последица на тоа пројавува и одлични перформанси. Кај C/C++ се појавува и терминот странички ефекти што значи дека треба да се биде исклучително внимателен при програмирањето бидејќи може да ти настанат грешки кои директно нема да бидат предизвикани од ништо.
Тежината на програмските јазици иде обратно пропорционално од нивното ниво. C/C++ може се на најниско ниво од вишите програмски јазици, па според тоа не ни очекувајте дека ќе бидат лесни за учење.
Немам ништо против, али мислам дека не мора нон стоп да им викаш на луѓето да не почнуваат со Ц/Ц++, остај ги бе друже, сами ќе си заклучат со време дали се способни за програмирање во тие јазици или не се... Или тие пак што се курчат дека се големи програмери, се ќе се види ко ќе седнат на работно место... :) Башка, некој со помала самодоверба коа ќе ги чита твојте постој ќе се откажи скрос од програмирањето... :)
Еве, јас сум почетник во програмирањето со Ц++ (во средно немам учено програмирање), па сепак не сум од тие што се откажале од смерот...
И мислам дека можи попросто да се реши то со матрицата погоре... Некој што не разбира ич програмирање ќе се уплаши од тој хедерот вектор и тие пуш-бек функциите, па еве да видат луѓето дека решението во C++ не е толку страшно како што изгледа :))

Код:
#include <iostream>

using namespace std;

int main()
{
    int x,y;
    cout << "Vnesi Broj na redovi: ";
    cin >> x;
    cout << "Vnesi broj na koloni: ";
    cin >> y;
    int niza[x][y];
    for(int i=0; i<x; i++)
    {
            for(int j=0; j<y; j++)
            niza[i][j]=(i+1)*(j+1);
    }
    for(int i=0; i<x; i++)
    {
            for(int j=0; j<y; j++)
            cout << niza[i][j] << " ";
            cout << endl;
    }
    system("PAUSE");
    return 0;
}
Можда не сум достоен да кажувам јас дали е тежок C++ ( и логиката на размислувањето во програмирањето ) или не е, али ако сакаш да го научиш нештото, ако имаш воља и трпение, ќе го научиш...
 
Член од
22 февруари 2007
Мислења
7.076
Поени од реакции
1.940
Можда не сум достоен да кажувам јас дали е тежок C++ ( и логиката на размислувањето во програмирањето ) или не е, али ако сакаш да го научиш нештото, ако имаш воља и трпение, ќе го научиш...
Ај вака да бидам на страна на двајцата малку можи:
1. Ц е садистичкималку за почетници,амасе сложвамако сакаш данаучиш како функционираат работите добро е да го учиш Ц прв.
2. Би додал мал вовед Паскал колку за да научиш да склопваш програми. Како се извршва кодот, шо е циклус, шо е услов , шо е функција и слично. Значи без некои поголеми комплицирања.

Значи веднаш штом ќе научиш да ги користиш овие работи скокај на Ц и копај.
 

back_rest

ex mod coder
Член од
19 јули 2006
Мислења
1.590
Поени од реакции
106
Немам ништо против, али мислам дека не мора нон стоп да им викаш на луѓето да не почнуваат со Ц/Ц++, остај ги бе друже, сами ќе си заклучат со време дали се способни за програмирање во тие јазици или не се... Или тие пак што се курчат дека се големи програмери, се ќе се види ко ќе седнат на работно место... :) Башка, некој со помала самодоверба коа ќе ги чита твојте постој ќе се откажи скрос од програмирањето... :)
Фала богу не ставам некој на клада ако почне со C++. Едноставно сакам да споделам искуство и да дадам совет. Малку поригорозно, признавам. Исфрустриран сум од некои од оние програмери за кои и ти велиш дека само се курчат а уствари појма немат. :toe:

И мислам дека можи попросто да се реши то со матрицата погоре... Некој што не разбира ич програмирање ќе се уплаши од тој хедерот вектор и тие пуш-бек функциите, па еве да видат луѓето дека решението во C++ не е толку страшно како што изгледа :))
:nenene: Ова:
Код:
int niza[x][y];
не работи кај сите компајлери и е главна причина што го избрав токму овој пример. Твојот код работи на Dev-C++, ама на VC++ 6 не. ANSI C и C++ не подржаваат повеќедимензионални динамични полиња. Дозволена им е динамичност само во 1 димензија.
Сепак супер ќе ти речам, се гледа дека имаш познавања и сакаш да направиш поента. Продолжи така и ќе те проверам на некоја поасална тема. :salut:
 

MkForces

тантара пантара
Член од
25 јануари 2007
Мислења
600
Поени од реакции
19
Види види, интересна работа... Не сум знаел за то со динамичните полиња... Фала многу за информацијата :). Баш ми е ќеф ко ќе учам од поискусни од мене...
А за ова со "програмерите" , мислам дека не е само со нив случајот... Луѓе од тој тип има во секоја сфера од животот, кои се прават дека знаат нешто, а уствари не знаат шо збораат... И јас така порано се нервирав и се расправав со такви луѓе ( за други области од животот ), ама не видов некоја поента во то, па оттогаш ги игнорирам...
 

Alien®

Finally founded...in love...
Член од
3 февруари 2008
Мислења
162
Поени од реакции
5
Ме интересира како можам да вметнам кирилична подршка во C. Може ли некој да ми помогне?
 

back_rest

ex mod coder
Член од
19 јули 2006
Мислења
1.590
Поени од реакции
106
Ме интересира како можам да вметнам кирилична подршка во C. Може ли некој да ми помогне?
ANSI C? Конзолна апликација? DOS?
Допрецизирај се.
Знам еднаш успеав да направам конзолна апикација со кирилична подршка под VC++.NET 2005 под Windows XP. Само дали користев нешто посебно или онака го испукав, не се сеќавам.
Ако ти треба тоа кажи, па ќе видиме што ќе направавиме.
 

back_rest

ex mod coder
Член од
19 јули 2006
Мислења
1.590
Поени од реакции
106
Ептен е трики ова. Ако добро ми држи сеќавањето мислам дека програмирањето идеше со впишување на апла карактери со кирилична подршка, но финтата е што при покренувањето на системот имаше две наредби за подесување на codepage. Овие се независни од програмата.

За наредбите и објаснување тука.
Она што ти треба:
MODE CON[:] CODEPAGE PREPARE ((nnn) filename)
Prepare codepage nnn from the specified file.
The format of the files are .cpi and they are usually stored in C:\FDOS\CPI.
For instance, codepage 860 is in EGA9.CPI. So you might use:
MODE CON: CODEPAGE PREPARE ((860) c:\fdos\cpi\ega9.cpi).
See the codepage information pack for information
about the available codepages and cpi files.

MODE CON[:] CODEPAGE SELECT=nnn
Activate codepage nnn, which must have been previously prepared with
PREPARE.

За кириличен codepage е 1251 под windows, а за DOS, не сум сигурен ама мислам дека е 855.

Ова ти е упатство, е сега како конкретно, гуглај, барај и пробувај.

off-topic: Абе, има некој од постарата генарација програмери на форумов?
 

DANTE

Gym instructor.
Член од
22 март 2006
Мислења
1.318
Поени од реакции
366
Е вака сеа... го читам ова и онака си се чудам што пишувате :toe::pos2:. Може ли малце да идеме од нулата па нагоре пошто вака само ме збунува. Како прво може ли да ми кажете кој програми треба да ги побарам за да можам да праксирам кодови ? Второ да ми дадете некој команди и трето да ми дадете некој пример да се обидам да го направам... пошто вака не иде. Поздрав и фала :helou:
 

back_rest

ex mod coder
Член од
19 јули 2006
Мислења
1.590
Поени од реакции
106
Е вака сеа... го читам ова и онака си се чудам што пишувате :toe::pos2:. Може ли малце да идеме од нулата па нагоре пошто вака само ме збунува. Како прво може ли да ми кажете кој програми треба да ги побарам за да можам да праксирам кодови ? Второ да ми дадете некој команди и трето да ми дадете некој пример да се обидам да го направам... пошто вака не иде. Поздрав и фала :helou:
Има тема за ова, само треба време да се пополни.
 

Kajgana Shop

На врв Bottom