Forum: Mikrocontroller und Digitale Elektronik DSP Beispiel


von Mathias K. (underworldgamer)


Lesenswert?

Hallo i hab mir mol das Testprogramm ageschaut nur mir ist nich klar was

//sum -= *ptr;

für eine Aufgabe hat ??

besten Dank Mathias


1
#include <stdio.h>
2
#include <stdlib.h>
3
4
int sum = 0;
5
//int buf[]={1,2,3,4,5,6};
6
7
int buf[32];
8
int *ptr = buf;
9
int forceraw = 0;
10
11
int main(void) {
12
13
  int x = 0;
14
15
16
  do{
17
    forceraw = 1000;
18
    //sum -= *ptr;
19
20
    sum +=forceraw;
21
    *ptr++ = forceraw;
22
23
    printf("%d", *ptr);
24
    printf("\t");
25
26
    printf("%d", sum);
27
    printf("\t");
28
29
    printf("\t");
30
    printf("%d", buf[x]);
31
32
    printf("\n\n");
33
34
    x++;
35
  }while(x < 4);
36
}

von Coder (Gast)


Lesenswert?

ja haste compiliert und ausgeführt, dann weiste wat et macht

einen guten auch

von Kali (Gast)


Lesenswert?

Leider ist der Zweck des Programmes weder aus den Variablennamen noch 
aus den Ausdrücken und Befehlen selbst erkennbar, so das auch keine 
Aussage über den Zweck des von Dir genannten Ausdrucks gemacht werden 
kann.

Falls sich Deine Frage aber auf die gesamte Zeile einschliesslich der 
führenden Doppel-Slashes bezieht ist sie ohnehin irrelevant, weil diese 
eine Kommentarzeile einleiten und nie ausgeführt werden.

Ohnehin ist das Programm wegen der auskommentierten Deklaration von buf 
garnicht compilierbar.

Falls aber beides nicht auskommentiert wäre, würde der nachgefragte 
Ausdruck dafür sorgen, das sich sum sukzessive um die initialisierten 
Inhalte von buf auf -25 verringert. Was für einen Zweck das hat, ist 
wiegesagt nicht erkennbar.

von Coder (Gast)


Lesenswert?

@Kali

Der Threadersteller darf sich gerne selber mal bemühen.

von Kali (Gast)


Lesenswert?

Quatsch. Natürlich verringert sich sum auf -10.

von Mathias K. (underworldgamer)


Lesenswert?

Eigentlich gehts darum, dass so ein buf[32] da ist der Werte speichert 
von forceraw...

sum -= *ptr;

dieser Ausdruck hat mich verwirrt mich ja da er kein Ausmass hat ob er 
da ist oder nicht.

lg

1
#include <stdio.h>
2
#include <stdlib.h>
3
4
int sum = 0;
5
6
int buf[32];
7
int *ptr = buf;
8
int forceraw = 0;
9
10
int main(void) {
11
12
  int x = 0;
13
14
15
  do{
16
    forceraw = 1000;
17
    sum -= *ptr;
18
19
    sum +=forceraw;
20
    *ptr++ = forceraw;
21
22
    printf("%d", *ptr);
23
    printf("\t");
24
25
    printf("%d", sum);
26
    printf("\t");
27
28
    printf("\t");
29
    printf("%d", buf[x]);
30
31
    printf("\n\n");
32
33
    x++;
34
  }while(x < 4);
35
}

von Kali (Gast)


Lesenswert?

>dieser Ausdruck hat mich verwirrt mich ja da er kein Ausmass hat ob er
>da ist oder nicht.

Ehrlich gesagt, habe ich absolut keine Ahnung was dieser Satz bedeuten 
soll.

Was ist ein "Ausmass" in Bezug auf einen C-Ausdruck? Was für eine Art 
"Ausmass" ergibt eine Aussage ob er "da ist" oder "nicht" in Bezug auf 
einen C-Ausdruck?

Nach Diktion und Programm hast Du so gut wie keine Ahnung was Du da 
machst. Schreib mal ein wenig worum es geht. HobbyProgrammierer, Lehre, 
Uni. Wieviele Stunden liest Du schon über C?

Jedenfalls hast Du vermutlich einige wichtige Kapitel übersprungen. Noch 
mal zurück zum Anfang.

von Mathias K. (underworldgamer)


Lesenswert?

Lehre

Mit diesem Satz möchte ich ja nur sagen, dass

sum -= *ptr;

ausgeklammert oder nicht keinen Einfluss auf das Programm hat,
es soll ja mit

*ptr++ = forceraw;

jeweils pro schleifendurchlauf  werte in das buf array reinschreiben.

mfg

von Kali (Gast)


Lesenswert?

Naja. Ich sehe selbst jetzt das sum den Wert 3990 annimmt und nichts 
anderes.

So. Du machst also eine Lehre. Als was?

>es soll ja mit
>*ptr++ = forceraw;
>jeweils pro schleifendurchlauf  werte in das buf array reinschreiben.

Nun, das wird es sicherlich auch tun. Aber was hat das mit sum zu tun?
Schau noch mal das Programm an. Nirgendwo taucht sum, weder direkt noch 
indirekt (via Zeiger) auf der rechten einer Zuweisung auf, die links buf 
zu stehen hat (ptr zeigt auf buf).

Wie soll also sum in irgendeiner Weise den Inhalt von buf beeinflussen?

von Kali (Gast)


Lesenswert?

Hier fehlt eine Beschreibung dessen was das Programm überhaupt tun soll. 
An dieser Beschreibung kannst Du (und wir) dann ermessen inwiefern ein 
gewisser Teil zu der Erfüllung der Aufgabe des Programmes beiträgt oder 
nicht oder in fehlerhafter Weise.

Hier haben wir nur ein Programm unbekannten Zweckes der irgendwas macht. 
Da wir aber nicht wissen was er machen soll, können wir auch nicht 
wissen, ob es das richtig tut.

Du fragst nun nach einem bestimmten Ausdruck. Nach seinem Zweck. Können 
wir nicht wissen, denn wir kennen den Zweck des Gesamtprogrammes nicht. 
Dann formulierst Du anders. Fragst nach der Auswirkung.

Bis auf sum selbst beeinflusst der Ausdruck keine andere Variable oder 
den Kontrollfluss des Programmes.

von Mathias K. (underworldgamer)


Lesenswert?

Elektronik

ja das Problem der Code kommt vom Lehrer und nich von mir.

Aus meiner Sicht ist der oben erwähnte Codezeile nicht notwendig für die 
Funktion des Programmes.

lg

von Kali (Gast)


Lesenswert?

Mir ist nicht klar was Du eigentlich von uns willst.

Ob und inwiefern sich ein Ausdruck auf Daten und Kontrollfluss eines 
Programmes auswirkt, lernt man im Unterricht. Allerdings erstmal im 
umgekehrten Sinne, d.h. die Frage beantwortend: "Wie kann ich Daten in 
bestimmter Weise manipulieren"? bzw. "Wie kann ich den Ablauf eines 
Programmes beeinflussten"? Diese Lerninhalte gehst Du jetzt im Geiste 
durch und wendest das Gelernte an.

von Kali (Gast)


Lesenswert?

Ich will Dir auch kurz schreiben, warum ich so antworte:
Falls Deine Aufgabe lautete, die Frage: "Wirkt sich der Ausdruck auf den 
Inhalt von Variablen aus oder nicht"? zu beantworten, dann möchte ich 
Dir nicht die Aufgaben lösen.
Wenn Du Probleme bei der Anwendung des Gelernten hast, dann mach das 
bitte klar. Erkläre uns, worin das Problem besteht im Zusammenhang mit 
dem was Du über das Programmieren und die Sprache (beschränkt auf das 
unmittelbare Problem) weisst. Bei mir drängt sich aber der Verdacht auf, 
das Du nur Deine Aufgabe an uns weitergibst.

von Coder (Gast)


Lesenswert?

Nicht, daß sich der Threadersteller beim Code-Schnippseln verschnippselt 
hat.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.