• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Jak zanalizowac i zaplanować napisanie programu??

Object Storage Arubacloud
0 głosów
675 wizyt
pytanie zadane 17 września 2016 w C i C++ przez Łukasz ER Początkujący (420 p.)
Witam, od jakiegoś czasu uczę się programować w C++ i doszedłem do momentu w którym nie umiem poprawnie zaplanować napisania programu (chodzi mi o podzielenie programu na procedury) . Wiem jak robic wlasne funkcje jak korzystac z petli itp. jednak mam problem z kodzeniem tego . Ostatnio ok. 2 dni po pare godzin meczyłem się jak zaplanować napisanie prostego programu losującego n liczb z zadanego zakresu bez powtarzania się co mi się w koncu udalo z drobną pomocą internetu:D . Mimo iż jako tako miałem wszystko zaplanowane na kartce to nie wiedziałem jak to ubrać w kod.

Czy ktoś z was miał może podobne problemy lub wie jak sobie dobrze poukładać pracę nad kodem. Będę wdzięczny za wasze sugestie, pozdrawiam.

4 odpowiedzi

+2 głosów
odpowiedź 18 września 2016 przez niezalogowany
edycja 18 września 2016

To zależy na jakim stopniu zaawansowania jesteś. Jeżeli dopiero niedawno nauczyłeś się funkcji to może potrzebujesz więcej poćwiczyć praktykowanie ich? Nie chodzi mi o planowanie całego programu, ale o przerabianiu już gotowego kodu bez funkcji na taki, który je ma. Może problem tkwi w tym, że wiedza o funkcjach jeszcze się nie uleżała w głowie odpowiednio długo? :) Inną rzeczą jest to, że może jeszcze jest za wcześnie na planowanie? Rób jeden element, a później dokładaj kolejny... a później podziel na funkcje. Gdy nabierzesz więcej zrozumienia będziesz już dzielił program na funkcje automatycznie. Ja miałem czasami tak, że chciałem zrobić coś super-mega, ale nie wiedziałem od, której strony ugryźć. W programowaniu (zwłaszcza gdy jesteś początkującym) podczas pisania większego kodu często zmienia się koncepcje jak coś ma wyglądać. Zwłaszcza, że nie wie się jeszcze wielu rzeczy. Jakiś problem, który nam zajmie 20 linii komuś zajmie 2... Zmieniając jedną rzecz okazuje się, że inne elementy przestają działać... Następnie poprawia się wszystko...

Więc jeżeli jesteś zupełnie początkującym to nie planuj wszystkiego na sztywno. Musisz zrobić jeden element w kodzie i zaplanować jeden kolejny. Nie za dużo. Musisz widzieć umysłem więcej kodu niż planować sobie zadania. Jeżeli nie masz odpowiedniego doświadczenia zaplanujesz sobie coś co prawdopodobnie można by zrobić na 1000 sposobów inaczej, prościej. Natomiast sama praktyka przyniesie rezultaty i będziesz mógł z czasem planować znacznie dalej. Aż w końcu okaże się, że będziesz planował program funkcjami bez rozpisywania planu na kartce. No umówmy się przynajmniej w mniej zaawansowanych programach :)

Podałeś przykład programu z losowaniem n-liczb. Ja z doświadczenia widzę, że będzie na pewno funkcja:

int losuj(int przedzial_od, int przedzial_do)

Ewentualnie jakąś funkcje losuj_kilka_i_wypisz_na_ekran... Napisz ten program bez funkcji i następnie go podziel. Wymyśl sobie programy do robienia przykładów. Nie muszą być one skomplikowane pod względem innych doznań niż funkcje. Żeby nie gubić celu lekcji :) Np.:
- tablica liczb oblicz średnią arytmetyczną, geometryczną, harmoniczną...
- menu z wyborem opcji za pomocą switch
- dodawania, odejmowanie - nie kalkulator to by było za proste - weźmy wektory! +iloczyn skalarny, moduł etc
To może być cokolwiek co da się podzielić na funkcje :) Po prostu ćwicz :)
 

komentarz 18 września 2016 przez Łukasz ER Początkujący (420 p.)
Dobrze prawisz , a myslisz że w nauce programowania jak ktos zaczyna to preferujesz przerobienie całego materiału na raz i potem w treningach wracać do danego tematu czy przerabiać materiały stopniowo i dopiero jak opanuje dany temat to przejsc krok dalej ?? Ja aktualnie przerabiam ksiazke z podstawami c++ oraz przerabiam materiały Pana Zelenta .
1
komentarz 18 września 2016 przez niezalogowany
Trudno odpowiedzieć... Gdy przerobiłeś jakiś temat to trenuj go. Jedne tematy potrzebują więcej praktyki by je zrozumieć. Inne pewnie zrozumiesz od razu i dłuższy trening będzie zbędny. Po prostu musisz to sam ustalić czy już w miarę dobrze rozumiesz. Poza tym do wielu rzeczy i tak będzie się wracać później. I tak je będziesz cały czas trenować (funkcje, wskażniki etc.).
komentarz 18 września 2016 przez Łukasz ER Początkujący (420 p.)
Ok dziekuje za sugestie pozdrawiam
+1 głos
odpowiedź 17 września 2016 przez nauwalis Mądrala (7,350 p.)
Miałam podobne problemy. Nabranie solidnych podstaw, żeby wychodziło mi zajęło duzo czasu. Polecam głównie pisanie. Im więcej programów napiszesz tym łatwiej ubierać to w kod. Ja zawsze ułatwiam sobie pisaneim dokładnego algorytmu na kartce. Piszę program i tak go zmieniam, aż będzie tak samo działał jak na kartce opracowałam. To rozpisywanie na kartce przykładów, jest super, bo zauważasz różnice i widzisz, gdzie coś się zmienia, patrzysz i wiesz gdzie użyć pętli, a gdzie zrobioć to inaczej.
+1 głos
odpowiedź 18 września 2016 przez CzikaCarry Szeryf (75,340 p.)
Ja na początku mojej przygody z programowaniem na kartce rysowałem sobie schemat blokowy tego co miałem napisać . Dla przykładu wypisanie wszystkich liczb pierwszych z danego zakresu, następnie schemat ten pionowymi kreskami dzieliłem na funkcje, dla przykładu w tym programie zdefiniowałbym jedną funkcję (do sprawdzania, czy liczba jest liczba pierwsza), napisał 2 cin'y, i zamknął to w pętli. Taki system rozrysowania sobie czegoś na kartce jest bardzo dobrą praktyką w programowaniu.
komentarz 18 września 2016 przez Łukasz ER Początkujący (420 p.)

A czy moglbyś to zobrazowac albo wrzucic zdjecie takiej analizy bo bardzo jestem ciekawy jak robia to inni. laugh

komentarz 18 września 2016 przez CzikaCarry Szeryf (75,340 p.)

Ok. Jest to algorytm liczący sumę silni liczb z danego przedziału:

http://i.imgur.com/OG6vraQ.jpg

 

a tutaj przelałem to na kod:

#include <iostream>

using namespace std;

int silnia(int a)
{
    int i=1;
    int silnia=1;
    while(i<=a)
    {
        silnia*=i;
        i++;
    }
    return silnia;
}

int main()
{
    int i=1, a, b, suma=0;
    cin>>a>>b;
    while(a<=b)
    {
        suma+=silnia(a);
        a++;
    }
    cout<<suma;

    return 0;
}

 

0 głosów
odpowiedź 18 września 2016 przez ThunderEagle Nowicjusz (200 p.)
Dokladnie, jak masz z tym problem, dobrym rozwiazaniem jest zapis na kartce czy w notatniku dokladnie tego, co chcesz aby Twoj program robil jeszcze zanim zaczniesz go pisac, jest to przydatne, bo dzieki temu juz masz swoj pierwszy wglad w sam program i wiesz, czego oczekiwac podczas swojego zadania.

Jak juz sobie zapiszesz funkcje swojego programu, mozesz sobie zapisac to wszystko w jakiejs sensownej kolejnosci do wykonania i wtedy dopiero zaczac prace. O ile przy krotszych projektach moze to nie byc zbyt przydatne o tyle przy dluzszych moze Ci to znacznie ulatwic zadanie.
Mam nadzieje, ze pomoglem :)

Podobne pytania

+1 głos
1 odpowiedź 196 wizyt
pytanie zadane 3 kwietnia 2021 w C i C++ przez Dawidziu Bywalec (2,610 p.)
0 głosów
1 odpowiedź 263 wizyt
0 głosów
1 odpowiedź 293 wizyt
pytanie zadane 30 grudnia 2021 w SQL, bazy danych przez Grzegorzko Obywatel (1,110 p.)

92,556 zapytań

141,404 odpowiedzi

319,561 komentarzy

61,942 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...