 |
 |
Av |
 |
Innlegg |
 |
 |
 |
 |
 |
 |
theJack
OoaHelaNatten


Ble Medlem: 12 Apr 2004 Innlegg: 485 Bosted: Oslo
|
Euphoria
Et enklere programmeringsspråk.
Rapid Deployment Software - Euphoria
Superfleksibelt og lettleselig, mange gode editors tilgjengelig med syntaksfarging for å gjøre koding lettere.
Kan brukes til DOS, WINDOWS (finnes hjelpeutstyr som ligner VB) og LINUX.
Kodeeksempelet nedenfor er et utdrag fra en fil. Kommentarer i oransje er ikke en del av filen, men mine egne kommentarer til leseren. TAB# erstatter TAB karakteren i dette innlegget.
Kode
for i = 1 to 10 do
TAB#print(1, i)
TAB#puts(1, '\n')'\n' = 10 mens "\n" = {10} - her ville de fått samme output
-- sprintf(1, "%d\n", i) = print(1, i) puts(1,'\n')
To streker etter hverandre gjør resten av linja til en kommentar i koden. Kommentaren viser en proffere utgave av koden
end for
Output
Kode: | 1 | Skriver ut verdien av i (1), går så til ny linje
2 | Skriver ut den nåværende verdien av i (2)
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 | Skriver siste verdi. I neste runde blir i = 11, grensen er 10.
| Og så lager puts(1,'\n') en ny linje før loopens ende er nådd.
[Her går programmet videre fra loopen]
|
Forklaring:
Objekttyper:
integer
31-bits heltall: Verdier: 0 -> 2^30 -1 og -1 -> -2^30
atom
32-bits, aksepterer desimaltall
sequence
Samling objekter. Antallet objekter begrenses bare av minne.
{} har 0 objekter innenfor
{} = { } =
{
} =
{TAB#}
I nesten alle sammenhenger er TAB, SPACE og CR likeverdige som mellomrom, og antallet mellomrom mellom to uttrykk har ingenting å si. Hele kodeeksempelet kan skrives på en linje, med mellomrom i stedet for nye linjer, men det ville blitt vanskelig å lese.
{'\n'} har 1 objekt ({'\n'} = {10} = "\n")
{'a','n'} 2 objekter ({'a','n'} = "an")
Man kan godt blande objekktyper innenfor en slik samling:
{ 10, '\n', "\n", {10, 15, 92, -77.03}, "ADGF", {{}}, {}, { 0, 15, {}} }
BÃ¥de typene sequence, integer og atom finnes her. Fri orden.
hente informasjon fra sequences:
s = { 10, '\n', "\n", {10, 15, 92, -77.03}, "ADGF", {{}}, {}, { 0, 15, {}} }
dette medfører at:
s[1] = 10 og s[2] = '\n' (som = 10)
s[3] = {10} mens s[3][1] = 10
s[4] = {10, 15, 92, -77.03} s[4][3] = 92
s[5] = "ADGF"
Character strings er litt spesielle, men dere er nok kjent med det allerede. "abc" = {'a','b','c'} og de har tallverdier: { 97, 98, 99 }
Det går ikke an å sette alt mulig rart inn i character strings:
{ 'a', 'b', -3, {}, 'c' } kan ikke skrives innenfor " "
{} = ""
{' '} = " " (space)
Eksempelkode for sequence
sequence s
s = { 10, 15, -12, "AB", {}, {'a'} }
for i = 1 to length(s) do
TAB#print(1, s)
end for
Output
Kode: | 1015-12{65,66}{}97
Her ser vi at det mangler noe, f.eks puts(1, '\n'), som fører til:
10
15
-12
{65,66}
{}
97 |
object
Objekter kan være både sequence og atom. De er dermed mer fleksible enn noe annet, men bruk av en objekttype som godtar alt gjør feilsøking vanskelig. Euphoria er meget godt på feilsøking.
Funksjoner og prosedyrer (function / procedure)
Funksjoner og prosedyrer er kodesnutter som defineres underveis og kan kalles opp senere ved hjelp av deres navn. De defineres med 0 eller flere parametere, som fungerer som lokale variabler innenfor funksjonen/prosedyren. Forskjellen mellom funksjoner og prosedyrer er at funksjonen returnerer en verdi -som alltid må brukes. Den kan skrives til skjermen, eller gis til en variabel. Å kalle opp en funksjon som ikke brukes fører til SYNTAKSFEIL (og programmet ditt lukkes). Prosedyrer har ingen verdi, og det vil medføre syntaksfeil å forsøke å sette en variabel lik resultatet av en prosedyre, eller å bruke "verdien" fra en prosedyre. Siden denne ikke eksisterer.
Prosedyrer brukt:
Definisjon: print( integer FileNumber, object PrintObject )
Filnummeret til skjermen er 1.
Filnummeret til ERROR (skjerm) er 2.
Filnummeret til KEYBOARD er 3. Du kan ikke skrive til fil 3, men rutiner for å lese en fil kan brukes til å lese keyboardet (men ikke skjermen, som man bare skriver til).
Bruk:
print(1, 10) - skriver 10 på skjermen
print(1,'\n') - skriver 10 på skjermen
print(1,"\n") - skriver {10} på skjermen
Definisjon: puts( integer FileNumber, object Characters)
"Characters" er et objekt, men med strengere krav enn det som er vanlig:
Verdien må kunne skrives som: '' (og dermed være en integer)
eller: "" (og dermed være en endimensjonal sequence)
Mellom: to ' skal det alltid være ett tegn
Mellom: to " kan det være 0 eller flere tegn.
Bruk:
puts(1,"APE") - skriver APE
puts(1,"A") - skriver A
puts(1,'A') - skriver A
puts(1,{97,98,99}) - skriver abc
puts(1,{65,66,67}) - skriver ABC
puts(1,{97,98,{}}) - sequence inside character string - ERROR
Definisjon: printf(integer FileNumber,sequence FormatString, object DisplayValues)
FormatString er en character string, men må kunne skrives på formen "" ('' godkjennes ikke, som 'a' istedet for "a")
I FormatString finnes vanlig tekst, og koder:
"%%" - kode som vises som "%"
"%d" - kode som viser heltallverdien av DisplayValues eller et objekt i DisplayValues
Når DisplayValues er av typen atom (eller integer) vil alle kodene bruke denne verdien. Kikk gjerne på den røde kommentaren i det første kodeeksempelet nå. Om DisplayValues er av typen sequence, vil hvert objekt innenfor DisplayValues bli benyttet en gang, korresponderende med kodene i FormatString -fra venstre mot høyre.
Bruk: printf(1, "%d", 10) - skriver 10
i = 12
printf(1, "%d", i) - skriver 12 (verdien av i)
printf(1, "%d %d", 10) - skriver 10 10
printf(1, "%d%d%%", 10) - skriver 1010%
printf(1, "%d%d%d%d", {10, 12, 10, 11} ) - skriver 10121011
printf(1, "%d.%d.%d.%d", {101, 25, 100, 97} ) - skriver 101.25.100.97
Funksjoner:
Definisjon: length(sequence s)
Bruk: x = length({10, 20}) - x = 2
x = length({{},{}}) - x = 2
x = length({}) - x = 0
x = length("abcd") - x = 4
x = length({ {15,16,17}, {12,13}, 11, -4.5 }) - x = 4 - sequence inne i sequence er bare 1 objekt, uansett egen lengde.
length forteller hvor mange objekter en sequence inneholder.
print(1, length({12})) - skriver 1
Kode: |
s = { 99, {68}, {}, 0 }
printf(1, "%d\n", length(s))
printf(1, "%s : %s : %s : %d", s) #%s skriver tekst istedetfor tall ('a' for 97)
|
Output
Kode: |
4
c : D : : 0 # verdi[1] = 99 = 'c' - skriver c på skjermen
# før neste kode: " : " - skriver dette på skjermen
# verdi[2] = {68} = "D" - skriver D på skjermen
# før neste kode: " : " - skriver dette på skjermen
# verdi[3] = {} = "" - skriver derfor en serie på 0 tegn (ingenting)
# før neste kode: " : " - skriver dette på skjermen
# formatet for tall igjen: verdi[4] = 0 - skriver 0 på skjermen
|
Kode: |
printf(1,"%s","Name") # Dette er en vanlig feil
[Resultat: N] # "Name" = {'N','a','m','e'}, type: sequence.
Derfor brukes bare verdi 1 (s[1]) som her er 'N'
printf(1,"%s", {"Name"}) # Dette er den rette løsningen
[Resultat: Name] # { {'N','a','m','e'} } s[1] = {'N','a','m','e'} = "Name"
|
|
Skrevet: Fre 21 Mai 2004, 20:59 |
 |
|
 |
 |
 |
 |
 |
 |
 |
Findus
Spitzy (!)

Ble Medlem: 11 Apr 2004 Innlegg: 176 Bosted: Oslo
|
Eldgammel sak ja, men jeg følte bare for å se litt på hva språket hadde å tilby.
Men jeg må si jeg blir skremt når de som står bak språket påstår følgende:
"...a programming language that's powerful, easy to learn, and a lot more fun than other languages."
Jeg får umiddelbart inntrykk av at det er et elendig språk laget av amatører.
|
Skrevet: Søn 14 Aug 2005, 21:03 |
 |
|
 |
 |
 |
 |
 |
 |
 |
theJack
OoaHelaNatten


Ble Medlem: 12 Apr 2004 Innlegg: 485 Bosted: Oslo
|
Lenge siden sist jeg var her...
Euphoria er ikke et amatørspråk.
Det er likt mange andre språk, men veldig åpent, og baserer seg på "renere" tekst enn en del andre formater, noe som gjør det mye lettere å lese.
Det er helt gratis å drive med, og du finner store mengder nyttige funksjoner og demoer samlet i et stort arkiv.
I tillegg finnes det en wrapper for 3dstate/Morfit som lar deg bruke avansert 3d teknologi med Euphoria. (Mer at du ikke kan skape inntekter herfra uten å ha lisens fra 3dstate)
Powerful, easy to learn and a lot more fun...
Du kan gjøre hva som helst. Virkelig.
Det er intuitivt, logisk, og overgangen til/fra andre språk er ikke vanskelig.
Du kan gjøre hva som helst, igjen.
Det kan fort vise seg å være moro.
Hvis du liker sånt.
|
Skrevet: Tir 16 Aug 2005, 14:08 |
 |
|
 |
 |
 |
 |
 |
 |
 |
hitmark
Främling

Ble Medlem: 19 Mar 2006 Innlegg: 15
|
kan jeg få henvise til python?
|
Skrevet: Søn 19 Mar 2006, 05:21 |
 |
|
 |
 |
 |
 |
 |
 |
 |
theJack
OoaHelaNatten


Ble Medlem: 12 Apr 2004 Innlegg: 485 Bosted: Oslo
|
I all oppriktighet: Jeg arbeider i øyeblikket med C#. Mindre intuitivt enn Euphoria, men mer effektivt. Så lenge det ikke plager meg at alle som skulle bruke noe jeg eventuelt måtte lage har .net framework og Windows-miljø.
Python er sikkert verdt en nærmere undersøkelse på et passende tidspunkt i livet.
|
Skrevet: Søn 19 Mar 2006, 11:06 |
 |
|
 |
 |
 |
 |
Vis Innlegg fra: Sorter etter:
|
 |
 |
|
Du kan ikke starte nye temaer i dette forumet Du kan ikke svare på temaer i dette forumet Du kan ikke endre dine egne innlegg i dette forumet Du kan ikke slette dine egne innlegg i dette forumet Du kan ikke delta i avstemninger i dette forumet
|
|