Strona: [  << <   1   > >>  ]  z  1     
Autor Temat: Czytanie linii
Tamgo




Typ: neutral
Postów: 129
Zarejestrowany: Aug 2004
Czytanie linii

Może głupio to zabrzmi, pewien mój znajomy napisał mi takiego ćwiczebnika . Powiedział  przeczytaj i spróbuj zrozumieć. Bo jak nauczysz się rozumieć cudze  linie kodów, to łatwiej będziesz pisał swoje. I tak mnie zostawił, pojechał do Anglii, a ja patrzę jak wół w malowane wrota. Niby coś wiem, ale chyba to mało. Chodzi mi o  fragment linii zaczynający się od: If MieDzies Then Wysw = Wysw + ... Jak go odczytać, takim ludzkim językiem?
Widzę w tym dwie funkcje: Left  i  Instr. Widzę też, że jedna w drugiej jest chyba zagnieżdzona. Lecz jak ją właściwie zinterpretować? Czy ktoś może mi pomóc -  dodam, że dopiero wiele rzeczy się uczę.

Fragment kodu kalkulatora.

MieDzies  -  miejsce dziesiętne
cmdNumer(Index)  - przyciski cyfrowe z tablicy przycisków - chyba?
Wysw - wyświetlacz kalkulatora
OstKlic -  ostatnio używany przycisk

Private Sub cmdNumer_Click(Index As Integer)
    If OstKlic <> "Cyfra" Then
        Wysw = Format(0, "."
        MieDzies = False
    End If
    If MieDzies Then Wysw = Wysw + cmdNumer(Index).Caption Else Wysw = Left(Wysw, InStr(Wysw, Format(0, ".") - 1) + cmdNumer(Index).Caption + Format(0, "."
    If OstKlic = "Minus" Then Wysw = "-" & Wysw
    OstKlic = "Cyfra"
End Sub

Oczywiście zamiast tych żółtych "mordek" są prawe nawiasy.
Pozdrawiam Tamgo

20-10-2004 22:33
Pokaż profil Tamgo  Wyślij email do Tamgo        4484571
marcin_an
Forumowicz




Typ: neutral
Postów: 1265
Zarejestrowany: Mar 2004

Rozumiem, żejmujemy się tą linią:
If MieDzies Then Wysw = Wysw + cmdNumer(Index).Caption Else Wysw = Left(Wysw, InStr(Wysw, Format(0, "." )) - 1) + cmdNumer(Index).Caption + Format(0, "." )


Najpierw rozbijmy ją sobie tak, żeby ładniej wyglądała:
If MieDzies Then
    Wysw = Wysw + cmdNumer(Index).Caption
Else
    Wysw = Left(Wysw, InStr(Wysw, Format(0, "." )) - 1) + cmdNumer(Index).Caption + Format(0, "." )
End If


Jeśli liczba ma miejsce dziesiętne, to:
Na wyświetlaczu wyświetl wynik dołączenia do jego zawartości .Caption z klikniętego przycisku.
W przeciwnym wypadku:
Podaj, na którym znaku znajduje się ktopka/przecinek, odejmuj od tego 1 i pobierz taką liczbę znaków od lewej, jaki był wynik tej operacji. Następnie dołacz do tego numer z naszego przycisku i kropkę/przecinek. Na końcu wyświetl to.

A teraz wyjaśnienia:
Podaj, na którym znaku znajduje się - to nam robi funkcja InStr.
kropka/przecinek - ponieważ przy różnych ustawieniach różne znaki mogą oznaczać początek rozszerzenia dziesiętnego, można użyć Format(0, "." ) do pobrania tego znaku - i tak to jest tutaj użyte.
Od otrzymanej z InStr liczby (czyli miejsca, na którym znajduje się nasza kropka/przecinek) odejmujemy 1. Robimy to dlatego, że chcemy w Left pobrać tylko to, co jest przed kropką, a InStr zwraca nam numer znaku, który jest ruż za kropką.
Następnie Left pobieramy z Wysw wyliczoną liczbę znaków.
Reszta już nie wymaga cyba tłumaczenia.

Poza tym należy zaznaczyć, że kod zawiera... może nie tyle błąd (VB tego nie zauważy i zadziała prawidłowo), co formę, której nie powinno się stosować. Mianowicie operator + do łączenia znaków. Chociaż VB zrozumie o co chodzi, to powinno się do tego celu stosować operator &. + służy do sumowania liczb.

Swoją drogą - skąd twój znajomy wytrzasnął ten kod? Wygląda, jakby go ktoś pisał specjalnie po to, by ktoś inny trenował na nim analizę kodu .


_____________________________________________
Jedzonko dla Google'a:
Forum na temat Visual Basic, C, C++, Pascal, Programowanie, API, PHP, VBA, VB.NET, QBasic, VBScript, Komputery
Moja strona o wszystkim

21-10-2004 12:35
Pokaż profil marcin_an  Wyślij email do marcin_an   Odwiedź stronę marcin_an  
Tamgo




Typ: neutral
Postów: 129
Zarejestrowany: Aug 2004
Jeszcze o czytaniu linii

Dzięki Marcin, własnie mnie o to chodziło. Chciałem sie trochę wytłumaczyć, przecież zadałeś mi pytanie o treść mojego posta. Więc tak, jestem niestety nieco podstarzałym samoukiem. Nie wiem jaką naprawdę przyjąć metodykę nauczania. Wydawało mi się, że należy równolegle  z poznawaniem teorii, uczyć się również "czytać" różne linie kodu. Myślę - może  się mylę, że jeśli zrozumiem intencje autorów linii kodów (oczywiście wiedząc jakiemu programowi mają służyć) będę rozwijał merytoryczne umiejętności korzystania z warsztatu narzędzi, jakie daje VB. Bo przyznam szczerze z żalem, większość książek jest do luftu.
Albo są  za bardzo "dziecinne", pokazują VB na poziomie  szkółki niedzielnej, albo "waląc" z grubej rury językiem akademickim, zagłębiają się w szczegóły warte pracy naukowej. Brakuje mi tutaj książki, która krótko i rzeczowo wprowadzi czytelnika w arkana sztuki, bez zbytniej wylewności. Następnie umiejętnie podnosząc poprzeczkę wprowadzi nas w podstawowe szczegóły, jednocześnie wyjaśniając przyczyny, dla których stosuje takie czy inne narzędzia w strukturze kodów. Dobrym przykładem może być - niestety połowa książki dra Wiktora Traichela - "Ćwiczenia z Visual Basic".  Świadomie z żalem  mówię połowa, ponieważ zbyt wiele w niej samej matematyki i akademickich sformułowań - utrudniających łatwe pojmowanie, a zbyt mało właśnie prostoty językowej i przykładów bardziej praktycznych.  Spójrz na taki przykład opisu tej samej funcji InStr :
1/ wg Treichela - znajduje pozycję w łańcuchu S, na ktorej znajduje się piersze wystąpienie podłańcucha S1
2/ wg  Marcina_an - podaj na którym znaku znajduje się.....
Ja nie mam wątpliwości, czyj język jest bardziej zrozumiały i przejrzysty. Dlatego własnie cenię sobie pomoc "Na Forum"
Natomiast dobre w wymienionej książce jest to, że  autor tłumaczy "na polski" linie kodów, całą metodykę zastosowania oraz powody wyboru rozwiązań. Stosując tematyczne stopniowanie poziomu trudności, przechodzi przez najważniejsze szczeble, zapoznając czytelnika z najistotniejszymi elementami VB.
Polecam ją naprawdę początkującym, w jednej małej książce jest bardzo wiele.
Przepraszam, że tak wiele cennego miejsca zająłem, wszak to też temat VB, próbuję jedynie wyjaśnić, skąd mam tak dużo naiwnych nieraz pytań o VB. A przy okazji wiadomo, dlaczego to FORUM jest takie cenne - przynajmniej ja tak uważam.

22-10-2004 22:37
Pokaż profil Tamgo  Wyślij email do Tamgo        4484571
marcin_an
Forumowicz




Typ: neutral
Postów: 1265
Zarejestrowany: Mar 2004

Ja też jestem samoukiem, który na dodatek nie korzystał z kursów . Co mogę zatem poradzić? Nie wiem . Pamiętam, że nie zaczynałem od głębokiej analizy kodu innych programistów. Wtedy było to jeszcze dla mnie za trudne. Starałem się raczej zdobyć wiedzę o każdej napotkanym elemencie VB i natychmiast spróbować go użyć. Nawet w najgłupszym kodzie, ale żeby wogóle działało. Poza tym może pomoże ci uczenie się funkcji grupami - tak, jak są pogrupowane w dziale teoria na vb4all. Gdy już znałem VB na tyle, by napisać jakiś prymitywny program, zacząłem się uczyć od innych. Podglądałem metody użyte w kodach i starałem się je zrozumieć - nadal jednak nie analizując kodu w całości. Drugim sposobem było rozwiązywanie problemów. Tak prawdziwych (pisanie programów single-purpose na własne potrzeby), jak i wyimaginowanych. Nawet, jeśli nie wiedziałem, jak coś zrobić - poprostu szukałem, szukałem, szukałem, aż znalazłem . Dobrym treningiem stało się dla mnie to forum. Rozwiązywanie pytań innych też zmusza mnie do myślenia i szukania sposobu na rozwiązanie.

Jedyna konkretna rada, której mogę ci udzielić brzmi tak:
Nigdy się nie poddawaj. Jeśli napotkasz przykład zbyt trudny lub taki, którego nie potraisz rozwiązać - nie zostawiaj go. Nie musisz robić go tego samego dnia, ale ważne, żebyć zrobił. Często okazuje się, że wiele problemów potrafisz rozwiazać, ale coś ci wychodzi źle... np. rysujesz sinusoidę, ale wychodzi ci do góry nogami i nie na srodku formy. Tego też nie zostawiaj. Staraj się osiągnąć pierwotny cel - sinusoidę na środku formy. Może się wydawać, że to tylko prymitywna, kosmetyczna poprawka. Tak - to jest prymitywna, kosmetyczna poprawka. Ale takie poprawki robi się często i warto wyćwiczyć sobie ich wykonywanie. Potem, gdy będzie to potrzebne - wklepiesz ją niemalże automatycznie, zamiast zmarnować kwadrans na napisanie działającego kodu i jego testowanie.


_____________________________________________
Jedzonko dla Google'a:
Forum na temat Visual Basic, C, C++, Pascal, Programowanie, API, PHP, VBA, VB.NET, QBasic, VBScript, Komputery
Moja strona o wszystkim

23-10-2004 10:39
Pokaż profil marcin_an  Wyślij email do marcin_an   Odwiedź stronę marcin_an  
Chudy
[TLHW]Wiktor



Typ: moderator
Postów: 574
Zarejestrowany: Aug 2002

Ja uczyłem się głównie na samplach, a potem próbowałem pisać proste gierki Noi chyba teraz nienajgorzej sobie radze z VB. Ale nie radze wszystkim uczyć się z sampli bo to zależy co kto szybciej pojmuje. Dla niektórych łatwiej jest zrozumieć teorie a z niektórych tylko odrazu praktyka czyni mistrza. Ja akurat dobrze uczyłem się z sampli dlatego że podobnie radze sobie z matematyką. Rozwiąże jakieś zadanie podglądając jak zrobił to ktoś inny i już umiem to zrobić sam. Po uczeniu się z sampli doszło jeszcze troche czytanie opisów funkcji (wtedy jeszcze niektóre miały dla mnie tajemnicze nazwy ) z angielskiego helpa.


_____________________________________________
Projekt "Thunder Cannons" nadchodzi...

23-10-2004 12:06
Pokaż profil Chudy  Wyślij email do Chudy   Odwiedź stronę Chudy       1220895
losmac
"profesorek"




Typ: neutral
Postów: 758
Zarejestrowany: May 2003

A ja Ci mówię...

Ucz się z tego, z czego Ci najłatwiej.

Jest tyle możliwości...

Zacznij przeczytania jakiejś prostej książki (mogą być 2 lub 3). Przerób wszystkie ćwiczenia i...
zacznij pisać aplikacje pod swoje potrzeby.
Z problemami, z którymi sobie nie poradzisz od razu możesz podejrzeć jak zobili to inni. Poproś na forum o pomoc.

Jednym słowem: NIE MA UNIWERSALNEGO SPOSOBU NA NAUKĘ!


_____________________________________________
POSTULATY STARUSZKA:
1) Ludzie, dbajcie o polszczyznę!!!
2) Ludzie, zadawajcie kompletne pytania, a nie rzucacie ochłapy i trzeba się domyślać o co chodzi!!!

Powodzenia
Maciej Łoś

23-10-2004 19:08
Pokaż profil losmac  Wyślij email do losmac   Odwiedź stronę losmac  
Tamgo




Typ: neutral
Postów: 129
Zarejestrowany: Aug 2004
nauka o VB - jaki model wybrać

Żebym był szczery, nie wiem czy to dobrze.
Ja trochę się "pospieszyłem". Tzn sam, autentycznie napisałem sporą aplikację używając do bólu prostych kodów (są skuteczne). Wiem tylko, że można sporo w nim przerobić, żeby go "okroić" z niepotrzebnych bajtów i przyspieszyć działanie. Najgorzej jednak, że ja go napisałem w VBA. A to dlatego, że z racji obowiązków zawodowych musiałem być w dwóch odległych miejscach i w jednym nie miałem  i nie mogłem mieć VB. Więc korzystając z dostępności VBA w nim pisałem.

Więc Marcinie_an zajrzyj na skrzynkę i popatrz jak  wygląda interfejs. Jest to program do obliczania dachów i pokryć dachowych. Obejrzyj dokładnie i proszę o zdanie - bez owijania w bawełnę. Czy wygląd programu jest godny, by być w pełni profesjonalnym programem? Dzięki za pomoc, to tyle

24-10-2004 21:49
Pokaż profil Tamgo  Wyślij email do Tamgo        4484571
Wszystkich odpowiedzi: 6 :: Maxymalnie na stronę: 20
Strona: [  << <   1   > >>  ]  z  1