2023-07-24, 14:11
  #13
Citat:
Ursprungligen postat av PissBuss
Det r ca. alltid svrt, eller s r det trivial kod av ringa omfng.

Snutten du visade r trivial kod av ringa omfng, man ser hela och kan flja referenserna nstan utan att flytta blicken. Det r ocks i princip ltt att konvertera den till en 'state machine' i ca. vilket annat hgnivsprk som helst, men inte speciellt trevligt i praktiken eftersom du har lagt in evigt loopande i den.
Jag vet att det r fullt mjligt att konvertera den, men jag misstnker att koden skulle se riktigt brutal ut
Citera
2023-07-24, 14:19
  #14
Medlem
PissBusss avatar
Citat:
Ursprungligen postat av SvenHelsing
Jag vet att det r fullt mjligt att konvertera den, men jag misstnker att koden skulle se riktigt brutal ut

Nej, inte speciellt. Det r f och enkla predikat, och f 'states'. Du kan lsa mer och prva sjlv genom att kombinera namnet p ditt favoritsprk och termer som 'state machine', 'automata'.

Ute i det vilda r applikationer typiskt sett lngt mer komplicerade n den snutten, bl.a. fr att man frsker se till att eviga loopar inte kan uppst och fr att den verklighet man gr en modell av r jvligt grtig.
Citera
2023-07-24, 14:37
  #15
Citat:
Ursprungligen postat av PissBuss
Nej, inte speciellt. Det r f och enkla predikat, och f 'states'. Du kan lsa mer och prva sjlv genom att kombinera namnet p ditt favoritsprk och termer som 'state machine', 'automata'.
Inte fr att vara otrevlig, men jag knner lite "snacka gr ju" ver ditt resonemang. Har noll problem med att se en dfa som gr det dr, men nu var det inte riktigt en sdan jag menade.

Citat:
Ute i det vilda r applikationer typiskt sett lngt mer komplicerade n den snutten, bl.a. fr att man frsker se till att eviga loopar inte kan uppst och fr att den verklighet man gr en modell av r jvligt grtig.
Jod, jag vet. Jag jobbar som utvecklare.
Citera
2023-07-24, 14:58
  #16
Moderator
vhes avatar
Citat:
Ursprungligen postat av nerdnerd
GOTO ska man ju helst inte anvnda, men jag vet iaf en bank dr det anvnds systematiskt i deras COBOL-koder fr att snabbt ta sig ur loopar nr det blir generalknas.

Man blir frlten om man dper om goto till throw eller raise, och kallar det hela fr "exceptions". D r det tydligen inte lngre ondska ;-)
Citera
2023-07-24, 15:07
  #17
Moderator
vhes avatar
Nej, trtt terpostande av Chat GPT-genererad kod undanbeder vi oss. Om trden specifikt handlar om AI-genererad kod (vilket den hr inte gr) kan utdrag vara OK, men inte bara sjok av oformaterad kod utan vidare analys.

Pminner ven om kodtaggar. Ls https://www.flashback.org/announcement.php?f=42

/Moderator
Citera
2023-07-24, 15:42
  #18
Medlem
Aransentins avatar
En direktversttning av koden till C hade sett ut ngot liknande: https://godbolt.org/z/GWbecs8dq

Att gra koden mer idiomatisk lmnar jag som en vning till lsaren.
Citera
2023-07-24, 21:38
  #19
Medlem
Citat:
Ursprungligen postat av Lund-NoGo-zone
Jo, problemet med GOTO r mycket riktigt att den som anvnder detta gr det av bekvmlighet och visar att han inte riktigt satt sig in i problemet med vad han ska lsa. Utan provar lite hipp som happ och DR fungerade koden! Vilket inte r ett bra stt att koda.

Problemet r att om den som programmerar p det sttet bara dogmatiskt skippar goto s blir det antagligen samma rra. Man lser allts inte det problemet genom att bara dogmatiskt frbjuda goto.

Dessutom finns det tillfllen dr goto r att fredra och om man d dogmatiskt mste avst frn det s blir man tvungen att anvnda rtt krystade konstruktioner och d har man ju dogmen inte tjnat ngot vettigt syfte.

Citat:
Ngon datatidning gjorde en kodanalys av apples frsta IOS. Tnkt dig 1 miljon GOTOs. man frstr varfr de stora firmorna har 1000-tals programmerare. Fr att rtta de andra 1000 programmerarnas fel. IOS hade kunnat skrivas av 5 genier och blivit perfekt, men det fungerar inte s.

Skulle vilja ha klla p det. Vilken datatidning r det som har kllkoden till frsta IOS?

Citat:
Ursprungligen postat av SvenHelsing
Faktiskt r "riktig" spagettikod relativt svr att stadkomma utan goto.

Det r inte srledes svrt, det gller bara att vara lite kreativ. Med for-switch kan f samma kodstruktur som med goto med den lilla detaljen att det blir n mer svrlst.
Citera
2023-07-24, 21:49
  #20
Medlem
Enterprises avatar
Citat:
Ursprungligen postat av 53280
Jttegamla basic kod som jag hittade p ngonstans p ntet. Hur skulle ni skriva om denna kod i C , s den gick att kompilera med GCC och kra p terminalen i Linux / Mac OS.

Kod:
5 REM Mandelbrot
10 X1=59:Y1=21
20 I1=-1:I2=1:R1=-2:R2=1
30 S1=(R2-R1)/X1:S2=(I2-I1)/Y1
40 FOR Y=0 TO Y1
50 I3=I1+S2*Y
60 FOR X=0 TO X1
70 R3=R1+S1*X:Z1=R3:Z2=I3
80 FOR N=0 TO 30
90 A=Z1*Z1:B=Z2*Z2
100 IF A+B>4 THEN GOTO 130
110 Z2=2*Z1*Z2+I3:Z1=A-B+R3
120 NEXT N
130 IF N=31 THEN PRINT " "; ELSE PRINT CHR$(62-N);
140 NEXT X
150 PRINT
160 NEXT Y
170 END
Knns som en utmrkt vning fr ChatGPT.
Jag ser inte framfr mig att det r svrt att skriva fr hand i C heller.
Vad betyder kolon emellan t.ex. p rad 10, r det som semikolon i c?
Citera
2023-07-24, 22:13
  #21
Medlem
Enterprises avatar
Citat:
Ursprungligen postat av dusugermer
Varsgod:
Bra! Tnk bara om du hade kod-taggat:
Kod:
#include <stdio.h>

int main() {
  
int X1 59Y1 21N;
  
double I1 = -1I2 1R1 = -2R2 1S1S2I3R3Z1Z2AB;

  
S1 = (R2 R1) / X1;
  
S2 = (I2 I1) / Y1;

  for (
int Y 0<= Y1Y++) {
    
I3 I1 S2 Y;
    for (
int X 0<= X1X++) {
      
R3 R1 S1 X;
      
Z1 R3;
      
Z2 I3;
      for (
0<= 30N++) {
        
Z1 Z1;
        
Z2 Z2;
        if (
4) break;
        
Z2 Z1 Z2 I3;
        
Z1 R3;
      }
      if (
== 31)
        
printf(" ");
      else
        
printf("%c"62 N);
    }
    
printf("\n");
  }
  return 
0;

Citera
2023-07-24, 22:15
  #22
Medlem
dusugermers avatar
Citat:
Ursprungligen postat av Enterprise
Tnk bara om du hade kod-taggat:
Kod:
#include <stdio.h>

int main() {
  
int X1 59Y1 21N;
  
double I1 = -1I2 1R1 = -2R2 1S1S2I3R3Z1Z2AB;

  
S1 = (R2 R1) / X1;
  
S2 = (I2 I1) / Y1;

  for (
int Y 0<= Y1Y++) {
    
I3 I1 S2 Y;
    for (
int X 0<= X1X++) {
      
R3 R1 S1 X;
      
Z1 R3;
      
Z2 I3;
      for (
0<= 30N++) {
        
Z1 Z1;
        
Z2 Z2;
        if (
4) break;
        
Z2 Z1 Z2 I3;
        
Z1 R3;
      }
      if (
== 31)
        
printf(" ");
      else
        
printf("%c"62 N);
    }
    
printf("\n");
  }
  return 
0;

Tackar. Insg det fr sent och orkade inte redigera.
Citera
vhes avatar

Moderatormeddelande

Postat av vhe 2023-07-24, 22:17
Moderator
Men fr helvete. Anvnd kodtaggar nr ni postar kod. vertrdelse kommer leda till Varning.

/Moderator
2023-07-24, 23:05
  #24
Medlem
Citat:
Ursprungligen postat av 53280
Jttegamla basic kod som jag hittade p ngonstans p ntet. Hur skulle ni skriva om denna kod i C , s den gick att kompilera med GCC och kra p terminalen i Linux / Mac OS.

Kod:
5 REM Mandelbrot
10 X1=59:Y1=21
20 I1=-1:I2=1:R1=-2:R2=1
30 S1=(R2-R1)/X1:S2=(I2-I1)/Y1
40 FOR Y=0 TO Y1
50 I3=I1+S2*Y
60 FOR X=0 TO X1
70 R3=R1+S1*X:Z1=R3:Z2=I3
80 FOR N=0 TO 30
90 A=Z1*Z1:B=Z2*Z2
100 IF A+B>4 THEN GOTO 130
110 Z2=2*Z1*Z2+I3:Z1=A-B+R3
120 NEXT N
130 IF N=31 THEN PRINT " "; ELSE PRINT CHR$(62-N);
140 NEXT X
150 PRINT
160 NEXT Y
170 END

Varfr chatgpt:ar du inte sdant? Fr du ett bra instuderingsexempel i samma vnda.
__________________
Senast redigerad av bosscs2 2023-07-24 kl. 23:09.
Citera

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in