Ocaml < Sonstige < Programmiersprachen < Praxis < Informatik < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 15:05 Do 09.10.2008 | Autor: | csak1162 |
Aufgabe | Geben sie für die folgenden FUnktionen
String.length
print_endline
print_string
print_char
print_newline
den jeweiligen Typ an und beschreiben Sie die Arbeitsweise für jede Funktion anhand eines kurzen Beispiels genauer |
wir sind in der Vorlesung nicht mehr bis dahin gekommen, und ich weiss jetzt nicht, was ich machen soll
# let name = "Informatik"
;;
val name : string = "Informatik"
# String.length name;;
- : int = 10
# print_endline name;;
Informatik
- : unit = ()
# print_string;;
- : string -> unit = <fun>
# print_char name;;
Characters 11-15:
print_char name;;
^^^^
This expression has type string but is here used with type char
# print_string name;;
Informatik- : unit = ()
# print_newline name;;
Characters 14-18:
print_newline name;;
^^^^
This expression has type string but is here used with type unit
# name;;
- : string = "Informatik"
# String.sub name 0 4;;
- : string = "Info"
#
das erhalte ich, wenn ich es in OCaml eingebe, was bedeutet das jetzt
bei length werden die Buchstaben gezählt, oder??
und string.sub schneidet irgendwo ab, aber bei den anderen habe ich keine Ahnung, weiß jemand was ich da tun soll, bzw, was das bedeutet oder wie das geht??
danke
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 16:09 Do 09.10.2008 | Autor: | csak1162 |
Aufgabe | Geben Sie den String "Hello World!!" mit HIlfe einer entsprechenden, bereits in OCaml verhandenen Fuktion aus |
muss ich da einfach print_string eingeben oder etwas anderes??
|
|
|
|
|
Hallo,
das funktioniert doch, oder? Wenn also nicht ausdrücklich etwas anderes verlangt wurde, geht es mit dieser Funktion.
Gruß
Martin
|
|
|
|
|
Hallo,
vielleicht wirfst du mal am besten einen Blick auf diese Dokumentation. Da sind all diese Funktionen kurz beschrieben.
Gruß
Martin
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 14:16 So 12.10.2008 | Autor: | csak1162 |
wei erkenne ich, welchen Typ diese Funktionen haben??
danke
|
|
|
|
|
Hallo,
einfach den Funktionsnamen eintippen, mit ;; abschließen und fertig. Es wird der entsprechende Typ vom Interpreter angezeigt.
Gruß
Martin
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 15:01 So 12.10.2008 | Autor: | csak1162 |
welches ist jetzt der Typ in diesem Beipiel???
string, int oder fun
# String.length;;
- : string -> int = <fun>
steh grad voll auf der Leitung!
danke
|
|
|
|
|
Hallo,
nun, es könnte sein, dass du da etwas von der funktionalen Programmierung nicht verstanden hast. String.length ist eine Funktion mit dem Typ string -> int. Das bedeutet, dass man diese Funktion auf einen string anwenden kann und das Ergebnis vom Typ int ist.
Interessanter ist es z.B. bei der Funktion String.sub: Die hat den Typ string -> int -> int -> string. Das bedeutet:
1. Wendet man die Funktion auf einen String an, erhält man eine Funktion vom Typ int -> int -> string.
2. Wendet man die Funktion auf einen string und einen itn an, erhält man eine Funktion vom Typ int -> string.
3. Wendet man die Funktion auf einen string und zwei ints an (was du wahrscheinlich brauchen wirst), erhält man einen string.
Gruß
Martin
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 15:06 So 12.10.2008 | Autor: | csak1162 |
bei diesem Befehl stehe ich irgendwie auf der Leitung, was macht der genau und wieso bekomme ich hier eine Fehlermeldung???
# print_newline "Informatik;;
Characters 14-18:
print_newline "Informatik";;
^^^^
This expression has type string but is here used with type unit
|
|
|
|
|
Hallo,
in meinem anderen Beitrag habe ich die Funktion print_endline erwähnt! Du kannst ja den Typ von print_newline herausfinden. Du wirst sehen, da passt dein string nicht dazu.
Gruß
Martin
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 19:16 Sa 11.10.2008 | Autor: | csak6632 |
Aufgabe | Schreiben sie eine Funktion, die einen String beliebiger L¨ange sowie bestehend aus
beliebigen Zeichen, vertikal statt horizontal darstellt (in jeder Zeile ein Zeichen des
Strings). Geben Sie als letzte Zeile zus¨atzlich den String ENDE aus (2 Punkte). |
Koennten Sie mal mit dieser Uebung helfen, ich hab' schnon ganzen Tag im Internet gesurft und nix gefunden. Vielen Dank im voraus!> Geben sie für die folgenden FUnktionen
>
> String.length
> print_endline
> print_string
> print_char
> print_newline
>
>
> den jeweiligen Typ an und beschreiben Sie die Arbeitsweise
> für jede Funktion anhand eines kurzen Beispiels genauer
> wir sind in der Vorlesung nicht mehr bis dahin gekommen,
> und ich weiss jetzt nicht, was ich machen soll
>
>
> # let name = "Informatik"
> ;;
> val name : string = "Informatik"
> # String.length name;;
> - : int = 10
> # print_endline name;;
> Informatik
> - : unit = ()
> # print_string;;
> - : string -> unit = <fun>
> # print_char name;;
> Characters 11-15:
> print_char name;;
> ^^^^
> This expression has type string but is here used with type
> char
> # print_string name;;
> Informatik- : unit = ()
> # print_newline name;;
> Characters 14-18:
> print_newline name;;
> ^^^^
> This expression has type string but is here used with type
> unit
> # name;;
> - : string = "Informatik"
> # String.sub name 0 4;;
> - : string = "Info"
> #
>
>
> das erhalte ich, wenn ich es in OCaml eingebe, was bedeutet
> das jetzt
>
>
> bei length werden die Buchstaben gezählt, oder??
> und string.sub schneidet irgendwo ab, aber bei den anderen
> habe ich keine Ahnung, weiß jemand was ich da tun soll,
> bzw, was das bedeutet oder wie das geht??
>
>
> danke
>
>
|
|
|
|
|
Hallo,
eine Funktion, die die Ausgabe immer mit einem Zeilenumbruch beendet, kennst du schon: print_endline.
Du benötigst nun eine rekursive Funktion, die immer das erste Zeichen des Strings mit Zeileumbruch am Ende ausgibt und sich rekursiv auf dem Rest des Strings aufruft. Sobald der String aber leer ist (Länge 0), soll die Funktion nur noch "ENDE" ausgeben.
Du brauchst hier vor allem die Stringfunktionen, die dir zur Verfügung stehen, wenn du eingibst:
#use "string.ml";;
Die Fallunterscheidung nach Länge des Strings würde ich mit
match ... with ...
realisieren.
Zum Nachschlagen reichen mir persönlich die beiden Links: A Concise Introduction to Objective Caml
und The Objective Caml system release 3.10, bin aber auch kein Experte.
Gruß
Martin
|
|
|
|