Zaloguj się, aby obserwować  
Bartuc

Język C / C++ / C# / Java - pytania, problemy...

1979 postów w tym temacie

Dnia 25.03.2010 o 21:37, Xjumpaytech napisał:

Ja mam takie pytanie z ciekawości. Kiedyś chciałem nauczyć się C++, ale te kursy są do
niczego w bardzo łagodnej wersji, bo co mi z tego, że będę umiał napisać program wyświetlający
hello world. I mam takie pytanie z czystej ciekawości. Jak Wy do cholery się w tym orientujecie?
Jakim cudem to jest skonstruowane, że wiecie, że przy pisaniu np. jakiejś bazy danych
trzeba wpisać to, a nie co innego? W żadnym kursie nie było to wytłumaczone, za to były
głupoty o jakiś zmiennych (hehe wiem, że nie głupoty). Ciekawość na prawdę mnie zżera
;).

Bo to się ostatecznie wszystko sprowadza do zera i jedynki ;-)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 25.03.2010 o 21:37, Xjumpaytech napisał:

Ja mam takie pytanie z ciekawości. Kiedyś chciałem nauczyć się C++, ale te kursy są do
niczego w bardzo łagodnej wersji, bo co mi z tego, że będę umiał napisać program wyświetlający
hello world. I mam takie pytanie z czystej ciekawości. Jak Wy do cholery się w tym orientujecie?
Jakim cudem to jest skonstruowane, że wiecie, że przy pisaniu np. jakiejś bazy danych
trzeba wpisać to, a nie co innego? W żadnym kursie nie było to wytłumaczone, za to były
głupoty o jakiś zmiennych (hehe wiem, że nie głupoty). Ciekawość na prawdę mnie zżera
;).

Generalnie aby napisać dużą aplikację, zaczynasz od myślenia i projektowania, nie pisania. Wydzielasz części systemu, ustalasz jak się mają ze sobą komunikować. Później zajmujesz się tymi częściami. Zakładając, że programujesz obiektowo, wymyślasz obiekty. Przy tym wszystkim stosujesz wiedzę z dziedziny zwanej Inżynierią Oprogramowania, a nie wiedzy o samym programowaniu. Zawodowy programista musi znać pewne wzorce projektowe, aby na nowo nie wymyślać koła.
Pamiętaj, że duże aplikacje pisze kilka, kilkanaście lub nawet kilkadziesiąt osób. Program musi mieć dość dobrze wydzielone "kawałki", aby dało się tym zarządzać.
Generalnie często potem okazuje się, że projekt nie był dość dobrze przemyślany i potrzebne są poprawki.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 25.03.2010 o 21:37, Xjumpaytech napisał:

Ciekawość na prawdę mnie zżera ;).


Ja tą swoją wiedzę (itd) zwalam na studia..
nie wiem jak inni ;P

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 25.03.2010 o 21:37, Xjumpaytech napisał:

Ja mam takie pytanie z ciekawości. Kiedyś chciałem nauczyć się C++, ale te kursy są do
niczego w bardzo łagodnej wersji, bo co mi z tego, że będę umiał napisać program wyświetlający
hello world. I mam takie pytanie z czystej ciekawości. Jak Wy do cholery się w tym orientujecie?
Jakim cudem to jest skonstruowane, że wiecie, że przy pisaniu np. jakiejś bazy danych
trzeba wpisać to, a nie co innego? W żadnym kursie nie było to wytłumaczone, za to były
głupoty o jakiś zmiennych (hehe wiem, że nie głupoty). Ciekawość naprawdę mnie zżera
;).


To niezupełnie tak jak myślisz. Po pełnym, "książkowym" kursie C++ (opieram się na C++: Pierwsze starcie) w zasadzie umiesz dwie rzeczy:
a) nie zrobisz głupiej gafy przy programowaniu, a przynajmniej nie z powodu nieznajomości języka.
b) umiesz szukać gotowych rozwiązań :P
Bo C++ to nie tylko kilkaset instrukcji. Istnieje do niego pełno tzw. bibliotek. Każda biblioteka zawiera sporo funkcji przydatnych przy konkretnym celu. Dla przykładu - Allegro.h to pełnoprawne narzędzie do tworzenia gier. Dzięki jejgo zastosowaniu możesz zrobić prostą gierkę 2D w kilka godzin. A sam kod nie będzie mieć więcej niż kilkadziesiąt-kilkaset linii (gdybyś chciał zrobić to wszystko samodzielnie, to wątpię, żebyś i w 1000 linii się zmieścił :)). Są biblioteki do tworzenia zjawisk fizycznych, są też i do baz danych.
Tylko...dokumentacja (opis zastosowania) biblioteki wymaga pewnej wiedzy. Właśnie o zmiennych, obiektach, wskaźnikach itp. I tego właśnie uczą te wszystkie kursy - zrozumienia, o co w tym wszystkim chodzi. To trochę jak z czytaniem książki - nie przeczytasz np. książki kucharskiej w suahili. Ale jak się nauczysz tego języka, to dasz radę i będziesz mógł wykorzystać przepisy stamtąd :P
Oczywiście, to nie jest tak, że biblioteki zrobią za ciebie wszystko. Ale jak już trochę posiedzisz przy programowaniu (i zobaczysz, jak inni programiści radzą sobie z różnymi problemami), to w zasadzie potrzebne ci będą tylko dwie rzeczy:
a) co chcę zrobić?
b) jak to ma działać?
A reszta przyjdzie niejako sama z siebie ;)
Wbrew pozorom sam język to dopieeeerooo początek, żaden kurs nie sprawi, że będziesz w stanie od ręki zrobić takiego Quake''a. Nawiązując do mojej kucharsko-afrykańskiej metafory - to, że już umiesz przeczytać książkę, nie oznacza, że dobrze zrobisz danie, jakie w niej opisano.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 25.03.2010 o 21:37, Xjumpaytech napisał:

Ja mam takie pytanie z ciekawości. Kiedyś chciałem nauczyć się C++, ale te kursy są do
niczego w bardzo łagodnej wersji, bo co mi z tego, że będę umiał napisać program wyświetlający
hello world. I mam takie pytanie z czystej ciekawości. Jak Wy do cholery się w tym orientujecie?
Jakim cudem to jest skonstruowane, że wiecie, że przy pisaniu np. jakiejś bazy danych
trzeba wpisać to, a nie co innego? W żadnym kursie nie było to wytłumaczone, za to były
głupoty o jakiś zmiennych (hehe wiem, że nie głupoty). Ciekawość na prawdę mnie zżera
;).


Myślę, że kluczem do sprawnego orientowania się w budowie programów jest właśnie nauczenie się "hello world`a". A następnie prostego kalkulatora, notatnika, gry w statki i innych coraz bardziej skomplikowanych programów. W moim przypadku takie poznawanie środowiska C++ krok po kroku motywowała szkoła. Najpierw nowe algorytmy poznawałem z przymusu (żeby zaliczyć kartkówki) później pomyślałem, że przecież od zawsze chciałem stworzyć własną grę. Wtedy okazało się, że to czego nauczyli mnie w szkole nie wystarczy. Właśnie coraz to nowe pomysły zmusiły mnie do grzebania w sieci w poszukiwaniu funkcji i bibliotek. I jakoś tak krok po kroku... :)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

A to mi już w miarę rozjaśniliście ten język :). Ja najtrudniejszy program jaki napisałem to był kalkulator i jego zrozumiałem, ale dziwiłem się skąd wiecie, że trzeba pisać akurat #include<iostream.h>, a nie coś innego już wiem, że są to biblioteki :). To sobie o tym poczytam. Może znowu spróbuje uczyć się tego języka, w sumie nie wiem po co mi on, ale ciągnie mnie do niego jakoś bardziej niż do jakiegokolwiek innego, może to dlatego, że jest dla mnie mało zrozumiały? Ale na pewno mi się podoba. Dzięki.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Polecam bibliotekę math.h . Masz tam na przykład pierwiastek kwadratowy (sqrt), sufit (ceil (liczba double) - zaokrąglenie w górę), floor - j.w, tylko, że w dół i masę innych przydatnych funkcji. Pamietaj tylko, że kompilujesz tak: gcc -Wall -lm

Spoiler

załącza bibliotekę matematyczną

-o program program.c

Przykładowy program:
Spoiler

#include <stdio.h>
#include <math.h>
main ()
{
double a=4;
double b=5.45;
printf("Pierwiastek kwadratowy z a razy b to: \n",sqrt(a*b));
printf("Podloga z a razy b to: \n",floor(a*b));
printf("Sufit z a razy b to: \n",ceil(a*b));
}



EDIT: Dopiero zauważyłem, że piszesz o C++, a to co ja zrobiłem jest do C, ale moze też zadziała ;)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Dzięki spróbuje, ale jak na razie mam takie pytanie. Dzięki Wam i takiemu świetnemu poradnikowi zrozumiałem podstawy tego języka. Już wiem mniej więcej jak robi się programy matematyczne, zrobiłem już kilka kalkulatorów, program do sprawdzania wieku i teraz chciałem zrobić program do tw. odwrotnego do tw. Pitagorasa, bo widzę, że ludzie mają z tym problem (na forach co drugi wątek się o to opiera). Jaka jest biblioteka do potęgowania. Jeśli możecie to sprawdźcie to co znalazłem z tych bibliotek, bo jeszcze z tym mam problem. Jak na razie mój program wygląda tak. Ale nie chce się skompilować, bo podejrzewam, że to przez właśnie brak jakiejś biblioteki i pewnie obsługującej potęgowanie, być może o czymś jeszcze zapomniałem, albo źle napisałem if, no nie wiem, ale jeszcze się uczę :). No i nie zwracajcie uwagi na to, że u mnie tw. odw. do Pitagorasa zamiast 2 mniejsze boki do^2=większemu^2, tylko a^2+b^2, bo na to jeszcze przyjdzie czas ;). Na razie tyle udało mi się wymyślić, a i robię to sam, bez pomocy jakiegokolwiek poradnika, więc przepraszam za te błędy (bo pewnie są podstawowe). A właśnie jeszcze jak zrobić, żeby program do sprawdzania wieku, działał w 2 zakresach? Tzn. wiem, tylko, że jeśli dam 2x if powiedzmy, że od a<=17 i a>=100 i napiszę, że jeśli poniżej 17 to masz za mało tak, żeby wejść, a w progu od 18-100, wbijaj, a w progu powyżej 100 taa na pewno masz tyle, o wszystko dobrze działa dopóki nie wpisze się liczby powyżej 100, bo program pisze "Wbijaj", a w następnej linijce "taa na pewno". Trochę dużo pytań, ale szybko się uczę, więc nie będę Wam raczej długo truł głowy ;).

#include <iostream.h>
#include <stdlib.h>
#include <math.h>

int main()
{
float a;
float b;
float c;
cout<<"podaj bok a"<<endl;
cin>>a;
cout<<"podaj bok b"<<endl;
cin>>b
cout<<"podaj bok c"<<endl;
cin>>c
if(a^2+b^2=c^2)
{
cout<<"trojkat jest prostokatny"<<endl;
{
else
{
cout<<"trojkat nie jest prostokatny"<<endl;
}
system("PAUSE");
return EXIT_SUCCESS;
}

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

No, ok program już działa, tylko mam pytanie małe, jak się tutaj dodaje kolejność wykonywania działań? Bo komputer zamiast najpierw potęgować, dodaje, bo jeśli da się bok a=6, b=8,c=10 to program pisze, że trójkąt nie jest prostokątny. A wg mnie 6^2 + 8^2 = 100, 10^2=100, za to jak napisze się 0,0,0 to program mówi, że jest, bo 0+0=0, 0^2=1, a 0^=1, więc gubi kolejność wykonywania zadań. A to pisanie daje bardzo dużo satysfakcji, nawet taka pierdółka w stylu kalkulatora. Dużo więcej jest satysfakcji niż przy HTML''u :P.

PS sorry za doubla, ale nie ma niestety edit'a :(.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 27.03.2010 o 10:38, Xjumpaytech napisał:

No, ok program już działa, tylko mam pytanie małe, jak się tutaj dodaje kolejność wykonywania
działań?

Normalnie, nawiasami. Jeśli porównujesz wyniki jakichś działań, to muszą być one w nawiasach, w przeciwnym razie program weźmie tylko najbliższą wartość (w tym wypadku pow(b,2)) i z nią porówna. Powinno być:
if ((pow(a,2) + pow(b,2)) == pow(c,2))

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 27.03.2010 o 10:50, rob006 napisał:

Normalnie, nawiasami. Jeśli porównujesz wyniki jakichś działań, to muszą być one w nawiasach,
w przeciwnym razie program weźmie tylko najbliższą wartość (w tym wypadku pow(b,2)) i
z nią porówna. Powinno być:
if ((pow(a,2) + pow(b,2)) == pow(c,2))

A to łatwo myślałem, że trzeba jakieś skomplikowane komendy pisać. Dzięki.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 02.04.2010 o 23:43, Harrolfo napisał:

#include <stdlib.h> i przed kończącą program klamrą system("pause");


Wiem, wiem, nie powinienem używać takich neologizmów jak zmaksymalizowania się bo ktoś może przeczytać zatrzymania sie. Nie mniej jednak dziękuję za chęci, czekając na właściwą podpowiedź. :)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Wiem ale nie o to mi dokładnie chodzi. Chciałbym zrobić tak:
Po uruchomieniu programu w konsoli otwiera się ona w domyślnym, małym oknie. Chciałbym umieścić na początku instrukcję, funkcję która zmusi okno do maksymalizacji (powiększenia, takiego jak po naciśnięciu przycisku maksymalizuj) bez ingerencji użytkownika. Dopiero później program zacznie swoją właściwą pracę.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 03.04.2010 o 10:11, o_Orange napisał:

Wiem ale nie o to mi dokładnie chodzi. Chciałbym zrobić tak:
Po uruchomieniu programu w konsoli otwiera się ona w domyślnym, małym oknie. Chciałbym
umieścić na początku instrukcję, funkcję która zmusi okno do maksymalizacji (powiększenia,
takiego jak po naciśnięciu przycisku maksymalizuj) bez ingerencji użytkownika. Dopiero
później program zacznie swoją właściwą pracę.

Program konsolowy nie ma pojęcia o tym, że konsola jest w systemie jedynie okienkiem. Dla programu konsolowego konsola to ekran o określonych wymiarach wierszy i kolumn i jest to jedyne co o niej wie. Tym samym nie ma żadnej możliwości manipulowania oknem konsoli.
Konsola, to nie okno - konsola jest w oknie, albo na ekranie po wciśnięciu alt+enter (odwrotnie też) lub zależnie od ustawienia właściwości okna konsoli.

To co chciałbyś zrobić jest możliwe, ale pod warunkiem, że napiszesz okienkowy program, którego zawartością będzie konsola. Wtedy będziesz miał pełnię władzy nad tym stworzonym przez swój program okienkiem. Program taki jest wbrew pozorom dość łatwy do skonstruowania bo wszystkie potrzebne elementy są dostępne w bibliotekach standardowych większości języków, które obsługują aplikacje GUI. Na przykład w Javie jest to jakieś 15 linijek kodu.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

/.../

A mi, w tak zwanym międzyczasie, udało się znaleźć ten post:

http://www.forum.tweaks.pl/maksymalizacja-okna-konsoli-t7059.html

Co prawda program działa z wykorzystaniem biblioteki windowsowskiej i konieczne jest deklarowanie tego czegoś:

#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x0502
#endif

ale działa, i ładnie masymalizuje okno konsoli.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Utwórz konto lub zaloguj się, aby skomentować

Musisz być użytkownikiem, aby dodać komentarz

Utwórz konto

Zarejestruj nowe konto na forum. To jest łatwe!


Zarejestruj nowe konto

Zaloguj się

Masz już konto? Zaloguj się.


Zaloguj się
Zaloguj się, aby obserwować