Anfängerfrage programmieren

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
pythonhoshy
User
Beiträge: 7
Registriert: Samstag 11. Juni 2016, 15:54

Ich wollte ein Programm schreiben in der zwei Zahlen addiert werden.Zu dieser Summe möchte ich die Zahl 1 addieren.Und zu dieser Summe wieder die 1 usw.Das ganze 365 mal.
Danke für Hilfe!
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ich denke mal eher jemand anderes will, dass du dieses Programm schreibst, oder?

Zeig doch mal was du probiert hast, und welche Fehlermeldungen du bekommst.
Sirius3
User
Beiträge: 18335
Registriert: Sonntag 21. Oktober 2012, 17:20

@pytohnhoshy: wo ist das Problem?
[codebox=powershell file=Unbenannt.ps1]4+7+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1[/code]
Benutzeravatar
snafu
User
Beiträge: 6908
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Schau dir mal das Thema `for`-Schleifen an. Mit einer solchen Schleife erledigt man bei der Programmierung üblicherweise diese Art von wiederkehrenden Aufgaben.
BlackJack

Also in Nim (http://nim-lang.org/) könnte das so aussehen:
[codebox=delphi file=Unbenannt.pas]const a = 42
const b = 23
var sum = a + b
for i in 1..365:
inc(sum)
echo sum[/code]
Benutzeravatar
kbr
User
Beiträge: 1510
Registriert: Mittwoch 15. Oktober 2008, 09:27

Code: Alles auswählen

...
print(x + y + 365)
pythonhoshy
User
Beiträge: 7
Registriert: Samstag 11. Juni 2016, 15:54

Hallo zusammen,
das Ganze sollte in etwa so aussehen:
a = 1
b = (a+1)
c = (b+1)
d = (c+1)
usw.
Und das 365 mal.
Ich wüsste jetzt nicht wie ich das in eine for Schleife einbaue.
BlackJack

@pythonhoshy: Also unter dem „usw.“ kann ich mir ja bis zum 26. mal noch etwas vorstellen, aber wie sieht denn beispielsweise die 300. Zeile in dem Programm aus?

Was Du da machen ”willst” ist kein Programmieren, insofern ist die Betreffzeile von diesem Thema irreführend gewählt. Programmieren heisst nämlich faul sein, und 365 Zeilen schreiben ist nicht faul, das ist dumm. Als Programmierer schreibt man nicht 365 Zeilen nach dem selben Muster sondern schreibt eine Schleife die die gleiche Arbeit in zwei Zeilen erledigt.

Andererseits weisst Du doch wie's geht. Du musst halt nur noch ein bisschen mehr schreiben. Viel Spass. :twisted:

Was soll dieser Unsinn denn überhaupt? Wozu soll das gut sein?

----

Weil Nim ja doch etwas exotisch ist, hier eine Lösung in Java (Streams und anonyme Funktionen sind irgendwie lustig):
[codebox=java5 file=Unbenannt.java]import java.io.IOException;
import java.util.stream.IntStream;

public class Main {

public static void main(String[] args) throws IOException {
final IntStream numbers = IntStream.of(42, 23);
final IntStream ones = IntStream.generate(() -> 1).limit(365);
System.out.println(IntStream.concat(numbers, ones).sum());
}
}[/code]
pythonhoshy
User
Beiträge: 7
Registriert: Samstag 11. Juni 2016, 15:54

Hallo BlacjJack,
1.Woher willst Du wissen dass das Unsinn ist.Das ist doch wohl meine Sache.
2.Ich weiss auch dass das kein programieren ist.Sonst würde ich ja sonst nicht fragen.
3.Sehr schlau bis 26 zu zähle und dann.....
4.Damit es verständlicher wird
z = 1+1 =summe
summe + 1 = summe2
summe2+1 = summe3
usw.
Und das wollte ich gerne in python programmieren.
BlackJack

@pythonhoshy: Ich weiss dass das Unsinn ist, weil das niemand der bei Verstand ist, schreiben mag.

Das mit

z = 1+1 =summe
summe + 1 = summe2

wird nur unverständlicher weil das kein syntaktisch korrektes Python ist.

Wo genau liegt denn nun Dein Problem? Du musst doch nur 366 Zeilen (syntaktisch korrekte) Codezeilen hinschreiben. Fang einfach an. :K
Benutzeravatar
pixewakb
User
Beiträge: 1413
Registriert: Sonntag 24. April 2011, 19:43

@pythonhoshy: Normalerweise sind wir hier nett, nur momentan weiß glaube ich niemand, ob das eine Hausaufgabe ist, die du von uns gelöst haben möchtest oder aber eine Frage, die uns - zu deiner Belustigung - eine Zeit beschäftigen soll. Es fängt m. E. damit an, dass du nicht sauber formulierst. Häufig hilft es - statt Code zu schreiben -, konkret zu schreiben, was das Programm - in Textform - machen soll. Dann fällt es anderen leichter dir zu helfen.
pythonhoshy hat geschrieben:Ich wollte ein Programm schreiben in der zwei Zahlen addiert werden.Zu dieser Summe möchte ich die Zahl 1 addieren.Und zu dieser Summe wieder die 1 usw.Das ganze 365 mal.
Danke für Hilfe!
Eine Lösung deines Problems in Python könnte so aussehen:

Code: Alles auswählen

ersteZahl = 1
zweiteZahl = 2

summe = ersteZahl + zweiteZahl

print(summe)

for i in range(365):
    summe = summe + 1

print(summe)
Ist es das, was du suchst oder hilft es dir (wenigstens)?
BlackJack

@pixewakb: Falls das eine Hausaufgabe ist und Du die Aufgabenstellung richtig erraten hast, dann sollte Deine Komplettlösung wohl weiterhelfen. ;-)

Also als ich noch Hausaufgaben hatte, sah das noch so aus:
[codebox=locobasic file=Unbenannt.txt]10 A=42:B=23:S=A+B:FOR I=1 TO 365:S=S+1:NEXT:PRINT S[/code]
Benutzeravatar
pixewakb
User
Beiträge: 1413
Registriert: Sonntag 24. April 2011, 19:43

BASIC :shock: Ich meine, dass mein Informatikunterricht noch das bekannte GW-BASIC einsetze, das war damals schon so veraltet, dass ich es nur noch über einige Ecken auf Diskette von Bekannten bekommen konnte. Im konkreten Fall spricht gegen eine Hausaufgabe, dass die Aufgabenstellung irgendwie seltsam ist. 2 Zahlen addieren (direkt in der Schleife?) oder nur die Tage hochzählen, warum dann zu Beginn in diese Variable schon was anderes reinpacken. Vielleicht klärt es sich noch auf.
BlackJack

@pixewakb: Also das war das was ich zuhause auf meinem C64 eingetippt hätte. Im Informatikunterricht gabs TurboPascal. Das hätte dann ungefähr so ausgesehen:
Bild
:-)

GW-BASIC habe ich nur so ganz kurz mitbekommen. Bei meinem ersten DOS-Rechner war's dann schon QBasic.

Edit: Wobei das letztendlich wahrscheinlich eher so ausgesehen hätte, denn ich war vom C64 ja gewohnt das BASIC (Hochsprache) laaaaangsam ist und man möglichst viel in Assembler schreiben sollte, und war dann von TurboPascal total begeistert, dass man dort so einfach mitten in das Pascal Assembler schreiben kann:
Bild
*So* komfortabel ist das mischen von BASIC und Assembler auf dem C64 nicht. Wobei man diese kleine Aufgabe dort auch komplett in Assembler lösen und direkt in einen Maschinensprachemonitor hacken kann, ohne einen Assembler zu bemühen:
[codebox=text file=Unbenannt.txt].D080D-
.> 080D A0 00 LDY #$00
.> 080F 18 CLC
.> 0810 A9 2A LDA #$2A
.> 0812 69 17 ADC #$17
.> 0814 AA TAX
.> 0815 90 01 BCC $0818
.> 0817 C8 INY
.> 0818 A9 93 LDA #$93
.> 081A 85 9E STA $9E
.> 081C A9 FE LDA #$FE
.> 081E 85 9F STA $9F
.> 0820 E8 INX
.> 0821 D0 01 BNE $0824
.> 0823 C8 INY
.> 0824 E6 9E INC $9E
.> 0826 D0 F8 BNE $0820
.> 0828 E6 9F INC $9F
.> 082A D0 F4 BNE $0820
.> 082C 98 TYA
.> 082D 4C CD BD JMP $BDCD[/code]
Die Summe wird hier beim Hochzählen in den Registern X und Y gehalten und da der Zählerwert (in den Adressen $9E/$9F) nicht interessiert, wird von $FE93 hochgezählt bis $0000 ($FE93 = $10000 - 365), weil das effizienter zu programmieren ist.
pythonhoshy
User
Beiträge: 7
Registriert: Samstag 11. Juni 2016, 15:54

Also es handelt sich um ein Rätsel.
Es wurde gefragt:Wenn man am ersten Tag eines neuen Jahres ein Cent spart,und an den darauf folgenden Tagen(also bis zum Ende des Jahres) immer wieder ein Cent zu der Summe hinzufügt,wieviel Cent bzw.Euro befinden sich dann im Spartopf?
Benutzeravatar
snafu
User
Beiträge: 6908
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Also 365 mal 1 Cent zu berechnen ist lächerlich. War vielleicht gemeint, dass jeden Tag ein Cent mehr gespart wird? Also in dieser Form:
1. Tag: 1 Cent ins Schwein
2. Tag: 2 Cent ins Schwein
3. Tag: 3 Cent ins Schwein
u.s.w.
Inhalt des Schweins am Jahresende:
1 Cent + 2 Cent + 3 Cent + ... = ?
Benutzeravatar
bwbg
User
Beiträge: 407
Registriert: Mittwoch 23. Januar 2008, 13:35

Wobei das mit ein wenig Mathematik (speziell Geometrie, da recht anschaulich) recht einfach und ohne Schleifen zu lösen ist ... 8)
"Du bist der Messias! Und ich muss es wissen, denn ich bin schon einigen gefolgt!"
BlackJack

@pythonhoshy: Sollte das tatsächlich die Frage sein, 1¢ pro Tag, dann braucht man da nichts für Programmieren, das kann man einfach so beantworten: 365 für die meisten Jahre und ein Cent mehr in Schaltjahren. Warum willst Du diese offensichtliche Summe mit hunderten von überflüssigen Variablennamen für jede Zwischensumme beim einzelnen aufaddieren der Cents in eine Datei schreiben? Da wären wir beim Thema Unsinn. Was wäre der Sinn von der dieser Übung, ausser viel Schreibarbeit? So etwas bekommen Schulkinder als Strafe, 100× an die Tafel zu schreiben: „I will not sell my kidney on eBay“ (Bart Simpson).

Programmiertechnisch wäre hier also eigentlich nur interessant das der Benutzer die Jahreszahl wählen kann und das Programm entscheidet ob das ein Schaltjahr ist oder nicht. Komplettes Beispiel in HTML+JavaScript:
[codebox=html5 file=Unbenannt.html]<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<title>Sparen</title>
</head>
<body>
<h1>Sparen</h1>
<p>
Angenommen Du wirfst am ersten Tag des Jahres einen Cent in Dein Sparschwein
und tust das auch an jedem weiteren Tag des Jahres; wieviel Geld ist am Ende
des Jahres in dem Sparschwein?
</p>
<p>
<form>
<label>Jahreszahl</label>
<input id="year_input" type="number" min="1" placeholder="19…" required>
<input id="calculate_button" type="submit" value="Berechne">
</form>
</p>
<p>Endsumme: <output id="result"></output></p>

<script type="text/javascript">
var isLeapYear = function (year) {
return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);
};

var onCalculate = function (event) {
event.preventDefault();
var year = parseInt(document.getElementById('year_input').value);
if (!isNaN(year)) {
var amount = 365 + ((isLeapYear(year)) ? 1 : 0);
document.getElementById('result').textContent =
amount + '¢ im Jahr ' + year;
}
};

document.getElementById('calculate_button')
.addEventListener('click', onCalculate);
document.getElementById('year_input').value = (new Date()).getFullYear();
</script>
</body>
</html>[/code]
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

So in etwa würde es in Human Resource Machine Assembly aussehen, hätte dieser eine Text Repräsentation.

Code: Alles auswählen

	COPYFROM 1
	ADD 2
	COPYTO 4
a:
	BUMP+ 4
	BUMP- 3
	JUMPIFZERO a
Ergebnis ist in 4, in 3 muss 365 stehen. 1 und 2 müssen die Zahlen sein die wir ursprünglich addieren.
Benutzeravatar
kbr
User
Beiträge: 1510
Registriert: Mittwoch 15. Oktober 2008, 09:27

Vermutlich ist die Aufgabenbeschreibung unvollständig und es soll noch ein Zinssatz berücksichtigt werden.
Antworten