IJP c.d.

0

W związku z niesamowitą liczbą próśb :P kontynuuję wątek z
http://www.4programmers.net/forum/index.php?action=show&id=22934&c=2

Bardzo ogólny plan:

v I. Nazewnictwo identyfikatorów.
v II. Komentarze.
v III. Elementy rozdzielające.
v IV. Budowa programu (modułów).
v V. Bloki
v VI. Deklaracja modułów.
v VII. Formaty liczb.
v VIII. Łańcuchy znaków.
v IX. "Nalepki"
v X. Typy:
v 1. Predefiniowane typy:
v A. Proste:
v a. Porządkowe:
v - całkowite
v - znakowe
v - boolowskie
v - wyliczeniowe
v - okrojone
v b. Rzeczywiste
v B. Łańcuchowe
v C. Strukturalne
v a. Zbiory
v b. Tablice
v c. Rekordy
v d. Pliki
v e. Klasy
v D. Wskaźnikowe
E. Proceduralne
G. Inne
2. Typy podobne i przyporządkowanie.
3. Definicja typów.
4. Deklaracja zmiennych.
5. Definicja stałych.
XI. Operatory:

  1. Arytmetyczne,
  2. Bitowe,
  3. Logiczne,
  4. Łańcuchów znaków,
  5. Referencyjne (wskaźnikowe),
  6. Operacji na zbiorach,
  7. Porównania,
  8. Operacji na klasach,
  9. Przyporządkowania.
  10. Inne.
    XII. Instrukcje:
  11. Porównania / wybierania.
  12. Iteracji.
  13. Skoku.
    XIII. Funkcje.

Można modyfikować plan i poruszać wcześniejsze punkty. (ale wolałby, żeby zbytnio nie wyprzedzać planu, aby zachować jako taki porządek)

E. Proceduralne
type F = function(Parametry, Funkcji): WartoscZwracana;
Czyli w rzeczywistości wskaźniki do funkcji.
Jeżeli jednak funkcja jest metodą jakiejś klasy to trzeba użyć:
type F = function(Parametry, Funkcji): WartoscZwracana of object;
Te już nie mogą być jak zwykłe wskaźniki :(
--Jest jeszcze jeden błąd ... :)

Apel: Piszcie w tematach o jaki język programowania chodzi np. : [Delphi], [C++], itp.

0

A tak skoro już jesteśmy przy funkcjach, to od razu zacznę punkt G. Inne.
Chodzi o predefinowany typ (a raczej wartość) NULL. Analogicznie jak w C++
Jeżeli jest wymagana liczba to NULL przyjmuje wartość 0, jeżeli wskaźnik to NULL jest odpowiednikiem nil, jeżeli funkcja ma nie zwracać wartości (w C++ void) to tutaj też dajemy NULL. Po prostu NULL to nic ;) (jeszcze trochę się zapędzę i dorzucię NULL do operacji logicznych i będę miał non-sense logic :D )--Jest jeszcze jeden błąd ... :)

Apel: Piszcie w tematach o jaki język programowania chodzi np. : [Delphi], [C++], itp.

0

Jak NULL to dla mnie null z małych liter :). A co do logiki to ciekawy pomysł. Byłby to pierwszy język obsługujący logikę 3wartościową:

tak - true
nie - false
nie wiem - null--Vogel [Delphi 6 PE]

Life is just a dream, you know...
[Cowboy Bebop]

0

Vogel napisał:
Jak NULL to dla mnie null z małych liter :). A co do logiki to ciekawy pomysł. Byłby to pierwszy język obsługujący logikę 3wartościową:
&gt
&gttak - true
&gtnie - false
&gtnie wiem - null
&gt
zapewne powiadam wam ze nie byl by to pierwszy jezyk obslugujacy logike wielowartosciowa :-)

np w vhdl'u mozesz sam sobie ustalic jaka logike wykorzystujesz - standard to logika 9 wartosciowa a mozna stosowac logike 41 wartosciowa ale to juz wyzsza szkola jazdy

pozdrawiam
wojta$--Lets make linux better :-)

0

tak trochę poza tematem to chciałbym poinformować, że pan wojta$ coraz bardziej imponuje mi swoją wiedzą na temat programowania :)

może by pan napisał jakiś artykulik do serwisu? z tego co się orientuje (czytając pana posty) to na pewno mogłoby to być coś o Javie albo C++

ps. sorki za te pan ale jakoś nie wiem jak mam pisać ;)---=-=[ Delphi 3, 6 ]=-=-
-=-=-==[ LKS ]==-=-=-
-=[ [email protected] ]=-

0

wojta$ napisał:
zapewne powiadam wam ze nie byl by to pierwszy jezyk obslugujacy logike wielowartosciowa :-)

np w vhdl'u mozesz sam sobie ustalic jaka logike wykorzystujesz - standard to logika 9 wartosciowa a mozna stosowac logike 41 wartosciowa ale to juz wyzsza szkola jazdy

Jest pewna różnica pomiędzy logiką wielowartościową, a systemami nonsense-logic (choć jak dla mnie możnaby podciągnąć jedno pod drugie). W systemach nonsense-logic są tylko 3 wartości (prawda, fałsz i bezsens/nieokreślność). W systemach wielowartościowych rzeczywiście może tego być więcej.
Ale nie to jest tu istotne. Przy systemach nieklasycznych to można się pogubić. Co prawda logika wielowartościowa mogłaby być świetnym podkładem pod algorytmy symulujące sztuczną inteligencję, ale to samo można zrobić w klasycznej (komputer operuje tylko na dwóch wartościach i my przy tym zostańmy)

A co do tego małymi literami i jako słowo kluczowe to zgadzam się całkowicie :)--Jest jeszcze jeden błąd ... :)

Apel: Piszcie w tematach o jaki język programowania chodzi np. : [Delphi], [C++], itp.

0

Dryobates napisał:
wojta$ napisał:
&gtzapewne powiadam wam ze nie byl by to pierwszy jezyk obslugujacy logike wielowartosciowa :-)
&gt
&gtnp w vhdl'u mozesz sam sobie ustalic jaka logike wykorzystujesz - standard to logika 9 wartosciowa a mozna stosowac logike 41 wartosciowa ale to juz wyzsza szkola jazdy
&gt
&gtJest pewna różnica pomiędzy logiką wielowartościową, a systemami nonsense-logic (choć jak dla mnie możnaby podciągnąć jedno pod drugie). W systemach nonsense-logic są tylko 3 wartości (prawda, fałsz i bezsens/nieokreślność). W systemach wielowartościowych rzeczywiście może tego być więcej.
&gtAle nie to jest tu istotne. Przy systemach nieklasycznych to można się pogubić. Co prawda logika wielowartościowa mogłaby być świetnym podkładem pod algorytmy symulujące sztuczną inteligencję, ale to samo można zrobić w klasycznej (komputer operuje tylko na dwóch wartościach i my przy tym zostańmy)
&gt
&gtA co do tego małymi literami i jako słowo kluczowe to zgadzam się całkowicie :)
&gt
nie zgodze sie z tym ze komputer "operuje" logika dwuwartosciowa - jezeli myslisz tylko o programowaniu to masz racje ale piszac "operuje" mylisz sie bo patrzac od strony elektroniki komputer operuje logika 9 wartosciowa

0
1
slabe 0
slabe 1
wielka impedancja
zmiana z ona 1
zmiana z 1 na 0
stan nieokreslony
i dziewiatego nie pamietam :-)

pozdrawiam
wojta$--Lets make linux better :-)

0

wojta$ napisał:
nie zgodze sie z tym ze komputer "operuje" logika dwuwartosciowa - jezeli myslisz tylko o programowaniu to masz racje ale piszac "operuje" mylisz sie bo patrzac od strony elektroniki komputer operuje logika 9 wartosciowa

Aj, ugryzłem się w język. Ale trzeba się pilnować przy wyrażaniu myśli. Efektywnie możemy (programując) wykorzystać tylko dwie wartości (chyba, że jest jakaś inna możliwość). Jednak dalej jestem za pozostawieniem klasycznej logiki. Ciekawe jak wyglądałaby instrukcja if :D
wojta$ może opowiesz o tym vhdl (albo jakiś link)--Jest jeszcze jeden błąd ... :)

Apel: Piszcie w tematach o jaki język programowania chodzi np. : [Delphi], [C++], itp.

0

Ciekawe jak wyglądałaby instrukcja if :D
&gtwojta$ może opowiesz o tym vhdl (albo jakiś link)
&gt

VHDL

Very High Hardware Description Language
nazwa mowi sama za siebie

instrukcja if - instrukcja sekwencyjna (w vhda wystepoje cala gama instrukcji rownoleglych tzn nie jest wazne w jakim miejscu uzyjesz jakiejs tam funkcji rown. a ona zawsze zadziala prawidlowo i kiedy trzeba - w konco w elektronice wszystkie moduly musza dzialac rownolegle quasi niezaleznie)

np. instrukcja IF

deklaracja jednostki :

entity IF_STATEMENT is
port (A, B, C, X : in bit_vector (3 downto 0);
Z : out bit_vector (3 downto 0);
end IF_STATEMENT;

deklaracje architektury

architecture EXAMPLE1 of IF_STATEMENT is
begin
process (A, B, C, X)
begin
Z &lt= A;
if (X = "1111") then
Z &lt= B;
elsif (X &gt "1000") then
Z &lt= C;
end if;
end process;
end EXAMPLE1;

dobry link to :
http://www.vhdl-online.de/~vhdl/tutorial/

pozdrawiam wojta$--Lets make linux better :-)

0

male poprawki VHDL oznacza
Very High Speed Integrated Circuit Hardware Description Language

windoz mi zjadl kawalek zdania :-)

no i w kodzioe zrodlowym pojawily sie jakies beczace gemby tego
oczywiscie nie ma w kodzie VHDL :-)
zamiast tych ryczacych ryjow powinien byc nawias (

pozdrawiam
wojta$--Lets make linux better :-)

0

wojta$ napisał:
male poprawki VHDL oznacza
Very High Speed Integrated Circuit Hardware Description Language

Wiem. Dziś z rana siedziałem w szkole i szukałem. Tylko, że to jest język do projektowania układów elektronicznych. Nie całkiem o taki język mi chodzi :D
Ale dzięki za linki.

A tak przy okazji to może ktoś jakimś cudem ma w wersji on-line:
Compilers: Principles, Techniques, and Tools - autorzy Aho, Sethi, Ullman
lub
Modern Compiler Implementation - autor Appel

W bibliotece uczelni jest tylko ta pierwsza i to tylko w jednym egzemplarzu dostępnym na miejscu ;( --Jest jeszcze jeden błąd ... :)

Apel: Piszcie w tematach o jaki język programowania chodzi np. : [Delphi], [C++], itp.

0

&gtWiem. Dziś z rana siedziałem w szkole i szukałem. Tylko, że to jest język do projektowania układów elektronicznych. Nie całkiem o taki język mi chodzi :D
&gtAle dzięki za linki.
&gt

... z punktu widzenia teorii jezykow programowania nie ma roznicy czy jezyk programowania sluzy do budowania okienek , ukladow elektronicznych czy wezy ogrodowych nieprawdaz ?

ps VHDL ni powstal do budowania ukladow scalonych tylko do syntezy :-)

pozdrawiam
wojta$
--Lets make linux better :-)

0

wojta$ napisał:
... z punktu widzenia teorii jezykow programowania nie ma roznicy czy jezyk programowania sluzy do budowania okienek , ukladow elektronicznych czy wezy ogrodowych nieprawdaz ?

hmm... Nie da się ukryć :D

Dobra lecimy dalej.
2. Przyporządkowywanie typów. Wydaje mi się, że można to zrobić na zasadach podobnych do tych w Delphi.
Oczywiście u nas nie ma czegoś takiego rozróżnienia jak Char i Byte, a raczej tak jak to jest w C++ (tyle, że u nas to się nazywa Byte). Dlatego np string można zdefiniować jako:
type string[n] = array [0..n] of Byte;
a unicode jako
type unicode[n] = array [0..n] of Word;
{oczywiście od elementu nr 1 zaczyna się numerowanie znaków. 0 to liczba znaków}--Jest jeszcze jeden błąd ... :)

Apel: Piszcie w tematach o jaki język programowania chodzi np. : [Delphi], [C++], itp.

0

Dryobates napisał:

&gttype string[n] = array [0..n] of Byte;
&gta unicode jako
&gttype unicode[n] = array [0..n] of Word;
&gt{oczywiście od elementu nr 1 zaczyna się numerowanie znaków. 0 to liczba znaków}

Ograniczamy sie do krotkich lancuchow??? Bleee, zostaje przy Delphi, nie chce Dry++ czy jak to sie ma nazywac... ;) --Pawel {Delphi 6 Personal}

Po pierwsze: naciśnij F1

0

pq napisał:
Ograniczamy sie do krotkich lancuchow??? Bleee, zostaje przy Delphi, nie chce Dry++ czy jak to sie ma nazywac... ;)

Nie czytałeś wcześniejszego tematu! Przecież była mowa, że są także długie. Po prostu do przykładu było wygodniej podać krótkie :) Jakby nie było dynamicznych tablic (więc także długich łańcuchów) to taki język byłby do bani (ile trzeba się męczyć w TP z tym)--Jest jeszcze jeden błąd ... :)

Apel: Piszcie w tematach o jaki język programowania chodzi np. : [Delphi], [C++], itp.

0
  1. Definicja typów.
    Jak w Delphi.

type Identyfikator = OpisTypu;

Przy definicji identycznej z istniejącym typem np.
type Bajt = Byte;

Bajt jest traktowane jako alias (Bajt i Byte są zgodne i można je na wzajem przyporządkowywać).

Jeżeli chcemy mieć możliwość rozróżniania typów i zakazać zwykłego przyporządkowywania to:
type Bajt = type Byte;--Jest jeszcze jeden błąd ... :)

Apel: Piszcie w tematach o jaki język programowania chodzi np. : [Delphi], [C++], itp.

0

sadze ze idealny bedzie jezyk Ziomal ;]
hyhyhy

--
People=Shit

0

I tak Dryo++ strasznie przypomina Pascala+C :)

--
Vogel [Delphi 6 PE]

Life is just a dream, you know...
[Cowboy Bebop]

0

I tak Dryo++ strasznie przypomina Pascala+C :)

Jasne. Trzeba zebrać to co najlepsze z każdego :) (oprócz tego jeszcze z PowerBasica pomysły). Jak z innych języków coś jeszcze znajdziecie ciekawgo to piszcie.

  1. Deklaracje zmienych:
    var
    Zmienna1, Zmienna2: TypZmiennej;
    Zmienna3: DefinicjaTypu;
    Zmienna4: TypZmiennej = WartośćPoczątkowa; {zarówno do zmiennych globalnych jak i lokalnych. Może też być wyrażenie stałe. Możliwa jest też inicjalizacja kilku zmiennych tą samą wartością. Nie można inicjalizować zmiennych typu plikowego i dynamicznych}
    Zmienna5: Typ absolute Zmienna1; {zajmuje to samo miejsce w pamięci}
    W przeciwieństwie do Delphi zmienne globalne nie powinny być automatycznie ustawiane na 0 w przypadku braku inicjalizacji (zawsze to oszczędność czasu procesora)

--
Jest jeszcze jeden błąd ... :)
--------Oficjalny kanał----------
Service for programmers w IRC:
Kanał: #4programmers.net
Serwer: warszawa.ircnet.pl
Sieć: POLNet
Port: 6667

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