eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingcoś lajtowego - konsola
Ilość wypowiedzi w tym wątku: 50

  • 41. Data: 2012-10-19 20:06:16
    Temat: Re: coś lajtowego - konsola
    Od: kenobi <p...@g...com>

    Ja mam ciagle problem z tymi funkcjami do
    konwersji string <-> int/long/double i nie dorobilem sie ciagle calkiem dobrego
    sposobu.
    Chyba znowu zmienie sposob uzywania tego i
    wprowadze dwie funkcje Str( int ) i Int( char* )
    moze to bedzie lepiej dzialac :/


  • 42. Data: 2012-10-19 20:43:40
    Temat: Re: coś lajtowego - konsola
    Od: Baranosiu <r...@w...pl>

    Dnia 19.10.2012 kenobi <p...@g...com> napisał/a:
    > W konsoli siedzi jakas fajna magia, Pamietam
    > w dziecinstwie mialem C64 i raz wsrod gier na
    > tasmach natknalem sie na kompilator fortha (lub
    > fortrana) Asma i basic kojarzylem ale fortha (czy
    > fortrana) to raczej nie Byla tam konsola, czarny
    > ekran i zlote/zolte lub niebieskie/szare litery, nie
    > mialem instrukcji i moglem tylko wyszukiwac slowa
    > hexedytorem i probowac na slepo cos wpisywac.

    To Fig-Forth ;)


    > Konsola ma magie, bo jest konsola, sa tajemniecze
    > polecenia i mozna robic rone rzeczy - chyba wiekszosc
    > tej magii rozwalil dos, ktorego polecenia byly durne
    > a konsola b kiepska (do dzis nie wiem kto to
    > w sumie zrobil ).

    Magia magią, ale podstawowa zaleta (no może poza kontekstami typu
    edycja zdjęć) to wygoda i szybkość (paradoksalnie wielu ludzi wsiada
    na "okienka" tylko po to, aby z czasem odkryć, że używanie skrótów
    klawiszowych to jest to co pozwala im szybko i efektywnie pracować z
    programem :D). Czy DOS rozwalił magię? To był pierwotnie "klon"
    systemu CP/M przeniesiony na inną architekturę (a CP/M wzorowany był
    na systemach z komputerów PDP-11 i temu podobnych). MS-DOS aż całkiem
    taki durny nie był, po prostu gdy Bill Gates podpisał kontrakt z IBM
    na stworzenie systemu operacyjnego, to zamiast stworzyć coś od
    podstaw, postanowił kupić od bodajrze Tima Patersona jego
    eksperymentalny port systemu CP/M na procesory 8086 (to był system,
    który powstał tylko do celów testowania jakiejś karty rozszerzeń,
    która miała właśnie 8086 na pokładzie) :D


    > Pozatym (poza dosem i
    > interpreterem basica z c64) za wielu konsoli
    > nie znam i nie pamietam. Sa jakies inne slawne
    > konsole? (pamietam jeszcze lego i basic z zx spectrum
    > ale widzialem tylko przez moment, konsoli amigi np nie
    > kojarze, linuxa tez nie bardzo,( to co pamietam to
    > bylo nieststy troche podobne do dosa,) terminale
    > unixa juz jakby lepiej, przez mudy irca itp rzeczy
    > (ktore ja znam tylko z czasow studiow na fizyce, gdyby
    > nie to nie mialbym o tym pojecia) )

    Konsola jak konsola, dla mnie osobiście jest tak samo wygodna jak
    interfejsy graficzne i jakiejś specjalnej "magii" nie czuję choć... w
    ramach samokształcenia z układów PLD montuję sobie emulator terminala DEC
    VT220 :D Układ Lattice MachXO256 będzie robił za kartę graficzną z
    wyjściem VGA, a obsługę klawiatury PS/2, portu szeregowego, kodów
    sterujących w standardzie ANSI i całej komunikacji z Unixem będzie
    załatwiała Atmega644P. Jak to dokończę, to pewnie "magia" wróci na
    jakiś czas (dopóki mi się zabawka nie znudzi :D).

    W Windowsie też masz konsolę (i można sobie MinGW+MSYS zainstalować do
    programowania i używania, albo CygWina jak ktoś woli). Konsol było i
    jest dużo, ale to już raczej wykracza poza tematykę grupy :D


  • 43. Data: 2012-10-20 01:25:10
    Temat: Re: coś lajtowego - konsola
    Od: Baranosiu <r...@w...pl>

    Dnia 19.10.2012 kenobi <p...@g...com> napisał/a:
    > mozna zrobic ten operator przeciazalnym itp,
    > jest to troche problematyczne glownie z tego
    > powodu ze dotychczas operatory rzutowania
    > nie robily tego typo rzeczy, ale raczej
    > sklaniam sie ku temu zeby to bylo w jezyku,
    > powod jest takie ze gdyby to bylo sporo
    > roznego rodzaju kodow w c daloby sie napisac
    > bez biblioteki a brak tego wlasnie burzy tą
    > ew elegancje - niezrecznosc w porownaniu np
    > z konwersjami double na long itp wynka wlasine z tego ze to nie jest
    > obslugiwane na poziomie srzetu (a mogloby byc)

    Jeśli potrzebujesz przeciążania, to możesz zastosować C++ i samemu
    zdefiniować sposób rzutowania takich rzeczy jak (char[])1000 - nie ma
    z tym najmniejszego problemu (za wyjątkiem tego, że trzeba to zrobić
    raz na całe swoje życie :D). Sam język czym mniej robi "za plecami"
    programisty tym lepiej :D Na przykład w Ada gdy zdefiniujesz:

    type Minuta is new Integer range 0..59;
    type Sekunda is new Integer range 0..59;

    to typy Minuta i Sekunda nie są ze sobą zgodne (mimo że obydwa są
    typami całkowitymi o tym samym zakresie) i bardzo dobrze, że tak jest,
    bo przecież minuta to 60 sekund i równość jest dopiero gdy
    licznik_sekund = 60 * licznik_minut ale skąd kompilator czy procesor
    mają to wiedzieć jeśli im się tego jawnie nie "powie"? Nawet takie
    "beztypowe" języki jak Python nie zaakceptują ciągu instrukcji:

    A="10"
    B=A*2

    bo coś takiego po prostu świadczy o błędzie programisty i język POWINIEN
    wymagać zrobienia B=int(A)*2 bo wtedy jest pewność, że programista wie
    co robi.
    Automatyczne konwersje typów char[]<->int w procesorze nie sprzyjałoby
    tzw. elegancji kodu lecz byłoby tylko "wytrychem" na lenistwo bądź
    niewiedzę programisty (to oczywiście moje zdanie). Czy konwersja
    pomiędzy char[] a int jest problematyczna przy pisaniu programu?
    Przecież wystarczy raz w programie zdefiniować SAMEMU jak ma być
    robione to rzutowanie (i nawet nie trzeba robić implementacji, można
    skorzystać z gotowych funkcji) i można konstrukcji typu (char[])100
    używać, ale jak to jawnie zdefiniujesz, to kompilator wie, że ty
    "wiesz co robisz" :D Pozatym to ty możesz sam określić kiedy w
    konwersji jest błąd a kiedy nie jest, bo jak program zapyta "podaj
    cenę" i użytkownik wpisze "25gr" to Ty jako programista możesz zrobić
    z tego 0.25zł a procesor... albo wyrzuciłby błąd napotkawszy nieznane
    znaki, albo "olałby" jednostkę i traktowałby to jako 25zł :D

    Z mojego doświadczenia: jeśli konwersja typów w programie jest "na
    porządku dziennym" (za wyjątkiem I/O czyli interakcji z
    użytkownikiem), to znaczy, że w programie jest dużo błędów
    projektowych (nie został przemyślany, tylko programista bez projektu
    zasiadł do pisania i "jakoś tak samo wyszło"). Znajomość języka
    programowania a umiejętność programowania to dwie różne sprawy,
    pozatym język programowania potrafi przyzwyczaić do pewnych schematów
    myślenia.
    W swoich początkach (ponad 20 lat temu) gdy zaczynałem od BASIC, to
    mojej głowie było obce myślenie w kategoriach rekurencji, list, grafów,
    podprocedeur, zmiennych lokalnych itd. bo... BASIC tego nie miał, więc
    nauczyłem się "żyć bez tego" i jakieś rzeczy typu deklarowanie
    zmiennych czy wskaźniki w innych językach programowania uważałem za
    zbędny balast, który "spowalnia wklepywanie programu do komputera".
    Obecnie... nie umiałbym napisać w BASIC nic poważniejszego, nie
    "zapanował bym" nad projektem gdyby cały program musiał być "płaski" i
    "beztypowy" :D Statystycznie najwięcej błędów znajduję u siebie w tych
    miejscach, gdzie język nie wymaga ode mnie surowej dyscypliny :D

    > tak ze mz mogloby wejsc
    > - jest to dosyc fundamentalna operacja i
    > wlasnie sporo klopotu jest z robieniem tego
    > samemu, uprosciloby tez kody w polaczeniu
    > z domyslnymi rzutowaniami - chco sa i troche
    > problematyczne kwestie np jesli to by mialo byc
    > na tak niskim poziomie to bledne konwersje
    > musialyby chyba rzucac wyjatkami podobnymi do
    > tych na fpu - no ale to jest wogole odrebny temat

    FPU rzuca wyjątkami w przypadku rzeczy typu dzielenie przez zero czy
    arcsin(-2), nie zajmuje się konwersjami między typami liczbowymi (i ich
    reprezentacjami znakowymi :D) Nie ma najmniejszego kłopotu z robieniem
    tego samemu, bo w bibliotece standardowej praktycznie każdego języka
    masz gotowce dobrze zdefiniowane, wystarczy z nich
    skorzystać. Procesor nie jest od tego aby wnikał czy dana liczba jest
    zapisana po arabsku czy po rzymsku i czy napis 10e3 to zapis
    szesnastkowy 0x10e3 czy liczba rzeczywista 10000, od rozstrzygania
    takich rzeczy jest programista (bo w różnych przypadkach może być
    różnie :D).


  • 44. Data: 2012-10-20 08:57:18
    Temat: Re: coś lajtowego - konsola
    Od: kenobi <p...@g...com>

    >
    >
    > A="10"
    >
    > B=A*2
    >
    >
    >
    > bo coś takiego po prostu świadczy o błędzie programisty i język POWINIEN
    >
    > wymagać zrobienia B=int(A)*2 bo wtedy jest

    no ja mowie wlasnie o czyms takim, domyslne
    konwersje tylko czasem a nie zawsze
    np dla loguj(x)

    jest to troche problematyczne ale nawet juz
    int(float) jest podobnie problematyczne (4ry
    tryby zaokraglania, nawet +(int, int) ma
    wiecej niz jedna wersje - nalezy pomyslec co
    mozna z tym zrobic (ja bym chcial zeby to bylo
    wygodne i konfigurowalne )

    druga rzecz to podzial funkcji na zewnetrzne
    (biblioteczne) i wewnetrzne (intrinsincowe, o ile
    tak mozna nazwac) te odpowiadajace zwyklym operatorom matematycznych sa tez funkcjami

    tylko wewnetrznymi, imo takie podstawowe
    konwersje tez powinny nalezec do tej kategorii
    (w sumie troche odrebna sprawa czy te wewnetrzne
    tez dostawczac w formie dolaczanej biblioteki czy
    nie - ale podzial na te dwie kategorie uwazam
    za istotny i mz konwersja ciag <-> int/double
    raczej powinna miec status intrinsincowego
    operatora)














  • 45. Data: 2012-10-20 10:38:43
    Temat: Re: coś lajtowego - konsola
    Od: kenobi <p...@g...com>

    W dniu piątek, 19 października 2012 09:46:06 UTC+2 użytkownik kenobi napisał:
    > Poniewaz zmeczyly mnie optymalizacje postanowilem
    >
    > zajac sie czyms lzejszym i np zrobic sobie w programie
    >
    > wlasna konsole
    >
    >
    >
    > https://dl.dropbox.com/u/42887985/console.zip
    >
    >

    (konsole tu sie wlacza przez control+end

    dorobilem polecenia back np back xge back ijk
    ktory przelicza trojznakowego stringa a-z na kolor aaa - bialy zzz - czarny

    dorobilem tez gracza melodyjek

    beep zblihbljehbjh

    z tym ze odgrywa litery systemowym beeperem
    na przypadkowych herzach i pytanie jak to
    polepszyc ?


  • 46. Data: 2012-10-21 00:55:00
    Temat: Re: coś lajtowego - konsola
    Od: Baranosiu <r...@w...pl>

    Dnia 20.10.2012 kenobi <p...@g...com> napisał/a:
    >>
    >>
    >> A="10"
    >>
    >> B=A*2
    >>
    >>
    >>
    >> bo coś takiego po prostu świadczy o błędzie programisty i język POWINIEN
    >>
    >> wymagać zrobienia B=int(A)*2 bo wtedy jest
    >
    > no ja mowie wlasnie o czyms takim, domyslne
    > konwersje tylko czasem a nie zawsze
    > np dla loguj(x)

    Możesz podejść do tego tak jak na przykład jest w Javie, masz typ
    'int' (prosty "niskopoziomowy") i masz klasę 'Integer' która ma
    wszystkie "bajery" typu .toString() .pharseInt(String) itd. Nic nie
    stoi na przeszkodzie aby to tak samo zrealizować w C++ (łącznie z
    "automatycznym" konwertowaniem).


    > jest to troche problematyczne ale nawet juz
    > int(float) jest podobnie problematyczne (4ry
    > tryby zaokraglania, nawet +(int, int) ma
    > wiecej niz jedna wersje - nalezy pomyslec co
    > mozna z tym zrobic (ja bym chcial zeby to bylo
    > wygodne i konfigurowalne )

    To że coś jest problemem dla Ciebie, nie znaczy że w ogólności jest
    problemem :D Nie wymagaj od języka programowania, aby rozwiązywał za
    Ciebie problemy, z którymi akurat Ty JESZCZE nie umiesz sobie
    skutecznie poradzić. Wszystko o czym piszesz jest banalnie proste do
    zrealizowania w C++ ale... po prostu trzeba się nauczyć skutecznego
    używania języka w jakim programujesz. Innej opcji nie ma (a już
    najgorsze co można zrobić, to "zepsuć" język i "odciąć" możliwość
    własnego definiowania konwersji typów tylko dlatego, że ktoś chciałby
    mieć automat działający w jeden konkretny sposób :D).


    > druga rzecz to podzial funkcji na zewnetrzne
    > (biblioteczne) i wewnetrzne (intrinsincowe, o ile
    > tak mozna nazwac) te odpowiadajace zwyklym operatorom matematycznych sa tez
    funkcjami
    > tylko wewnetrznymi, imo takie podstawowe
    > konwersje tez powinny nalezec do tej kategorii
    > (w sumie troche odrebna sprawa czy te wewnetrzne
    > tez dostawczac w formie dolaczanej biblioteki czy
    > nie - ale podzial na te dwie kategorie uwazam
    > za istotny i mz konwersja ciag <-> int/double
    > raczej powinna miec status intrinsincowego
    > operatora)

    Zapewniam Cię, że taki język jak C++ nie ma ani jednej funkcji
    "wewnętrznej", wszystkie funkcje są albo zdefiniowane przez
    programistę, albo przez biblioteki. Język natomiast (pomijam
    bibliotekę standardową) definiuje podstawowe typy (nie klasy!) danych
    oraz podstawowe operatory dla tych typów (i tak być musi, bo typy
    wbudowane nie są klasami).
    Jeśli potrzebujesz lepszej funkcjonalności dla typu wbudowanego
    char[], to zwyczajnie zastosuj KLASĘ 'string', albo zdefiniuj swoją
    klasę pochodną od string i zdefiniuj w niej rzutowanie z inta i... po
    sprawie (wrzuć to w swoją bibliotekę i używaj we wszystkich pisanych
    przez siebie programach, jak potrzebujesz wydajności, to zrób wszystko
    na 'inline'). Idea obiektowości jest taka, że definiujesz klasę raz, a
    używasz jej wszędzie w różnych kontekstach. To jest proste jeśli się
    włoży nieco wysiłku w naukę języka i oferowanych przez niego
    możliwości.

    Ty chcesz aby konstrukcja char* A = 1235; powodowała wpisanie pod
    adres A napisu "1235" podczas gdy ja chcę, aby oznaczało to "od tego
    momentu zmienna A wskazuje na komórkę pamięci o adresie 1235". Ty
    chcesz zmiany semantyki języka bo nie umiesz (lub nie chce Ci się)
    napisać prostego rzutowania jednocześnie eliminując z języka
    mechanizm tylko dlatego, że w chwili obecnej z niego nie korzystasz :D
    Nie idę na układ ograniczania funkcjonalności języka tylko dlatego, że
    "ktoś ma z czymś problem" :D


  • 47. Data: 2012-10-21 10:07:30
    Temat: Re: coś lajtowego - konsola
    Od: kenobi <p...@g...com>

    teraz uzywam funkcji Int() i Str() - z lenistwa
    opartych narazie na atoi i itoa,


  • 48. Data: 2012-10-21 17:29:15
    Temat: Re: coś lajtowego - konsola
    Od: Baranosiu <r...@w...pl>

    Dnia 21.10.2012 kenobi <p...@g...com> napisał/a:
    > teraz uzywam funkcji Int() i Str() - z lenistwa
    > opartych narazie na atoi i itoa,

    I jeśli to wystarcza, to jest ok. Jeśli używasz takiego rzutowania
    bardzo często, to zdefiniuj automatyczną konwersję, która będzie
    korzystała z już napisanych przez Ciebie Int() i Str() a jeśli atoi i
    itoa okażą się niewystarczające, to wewnątrz Int() i Str() zmienisz
    implementację tej konwersji (na przykład korzystając z strtol i
    obsługą "błędów konwersji") i to tyle. Przy okazji zysk z tego masz
    taki, że jak się gdzieś pomylisz z użyciem, to kompilator wyrzuci błąd
    i go poprawisz, a gdyby kompilator robił to "za plecami", to nawet nie
    wiedziałbyś, że coś może być nie tak i na przykład szukałbyś błędu w
    metodzie rysowania kwardaru a nie w samej konwersji :D


  • 49. Data: 2012-10-22 08:18:41
    Temat: Re: coś lajtowego - konsola
    Od: g...@s...invalid (Adam Wysocki)

    Baranosiu <r...@w...pl> wrote:

    > Źródła wrzucaj, a nie binarki, bo inaczej część ludzi nie odważy się
    > uruchomić nie wiedząc co jest w środku :D

    Nie przetłumaczysz. Próbowałem.

    Co do braku Win pod ręką, kenobi niestety nie zdaje sobie sprawy z tego, że
    poza Windows jest jeszcze jakiś inny świat i inne systemy.

    --
    Gof
    http://www.chmurka.net/


  • 50. Data: 2012-10-22 08:31:28
    Temat: Re: coś lajtowego - konsola
    Od: g...@s...invalid (Adam Wysocki)

    kenobi <p...@g...com> wrote:

    > z tym ze odgrywa litery systemowym beeperem
    > na przypadkowych herzach i pytanie jak to
    > polepszyc ?

    Tak:

    http://lmgtfy.com/?q=note+frequency+table

    --
    Gof
    http://www.chmurka.net/

strony : 1 ... 4 . [ 5 ]


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: