[C] String an main übergeben

Gast #3310424
Lesenswert?

Hallo,
ich haette eine kleine Frage und zwar habe ich versucht eine 
Zeichenkette vom UP ans HP zu übergeben aber irgendwie hat es nicht 
funktioniert. Ich hoffe ihr helft mir da weiter.

Zum Beispiel:

int main()
{
  printf(" %s ", UP() ) ;
}

char UP()
{
  char string[10];

  strcpy(string, "Hallo");

  return string[10];
}

Habe irgendwo gelesen, dass ich es mit Zeigern machen sollte, wenn ich 
mich nicht irre oder sollte es eigentlich auch so gehen?

Und wenn es nur mittel Zeigern geht, wie genau soll ich eine 
Zeichenkette als String deklarieren kenne mich leider noch nicht so gut 
aus.

Danke :)
Gast #3310435
Lesenswert?

Dir direkt eine fertig Lösung zu Deiner Frage zu geben ist aus meiner 
Sicht nicht gut.
Du sollest dich mal etwas näher mit der Sprache C befassen. Schau mal 
nach dem Buch von K&R oder für den schnellen Einstieg "C für Dummies", 
das heisst wirklich so und soll keine Beleidigung sein.

MAD
Gast #3310459
Lesenswert?

Ok danke werde es mit dem versuchen schaut gut aus.. Ich versuche C zu 
lernen und habe auch einiges darüber gelesen aber so mit Zeigern bin ich 
noch nicht so gut vertraut aber werde mich hoffentlich verbessern. Danke
Gast #3310925
Lesenswert?

Ich habe ein also Programm geschrieben und es funktioniert auch fast, 
jedoch wenn ich dann im HP die Strings ausgebe:

printf("Ihre Bestellung:   %s,   %s,   %s...", steak(), Garung(), 
Belage() );

dann gibt er mir nicht nur die Strings, die ich übergebe aus sondern 
durchläuft die Unterprogramme ein zweites mal. Woran koennte es liegen 
kann mir da jemand helfen? Danke
#3310935
Lesenswert?

http://www.mikrocontroller.net/articles/String-Verarbeitung_in_C#Wie_schreibt_man_eine_Funktion.2C_die_einen_String_liefert.3F

Wie schon gesagt: Du BRAUCHST Literatur!

Ja, in C stößt man schnell in Bereiche vor, die man mit 20% Halbwissen, 
die man sich auf diversen Webseiten und Foren zusammenschnorrt, nicht 
mehr vernünftig mit Try and Error lernen kann.

Daher: Buch durcharbeiten!
Gast #3310938
Lesenswert?

Wegstaben Verbuchsler schrieb:
> Mücahit schrieb:
>> Woran koennte es liegen
>> kann mir da jemand helfen? Danke
>
> solange du nicht das ganze Programm postest, ist das alles rum-unkerei.

Das ist also mein Programm und bei der Ausgabe werden die Strings die 
ich übergebe nicht einfach ausgegeben sondern nochmal durchlaufen.. 
verstehe ich nicht:
1
# include <stdio.h>
2
# include <conio.h>
3
# include <ctype.h>
4
# include <string.h>
5

6
char *steak();
7
char *Garung();
8
char *Belage();
9
void ausgabe();
10

11
int main()
12
{
13
  int c;
14
  printf("Guten Tag, was haetten Sie gerne zum Essen\? \nWenn Sie moechten kann ich Ihnen alles aufzaehlen (betaetigen Sie \"j\") "
15
       "und wenn Sie schon informiert sind, was es heute gibt, dann betaetigen Sie ein anderes Zeichen:\n");
16
  c=getchar();
17
  toupper(c);
18
  if(c=='j')
19
  {
20
    printf("\nVerfuegbare Steaks: \nT-bone\nSirloin steak\nRib eye\n\nDie verschiedenen Garungszustände sind:\nrare\nmedium rare\nwell done\n\nAls Beilagen gibt es:\nBrot\nErdaepfel\n\tPommes Frites"
21
        "\n\tWedges\n\tgebacken\nmit Knoblauchsauce\nmit French-Dressing\nmit Butter");
22
  }
23
  else printf("Ok gut, dass Sie es wissen\n");
24

25

26
  
27
  steak();
28
  Garung();
29
  Belage();
30

31
  ausgabe();
32
  
33

34
  getch();
35
  return 0;
36
}
37

38
char *steak()
39
{
40
  int eingabe;
41
  static char steakwahl[10];
42

43
  printf("Waehlen Sie bitte den Steak: \n1. T-bone\n2. Sirloin\n3. Rib eye\n");
44

45
  scanf("%d", &eingabe);
46

47
  switch (eingabe)
48
  {
49
  case 1: strcpy(steakwahl,"T-bone");
50
    //  steakwahl[6]='\0';
51
      break;
52
  case 2: strcpy(steakwahl,"Sirloin");
53
    //  steakwahl[7]='\0';
54
      break;
55
  case 3: strcpy(steakwahl,"Rib-eye");
56
    //  steakwahl[7]='\0';
57
      break;
58
  default: printf("Falsche Eingabe");
59
    
60
  }
61
  printf("Sie haben %s gewaehlt", steakwahl);
62

63
  return steakwahl;
64

65
  
66

67
}
68

69
char *Garung()
70
{
71
  int eingabe;
72
  static char garwahl[12];
73

74
  printf("\n\nWaehlen Sie bitte den Garungszustand: \n1. rare\n2. medium rare\n3. well done\n");
75

76
  scanf("%d", &eingabe);
77

78
  switch (eingabe)
79
  {
80
  case 1: strcpy(garwahl,"rare");
81
    //  garwahl[4]='\0';
82
      break;
83
  case 2: strcpy(garwahl,"medium rare");
84
      //garwahl[11]='\0';
85
      break;
86
  case 3: strcpy(garwahl,"well done");
87
    //  garwahl[9]='\0';
88
      break;
89
  default: printf("Falsche Eingabe");
90
    
91
  }
92
  printf("Sie haben %s gewaehlt", garwahl);
93
  return garwahl;
94

95
}
96

97
char *Belage()
98
{
99
  int eingabe, Erdaepfel, sauce;
100
  static char belwahl[35];
101

102
  printf("\n\nWaehlen Sie bitte die Beilage: \n1. Brot\n2. Erdaepfel\n \tPommes(1), Wedges(2)\n\tsauce: Knoblauchsauce(1)\nFrench-Dressing(2)\nButter(3)");
103

104
  scanf("%d", &eingabe);
105

106
  switch (eingabe)
107
  {
108
  case 1: strcpy(belwahl,"Brot");
109
      belwahl[4]='\0';
110
      break;
111
  case 2: strcpy(belwahl,"Erdaepfel");
112
      
113
      printf("\n Pommes (1) oder Wedges(2)\? ");
114
        scanf("%d", &Erdaepfel);
115
        if(Erdaepfel==1)
116
          strcat(belwahl, "-Pommes");
117
        else
118
          strcat(belwahl, "-Wedges");
119

120
        printf("Welche Sauce\? Knoblauchsauce(1), French-Dressing(2) oder einfach mit Butter(3)\? ");
121
        scanf("%d", &sauce);
122
        if(sauce==1)
123
        {
124
          strcat(belwahl, "-Knoblauchsauce");
125
          //belwahl[11]='\0';
126
        }
127
        else if (sauce==2)
128
        {
129
          strcat(belwahl, "-French-Dressing");
130
          //belwahl[11]='\0';
131
        }
132
        else if(sauce==3)
133
        {
134
          strcat(belwahl, "-Butter");
135
          //belwahl[11]='\0';
136
        }
137
        
138
      break;
139

140

141
  default: printf("Falsche Eingabe");
142
  
143
    
144
  }
145

146
  printf(" %s gewaehlt\n", belwahl);
147

148
  return belwahl;
149

150
}
151

152
void ausgabe()
153
{
154
    printf("Ihre Bestellung:   %s,   %s,   %s...", steak(), Garung(), Belage() );
155
}
Gast #3310941
Lesenswert?

Mücahit schrieb:
> bei der Ausgabe werden die Strings die
> ich übergebe nicht einfach ausgegeben sondern nochmal durchlaufen.

Du rufst die Funktionen (z. B. steak()) auch zweimal auf:
1. in main ()
2. in ausgabe ()

Ergo werden sie zweimal durchlaufen. Alles Ok, alles wie programmiert.
#3310943
Lesenswert?

Mücahit schrieb:

> Das ist also mein Programm und bei der Ausgabe werden die Strings die
> ich übergebe nicht einfach ausgegeben sondern nochmal durchlaufen..
> verstehe ich nicht:

Dann geh dein Programm mit dem Debugger in Einzelschritten durch.

Hier
>
1
> ...
2
>   else printf("Ok gut, dass Sie es wissen\n");
3
> 
4
> 
5
> 
6
>   steak();
7
>   Garung();
8
>   Belage();
9
> ...

werden die Funtkionen aufgerufen und gehen ihre Logik durch.
Und hier

>
1
> ...
2
>   ausgabe();
3
> ...

und damit in weiterer Folge hier
>
1
>
2
> void ausgabe()
3
> {
4
>     printf("Ihre Bestellung:   %s,   %s,   %s...", steak(), Garung(), 
5
> Belage() );
6
> }
7
>

gleich nochmal.
Die Funktionen steak(), ... machen eben nicht NUR die Ausgabe, sondern 
auch die entsprechenden Abfragen. Und daher siehst du die alle doppelt. 
Denn die Funktionen werden ja 2 mal aufgerufen.

Freunde dich mit deinem Debugger an. Du wirst ihn noch lieben lernen.
#3310955
Lesenswert?

Mücahit schrieb:
> Und wie kann ich NUR die übergebebnen Strings ausgebenohne sie nochmal
> zu durchlaufen?
> Danke

Indem du dir klar machst, dass du 2 Teilaufgaben hast:
* Bestimmen der notwendigen Strings
* Ausgaben der Strings

Und diese beiden Teilaufgaben werden voneinander getrennt. Aufgabe der 
Funktion steak() ist es NICHT, sich um die Ausgabe zu kümmern. Die soll 
feststellen was der Benutzer will. DIe Funktion liefert dieses Ergebnis, 
welches sich der Aufrufer merken muss.
Der Aufrufer gibt dann dieses gemerkte an die Ausgabe weiter, welche 
dann die Ausgabe durchführt. Dazu braucht aber keiner mehr die Funktion 
steak(), denn die ist ja für die Ausgabe nicht zuständig.

Wenn dir das nicht klar ist, dann bist du in deinem Lerntempo zu schnell 
vor gegangen. Geh noch mal ein paar Stufen zurück und kauf dir ein 
C-Lehrbuch, welches dir systematisch auch grundlegende 
Programmstrukturen beibringt.

Und: Dir schwant vielleicht schon, warum man derartige Dinge selten 
dadurch macht, dass man Strings durch die einzelnen Funktionen schiebt, 
sondern indem man für alles Codezahlen vereinbart.
Die Funktion für die Beilage liefert zb die Codezahl 5 (einen int) wenn 
der Benutzer Kartoffeln ausgewählt hat, und erst die Funktion für die 
Ausgabe schreibt dann anhand der 5 den Text "Wedges" auf die Anzeige.
Gast #3310960
Lesenswert?

Oberlehrer schrieb:
> Du musst die strings zur Verwendung speichern.

Was meinst du genau mit zur Verwendung speichern?

Es hat doch vorher immer ganz leicht funktioniert wenn jz ein UP einfach 
was gerechnet hat und ich mit zb printf("%d", adiieren()); ausgegeben 
habe, hat er das UP nicht nochmal durchlaufen irgendwie verstehe ich 
nicht warum er das hier so macht...
#3310961
Lesenswert?

Mücahit schrieb:
> Oberlehrer schrieb:
>> Du musst die strings zur Verwendung speichern.
>
> Was meinst du genau mit zur Verwendung speichern?

Na speichern eben!

Eine Variable anlegen und die kriegt einen Wert!
1
int foo()
2
{
3
  return 5;
4
}
5

6
int main()
7
{
8
  int j;
9

10
  j = foo();   // Das Ergebnis, welches foo liefert, wird in j gespeichert.
11

12
  printf( "%d\n", j );
13
}


> Es hat doch vorher immer ganz leicht funktioniert

Tu dir selbst einen Gefallen, kauf dir ein C-Buch und fang von vorne an 
das durchzuarbeiten. Mit deinem 5% Wissen kommst du nicht weit. Man 
merkt, dass dir hinten und vorne fast alles an Wissen fehlt und dein 
Denkmodell komplett daneben ist.

>  irgendwie verstehe ich nicht warum er das hier so macht...

In Kurzform: Weil das genau das ist, was du programmiert hast!
Gast #3310965
Lesenswert?

Karl Heinz Buchegger schrieb:
> Und: Dir schwant vielleicht schon, warum man derartige Dinge selten
> dadurch macht, dass man Strings durch die einzelnen Funktionen schiebt,
> sondern indem man für alles Codezahlen vereinbart.
> Die Funktion für die Beilage liefert zb die Codezahl 5 (einen int) wenn
> der Benutzer Kartoffeln ausgewählt hat, und erst die Funktion für die
> Ausgabe schreibt dann anhand der 5 den Text "Wedges" auf die Anzeige.

Das kommt darauf an! Hier könnte wahlfreier Text zur Anzeige gebracht 
werden. Deine Variante wird genutzt, wenn die Eingabemenege begrenzt ist 
und nur eine Auswahl darstellt. Was aber i. d. R. so ist.
;-)))
Gast #3310970
Lesenswert?

Karl Heinz Buchegger schrieb:
> int foo()
> {
>   return 5;
> }
>
> int main()
> {
>   int j;
>
>   j = foo();   // Das Ergebnis, welches foo liefert, wird in j
> gespeichert.
>
>   printf( "%d\n", j );
> }

Gut, danke jz funktionierts, jedoch verstehe ich trotzdem nicht ganz 
warum die UP nochmal durchlaufen wurden und nicht ganz normal ausgegeben 
wurden.
void ausgabe()
{
  char *steak1, *garung, *beilage;
  steak1=steak();
  garung=Garung();
  beilage=Belage();

    printf("Ihre Bestellung:   %s,   %s,   %s...", steak1, garung, 
beilage);
}


Aber danke
#3310979
Lesenswert?

Mücahit schrieb:

> Gut, danke jz funktionierts, jedoch verstehe ich trotzdem nicht ganz
> warum die UP nochmal durchlaufen wurden

Weil du sie 2 mal aufrufst!

Du hast einen Aufruf in main() UND du hast einen Aufruf in ausgabe().

Ich versteh im Gegenzug nicht, was es daran  nicht zu verstehen gibt! 2 
Aufrufe der Funktion, daher wird die Funktion auch 2 mal abgearbeitet!

> void ausgabe()
> {
>   char *steak1, *garung, *beilage;
>   steak1=steak();
>   garung=Garung();
>   beilage=Belage();
>
>     printf("Ihre Bestellung:   %s,   %s,   %s...", steak1, garung,
> beilage);
> }

keine gute Lösung.
Sieh dir noch mal den Link an
http://www.mikrocontroller.net/articles/String-Verarbeitung_in_C#Wie_schreibt_man_eine_Funktion.2C_die_einen_String_liefert.3F
#3310981
Lesenswert?

Du scheinst irgendwie zu denken, dass eine Funktion nur einmal 
abgearbeitet wird, wenn man sie aufruft und danach greift man immer 
wieder nur auf das Ergebnis der Funktion zu.
Dem ist nicht so!

Wird eine Funktion aufgerufen, dann wird sie auch abgearbeitet.
Hast du einen Aufruf in main() und einen Aufruf in ausgabe(), dann wird 
die Funktion auch 2 mal abgearbeitet und führt den Code in ihr bei jedem 
Aufruf erneut aus. Und das ist auch gut so!
Gast #3310986
Lesenswert?

Karl Heinz Buchegger schrieb:
>> void ausgabe()
>> {
>>   char *steak1, *garung, *beilage;
>>   steak1=steak();
>>   garung=Garung();
>>   beilage=Belage();
>>
>>     printf("Ihre Bestellung:   %s,   %s,   %s...", steak1, garung,
>> beilage);
>> }
>
> keine gute Lösung.

Wieso keine gute Läsung?
   char* meinezeile1;
   char* meinezeile2;

   meinezeile1 = uart_get_line();
   printf( "gelesen1: %s", meinezeile1 ); // gibte erste Zeile aus
   meinezeile2 = uart_get_line();
   printf( "gelesen2: %s", meinezeile2 ); // gibte zweite Zeile aus

Der macht das ja auch so...
Persönliche Seite #3310991
Lesenswert?

Mücahit schrieb:
> Der macht das ja auch so...

Und das ist auch bei ihm ein Griff ins Klo. Was meinst Du wohl, was 
"meinezeile1" nach dem zweiten Aufruf von uart_get_line enthält?

Aufgabe für Dich:

Probier mal das hier aus:
1
   char* meinezeile1;
2
   char* meinezeile2;
3

4
   meinezeile1 = uart_get_line();
5
   meinezeile2 = uart_get_line();
6
   printf( "gelesen1: %s", meinezeile1 ); // gibte erste Zeile aus
7
   printf( "gelesen2: %s", meinezeile2 ); // gibte zweite Zeile aus
Ich habe hier nur zwei Zeilen untereinander vertauscht. Mehr nicht.

Was passiert?

Und ... warum passiert das?


(An alle anderen: Diese Fragen muss "Mücahit" selbst beantworten. Keine 
Hilfestellung geben!)
#3311404
Lesenswert?

Wegstaben Verbuchsler schrieb:
> vielleicht hat er auch (noch) gar nicht verstanden, worauf du hinaus
> wolltest

Davon gehe ich aus. Deswegen die Reihe von Fragen.

Er hätte auch gleich die erste mit "nein" beantworten können, dann hätte 
man ihm dazu was erklären können und die zweite Frage wiederholen. 
Undsoweiter.

Aber es kam - gar nichts.


Warum erwartet also irgendjemand, daß auf eine andere Frage was kommen 
könnte.
Gast #3313737
Lesenswert?

Es tud mir leid, dass ich nicht geantwortet habe, hab nämlich jetzt erst 
nachgeschaut wieder und mein Studium hat heute begonnen und ich hoffe, 
dass ich nach der Zeit alles besser begreifen werde.. brauche nur 
bisschen Zeit aber ich glaube es kommt alles mit der Zeit :)
Danke an alle
#3313808
Lesenswert?

> nachgeschaut wieder und mein Studium hat heute begonnen und ich hoffe,
> dass ich nach der Zeit alles besser begreifen werde.. brauche nur
> bisschen Zeit aber ich glaube es kommt alles mit der Zeit :)

Du brauchst vor allen Dingen ein Buch!
Eines, das du durcharbeiten kannst. Und zwar von vorne! Und welches 
Lernbeispiele und Übungen am Ende jedes Kapitels hat.

Mit anlassbezogenem Erfragen von 1/8 Wissen in Foren hat noch nie jemand 
ordentlich C gelernt. Zumindest kenn ich keinen. Dafür gibt es in C zu 
viele Fallen.
Gast #3314000
Lesenswert?

Nimm den Stroustrup und lerne C++, C lernst Du dabei automatisch mit.
Es reicht auch erstmal wenn Du im WWW die vielen C und C++ Tutorials 
durchgehst, da gibt es auch viele mit Aufgaben am Ende.
Reines C würde ich heute niemandem mehr empfehlen auch nicht für µCs.
Persönliche Seite #3314035
Lesenswert?

cppler schrieb:
> Es reicht auch erstmal wenn Du im WWW die vielen C und C++ Tutorials
> durchgehst, da gibt es auch viele mit Aufgaben am Ende.

Nein. Das ist gar keine gute Idee.

> Reines C würde ich heute niemandem mehr empfehlen auch nicht für µCs.

Auch das sehe ich anders. Der K&R (2. Ausgabe) ist trotz seines hohen 
Alters nach wie vor empfehlenswert, weil er mit einem Bruchteil des 
Umfanges des Stroustrup auskommt und trotzdem die Sprache vollständig 
beschreibt (mit der Einschränkung, nichts neueres als C90 zu kennen, 
aber das ist für den Anfang wirklich nicht relevant).
Gast #3314062
Lesenswert?

Rufus Τ. Firefly schrieb:
> Auch das sehe ich anders. Der K&R (2. Ausgabe) ist trotz seines hohen
> Alters nach wie vor empfehlenswert, weil er mit einem Bruchteil des
> Umfanges des Stroustrup auskommt und trotzdem die Sprache vollständig
> beschreibt (mit der Einschränkung, nichts neueres als C90 zu kennen,
> aber das ist für den Anfang wirklich nicht relevant).

Damit lernt er aber kein OO und schaue Dir doch bitte mal die Tutorials 
zu C++ im Netz an da gibt es sehr viele sehr ausführliche und gute.
Mir scheint eher das Du C++ "verteufelst" was ich nicht verstehen kann ?
Ihr könnt ja z.B. mal hier vorbei schauen:

http://www.c-plusplus.de/cms/index.php

Und da könnte man dann diese Tutorials durcharbeiten:

http://www.c-plusplus.de/cms/modules.php?op=modload&name=Downloads&file=index&req=viewsdownload&sid=2

Viel Spaß :-P
Gast #3314066
Lesenswert?

cppler schrieb:
> Mir scheint eher das Du C++ "verteufelst" was ich nicht verstehen kann ?

Ich bin selbst ueberzeugter C++-Mikrocontroller-Entwickler und ich kann 
bei seinem Statement ueberhaupt nichts erkennen, was gegen C++ waere. Im 
Gegenteil, er hat voellig Recht - der beste Weg zu C++ geht ueber C.
Gast #3314113
Lesenswert?

pst schrieb:
> der beste Weg zu C++ geht ueber C.

Nein, dann bekommst Du massive Probleme Dich in OO einzuarbeiten.
Ich kenne mehr als genügend Leute die OO und damit das Konzept hinter 
C++ nicht verstanden haben und statt objektorientiert an Probleme 
heranzugehen das ganze mit prozeduralen Prototypen erschlagen wollen 
ohne die Vorzüge der Vererbung, Templates und Standardbibliotheken 
überhaupt zu erkennen.
Kannst Du denn OO und hat sich jemand die Tutorials im Web überhaupt mal 
angesehen ?
#3314154
Lesenswert?

Ich wollte ursprünglich mit C++ beginnen und hab dann auf die 
Empfehlungen hier gehört doch besser erstmal C zu lernen.
Was mir einleuchtete war, dass die meisten Programme in C geschrieben 
wurden, die auf einen µC laufen.
Macht doch nichts, dann stehen die tausend Seiten noch eine Weile im 
Schrank.
Dran kommen sie auf jeden Fall.
Aber ich muss sagen, schon bei den ersten Seiten des Buches musste ich 
feststellen, dass mir C++ sehr zu liegen scheint, denn alles war so klar 
und logisch für mich. Aber vielleicht liegt es auch nur am guten Buch!
Persönliche Seite #3314245
Lesenswert?

cppler schrieb:
> Damit lernt er aber kein OO

Bevor ein Kind zu laufen anfängt, krabbelt es. Und um überhaupt zu 
begreifen, warum und wozu objektorientierte Programmierung verwendet 
wird, ist es sehr hilfsreich, überhaupt irgendetwas programmieren zu 
können.

> und schaue Dir doch bitte mal die Tutorials
> zu C++ im Netz an da gibt es sehr viele sehr ausführliche und gute.

Ich halte nichts von Tutorials im Netz. Die bringen nur 
Oberflächlichkeit, und woran erkennt jemand, der sich mit einer Materie 
überhaupt nicht auskennt, ob ein Tutorial tatsächlich gut ist?

> Mir scheint eher das Du C++ "verteufelst" was ich nicht verstehen kann ?

Das läge mir fern. Ich verdiene seit über 20 Jahren meinen 
Lebensunterhalt mit C und C++. Ja, auch jetzt noch mit C.

cppler schrieb:
> Nein, dann bekommst Du massive Probleme Dich in OO einzuarbeiten.

Das halte ich für einen Irrglauben. Nein, ich halte es sogar für sehr 
sinnvoll, vor OO-Ansätzen erst mal mit einfachem C zu arbeiten. Dann 
nämlich kann man die "Kosten" eines Funktionsaufrufs, die "Kosten" einer 
Zuweisung oder des Gebrauchs eines Operators eher begreifen lernen.

Wann werden wo wieviele Daten durch die Gegend kopiert, wie lange ist 
ein Objekt (auch im nicht-objektorientierten Sinne) sichtbar etc.

Zu begreifen, was ein Pointer ist, ist auch nicht wirklich schlecht.
Gast #3314321
Lesenswert?

Rufus Τ. Firefly schrieb:
> Das halte ich für einen Irrglauben. Nein, ich halte es sogar für sehr
> sinnvoll, vor OO-Ansätzen erst mal mit einfachem C zu arbeiten. Dann
> nämlich kann man die "Kosten" eines Funktionsaufrufs, die "Kosten" einer
> Zuweisung oder des Gebrauchs eines Operators eher begreifen lernen.


Wir sind hier bei PC-Programmierung da spielen "Kosten" keine große 
Rolle heutzutage.
Von prozeduralen Ansätzen auf objektorientierte umzusteigen ist schwer, 
denn man lernt eben KEINE Kapselung und macht das jeweils zu Fuß OHNE 
das man vorhandenen Code vererben und Funktionen überschreiben könnte, 
die Konstrukte die dann folgen sind meistens schwer wartbar.
Und in C kann man keinen Operator überladen um z.B. + eine komplexe Zahl 
addieren zu lassen.
Wenn es um die Grundlagen geht kann man auch BASIC nehmen, da ist dann 
die Syntax anders als in C oder PASCAL oder EIFFEL oder ...
Es gibt sehr viele Programmiersprachen von denen einige sehr speziell 
sind aber die meisten haben immer eines gemeinsam.
Und OO macht meiner Meinung nach am meisten Sinn.

Rufus Τ. Firefly schrieb:
> Ich halte nichts von Tutorials im Netz. Die bringen nur
> Oberflächlichkeit, und woran erkennt jemand, der sich mit einer Materie
> überhaupt nicht auskennt, ob ein Tutorial tatsächlich gut ist?

Dann hast Du nicht den Link den ich angegeben habe verfolgt und 
verifiziert.
Und wenn jemand sich nicht auskennt kann derjenige in diversen Foren 
nachfragen respektive ausprobieren wann der Compiler meckert und solange 
herumprobieren bis es paßt.
Dabei lernt man zwar nicht sinnvolle Programmierung, weiß danach aber 
wann der Compiler meckert und kann danach gezielt fragen.

Und damit beende ich die Diskussion um den Sinn OO vs. C ...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren