Co oznacza symbol strzałki w Pascalu?

0

Mam taki oto fragment kodu do przetłumaczenia na język C:

function L(w: integer): pref;
var h: pref;
begin h:=poczatek; koniec↑.klucz;=w;
while h↑.klucz<>w do h:=h↑.nast;
if h=koniec then
begin new(koniec); z;=z+1; h↑.licznik:=0; h↑.slad:=nil; h↑.nast:=koniec end;
L=h;
end

dochodzę do:

pref functionL (int w){
pref h;
h=poczatek;
koniec.klucz=w;

while(h.klucz!=w)
h=h.nast;

if(h=koniec)
{
  new(koniec);
  z=z++;
  h.licznik=0;
  h.slad=0;
  h.nast=koniec
}

i teraz moje pytanie:

koniec↑.klucz;=w;

czy to oznacza wskaźnik: koniec.klucz=w? I co oznacza końcowe L=h;?

dodanie znaczników <code class="delphi"> i <code class="c"> - @furious programming

2

i teraz moje pytanie:

koniec↑.klucz;=w;
czy to oznacza wskaźnik: koniec.klucz=w? I co oznacza końcowe L=h; ?

Ten znak ? Na ~100% taki znak nie występuje w składni żadnego języka programowania;

Jeśli zmienna koniec to jakichś wskaźnik, to w miejscu tej dziwnej strzałki powinien być znak daszku - ^; To oznacza, że odwołujemy się do wartości spod wskaźnika, a nie używamy samego wskaźnika; Kolejnym znakiem jest kropka, więc Twój dziwny zapis to zapewne przypisanie wartości do pola rekordu, posiadając wskaźnik na utworzoną w pamięci strukturę;

Czyli poprawny składniowo zapis powinien wyglądać tak:

koniec^.klucz := w;

A co ten kod robi to nie wiem i szczerze mówiąc nie chcę wiedzieć; Sam wiedziałbyś, gdyby "gieniuś" który go pisał, używał sensownych identyfikatorów dla zmiennych, a nie jednoliterowych i nic nie mówiących nazw.

0

Właśnie też mi się tak wydawało, a nigdzie nie mogłem znaleźć info o takiej strzałce.. Kod dostaliśmy żeby przepisać na język C, a to tylko fragment. Dzięki za odpowiedź.

2

@evergreen - żeby przeportować kod z jednego języka na drugi, trzeba dobrze znać i jeden i drugi język; Poza tym ten kod w Delphi to jakaś tragedia - kompletnie nieczytelny przez te wcięcia i identyfikatory, do tego błędy składniowe; Po sformatowaniu, kod powinien wyglądać tak:

function L(w: integer): pref;
var
  h: pref;
begin
  h := poczatek; 
  koniec^.klucz := w;

  while h^.klucz <> w do
    h := h^.nast;

  if h = koniec then
  begin
    new(koniec);
    z := z + 1;
    h^.licznik := 0;
    h^.slad := nil;
    h^.nast := koniec
  end;

  L = h;
end;

Coś mi się wydaje, że celowo w tym kodzie zostało wprowadzone takie zamieszanie.

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