Droga by zostać programistą

0

Chciałbym zadać kilka pytań dotyczących drogi jaką muszę przejść, by zostać programistą z zawodu. Pytania kolejne będę zadawał gdy uzyskam wyczerpującą odpowiedź na poprzednie.

Najpierw trochę o mnie:
Mam 18 lat i jestem uczniem technikum informatycznego na roku 3. Wiedzę o informatyce jaką uzyskałem dzięki szkole mogę ocenić na ŻADNĄ. Zaczynam teraz 3 klasę a w szkole nie dowiedziałem się niczego, dlatego mam spore obawy dot. mojej przyszłości informatyka, jak i zbliżającego się egzaminu zawodowego. W domu postanowiłem uczyć się programowania ponieważ bardzo mnie to interesuję. Poświęciłem rok na naukę Pascala, po czym przeszedłem do C++ i uczę się go już parę miesięcy. Chciał bym zostać programistą z zawodu, ale sam nie wiem na czym ta praca polega, i co trzeba zrobić by nim zostać.

Moim pierwszym pytaniem zatem jest:
Jakie przedmioty na maturze trzeba zdawać by dostać się na studia informatyczne. Jakie wyniki z nich uzyskać, i czy na takie studia trudno się dostać. Czy potrzebna jest matura z informatyki jeśli zdam egzamin zawodowy ? Oraz czy istnieje taki typ studiów konkretnie skierowany na programowanie ?

0

Chciałbym zadać kilka pytań dotyczących drogi jaką muszę przejść, by zostać programistą z zawodu

droga ta jest długa. powodzenia, wędrowcze.

Jakie przedmioty na maturze trzeba zdawać by dostać się na studia informatyczne

zależnie od uczelni i kierunku. ja zdawałem samą matematykę.

Jakie wyniki z nich uzyskać, i czy na takie studia trudno się dostać

patrz wyżej. matmę rozsz. zdałem słabo, na 56% ale się na UJ dostałem :P

Czy potrzebna jest matura z informatyki jeśli zdam egzamin zawodowy

zależy do czego. na niektórych uczelniach nie jest wymagane zdawanie matury z informatyki. a w niektórych miejscach pracy nie trzeba mieć studiów. można pracować z tytułem technika lub bez. liczy się wiedza.

Oraz czy istnieje taki typ studiów konkretnie skierowany na programowanie ?

Na studiach wybierasz sobie specjalizację. tu również jest to zależne od uczelni i kierunku. jednak musisz być świadom że większość roboty musisz włożyć sam, po godzinach.

Chciał bym zostać programistą z zawodu, ale sam nie wiem na czym ta praca polega, i co trzeba zrobić by nim zostać.

głównie na pisaniu, utrzymywaniu kodu i rozwiązywaniu problemów. aby zostać programistą, należy odpowiedzieć na ogłoszenie (ofertę pracy) lub poczekać aż praca znajdzie ciebie (dla bardziej ambitnych :P )

0

A czy trudno jest się dostać do jakiejś pracy będąc programistą, czy raczej rynek jest przepełniony.
Oraz czy istnieje prawdopodobieństwo że zostanę bezrobotnym ?

0

A czy trudno jest się dostać do jakiejś pracy będąc programistą, czy raczej rynek jest przepełniony.

Teraz nie jest. Dla dobrych programistow zawsze będzie praca, chyba że nie będzie prądu na świecie.

Oraz czy istnieje prawdopodobieństwo że zostanę bezrobotnym ?

Tak.

0

Z ciekawości. Ja rzucę szybkim pytaniem a raczej prośbą. Mógłbyś pokazać jakąś swoją pracę w C++? Lub jeśli stwierdzisz, że nie masz nic specjalnego to wystarczy zwykły przykład kodu, niekoniecznie nawet pełnego programu. Powiedzmy ok 300 linii. Chciałbym zorientować się jaki poziom prezentuje osoba która chce zostać programistą i jest na takim etapie.

0

Napisałem to miesiąc temu, potem wyjechałem inie programowałem z powodu braku komputera. Program mały i trochę głupi, jest to taki generator mapy w konsoli. Nie mam nic innego, pisałem by poćwiczyć klasy. Moi rówieśnicy z klasy by czegoś takiego nie napisali, na 20 parę osób tylko 5 może interesuje się programowaniem, z czego 1 uczy się już od gimnazjum i dała by rade. Nie napisali by z takiego powodu, ze nie chcą zrozumieć programowania, oraz szkolny program 1 roku dociera tylko do tworzenia własnych typów w Pascalu.

#include <iostream>
#include <cstdlib>
#include <ctime>
#include<windows.h>

using namespace std;

class CObiekty
{
public:
int kolizja;
char znak;
};

////////////////////////////////////////////////////////////////////////////////////
int random(int nMin, int nMax);
int textbackgroundcolor(int kolor);
CObiekty generator(CObiekty pole[]);
CObiekty postac(CObiekty pole[]);
////////////////////////////////////////////////////////////////////////////////////

int main()
{

CObiekty pole[9000];
generator(pole);
postac(pole);

};

int random(int nMin, int nMax)
{
return rand() % (nMax - nMin +1) + nMin;
};

int textbackgroundcolor(int kolor)
{
HANDLE uchwyt;
uchwyt = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(uchwyt,kolor);
};

CObiekty generator(CObiekty pole[])
{
int random(int nMin, int nMax);
int textbackgroundcolor(int kolor);
int licznik,pomocnicza;

srand (static_cast<unsigned int="int"> (time(NULL)));

for (licznik = 0; licznik <= 8999; licznik++)
{pomocnicza = random(0,100);

if (pomocnicza <= 30)
{
pole[licznik].kolizja = 1;
pole[licznik].znak = 'T';
textbackgroundcolor(2);
cout << pole[licznik].znak;
}

if (pomocnicza <=50 && pomocnicza >= 31)
{
pole[licznik].kolizja = 1;
pole[licznik].znak = 'o';
textbackgroundcolor(6);
cout << pole[licznik].znak;
}

if (pomocnicza >50)
{
pole[licznik].kolizja = 0;
pole[licznik].znak = ' ';
cout << pole[licznik].znak;
}
}
};

CObiekty postac(CObiekty pole[])
{
pole[5000].znak = '@';
system("cls");
cout << pole[5000].znak;
generator(pole);
};

0

Droga do bycia programistą jest kręta i koszmarna, bo wiedzie przez fora wypełnione odludkami :)

Program nawet ciekawy - nie widziałem rysowania na konsoli pod Windows...

Kilka uwag:

  • (prawdopodobnie) masz błąd w gałęzi "(pomocnicza >50)" - dla pustego miejsca nie ustawiasz koloru, czyli puste przestrzenie są mazane tym co było ostatnio
  • czy na pewno w funkcji generator() pierwsze 2 linijki są potrzebne?
  • nie nazywaj klasy w liczbie mnogiej jeśli nie jest kontenerem, ale nawet wtedy to słabe: CObiekty - zamień na CObiekt
  • staraj się używać języka angielskiego w kodzie - w programowaniu to konieczność (można nie umieć całkować, ale angielski trzeba znać)
  • jeśli musisz stosować tablice w C++ (lepiej std::vector) to zawsze podawaj ich zakres, czyli:
    zamiast:
CObiekty generator(CObiekty pole[])
{
//....
for (licznik = 0; licznik <= 8999; licznik++)

daj:

CObiekty generator(CObiekty pole[], int liczba_pol)
{
//....
for (licznik = 0; licznik < liczba_pol; licznik++)
  • używaj stałych, czyli:
    zamiast:
CObiekty pole[9000];
generator(pole);

daj:

const size_t ROZMIAR_POLA = 9000;
CObiekty pole[ROZMIAR_POLA];
generator(pole, ROZMIAR_POLA); // patrz wyżej

zamiast:

CObiekty generator(CObiekty pole[])
{

//...

if (pomocnicza <= 30)
{
    pole[licznik].kolizja = 1;
    pole[licznik].znak = 'T';
    textbackgroundcolor(2);
    cout << pole[licznik].znak;
}

daj:

CObiekty generator(CObiekty pole[])
{
const int LEVEL_TREE = 30;
const int COL_MARK = 1;
const char MAP_CHAR_TREE = 'T';
const int MAP_COLOR_TREE = 2;

//...

if (pomocnicza <= LEVEL_TREE) // o ile 'T' oznacza drzewo (ang. tree)
{
    pole[licznik].kolizja = COL_MARK; 
    pole[licznik].znak = MAP_CHAR_TREE;
    textbackgroundcolor(MAP_COLOR_TREE);
    cout << pole[licznik].znak;
}
0

Dziękuję za te kilka rad, z pewnością się przydadzą, w szczególności ze z klasami mam do czynienia od niedawna.

0

CO do tego kodu to wbij sobie do głowy zasadę DRY - Don't repeat yourself! To:

pole[licznik].kolizja = 1;
pole[licznik].znak = 'T';
textbackgroundcolor(2);
cout << pole[licznik].znak;

powinno wylądować w nowej funkcji, a nie zostać skopiowane kilka razy. Poza tym nazwanie zmiennej "pomocnicza'" to terroryzm.

0

Nazwa zmiennej "pomocnicza" wziąłem od mojego nauczyciela programowania, więc wydawało mi się to normalne. Co w tym jest złego i jak inaczej ją nazwać ?

0
Image napisał(a):

Nazwa zmiennej "pomocnicza" wziąłem od mojego nauczyciela programowania, więc wydawało mi się to normalne. Co w tym jest złego i jak inaczej ją nazwać ?

Takie nazwy stosuje się właściwie tylko chyba w jednym przypadku - gdy implementujesz zamianę wartości (swap).
W innych przypadkach zmienna ma jakieś znaczenie - i to znaczenie trzeba uwzględnić w nazwie zmiennej.

0

Po pierwsze - w języku angielskim, a po drugie tak, by oddawała znaczenie wartości, którą przechowuje. A nie przechowuje ona żadnej "pomocniczej wartości" tylko liczbę pseudolosową z zakresu 0 - 100. I to też nie będzie najlepsza nazwa, bo nie oddaje logicznego znaczenia tej wartości dla programu.

0

No dobra, przelece ten kod cały:


 class CObiekty //nazwa z dupy, powinna odzwierciedlać typ obiektów!
 {
     public: //pola klasy powinny być prywatne i mieć akcesory! Poza tym co to za klasa bez metod?
             int kolizja;
             char znak;
 };

////////////////////////////////////////////////////////////////////////////////
 int random(int nMin, int nMax);
 int textbackgroundcolor(int kolor);
 CObiekty generator(CObiekty pole[]);
 CObiekty postac(CObiekty pole[]);
////////////////////////////////////////////////////////////////////////////////


 int main()
 {
   CObiekty pole[9000];
   generator(pole);
   postac(pole);
 }; //za średniki po } w miejscu innym niż deklaracja klasy/struktury powinni łamać kołem. PO CO dałeś tam ten średnik?

 int random(int nMin, int nMax)
 {
     return rand() % (nMax - nMin +1) + nMin;
 }; //za średniki po } w miejscu innym niż deklaracja klasy/struktury powinni łamać kołem. PO CO dałeś tam ten średnik?

 int textbackgroundcolor(int kolor) //zła nazwa, powinno być setTextBackgroundColor() i powinno zwracać voida skoro nic nie zwracasz!
 {
   HANDLE uchwyt;
   uchwyt = GetStdHandle(STD_OUTPUT_HANDLE);
   SetConsoleTextAttribute(uchwyt,kolor);
 }; //za średniki po } w miejscu innym niż deklaracja klasy/struktury powinni łamać kołem. PO CO dałeś tam ten średnik?

 CObiekty generator(CObiekty pole[])
 {
     int random(int nMin, int nMax); // WTF? Deklaracja zdefiniowanej wcześniej funkcji wewnątrz funkcji? Incepcja?
     int textbackgroundcolor(int kolor); // WTF? Deklaracja zdefiniowanej wcześniej funkcji wewnątrz funkcji? Incepcja?
     int licznik,pomocnicza; //licznik pętli nazywa się zwykle 'i' i deklaruje się go wewnątrz fora

 srand (static_cast<unsigned int > (time(NULL)));

 for (licznik = 0; licznik <= 8999; licznik++) //hardkodowane liczby, bardzo źle
 {pomocnicza = random(0,100);

//hardkodowane liczby i copy-paste

 if (pomocnicza <= 30) 
 {
     pole[licznik].kolizja = 1;
     pole[licznik].znak = 'T';
     textbackgroundcolor(2);
     cout << pole[licznik].znak;
 }

 if (pomocnicza <=50 && pomocnicza >= 31)
 {
     pole[licznik].kolizja = 1;
     pole[licznik].znak = 'o';
     textbackgroundcolor(6);
     cout << pole[licznik].znak;
 }

 if (pomocnicza >50)
 {
     pole[licznik].kolizja = 0;
     pole[licznik].znak = ' ';
     cout << pole[licznik].znak;
 }
 }
 }; //za średniki po } w miejscu innym niż deklaracja klasy/struktury powinni łamać kołem. PO CO dałeś tam ten średnik?

 CObiekty postac(CObiekty pole[])
 {
     pole[5000].znak = '@';
     system("cls");
     cout << pole[5000].znak;
     generator(pole);
 }; //za średniki po } w miejscu innym niż deklaracja klasy/struktury powinni łamać kołem. PO CO dałeś tam ten średnik?

Ogólnie kod bardzo słaby i bardzo rozwlekły.

1

Ej, chłopaki, znalazłem Wam dział na oceny i recenzje kodu!
Oceny i recenzje
(Tak jakby się rozmijacie z tematem. ;))

1 użytkowników online, w tym zalogowanych: 0, gości: 1