Seite 1 von 2

Anfängerfrage programmieren

Verfasst: Samstag 11. Juni 2016, 16:37
von pythonhoshy
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!

Re: Anfängerfrage programmieren

Verfasst: Samstag 11. Juni 2016, 16:56
von __deets__
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.

Re: Anfängerfrage programmieren

Verfasst: Samstag 11. Juni 2016, 17:37
von Sirius3
@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]

Re: Anfängerfrage programmieren

Verfasst: Samstag 11. Juni 2016, 17:52
von snafu
Schau dir mal das Thema `for`-Schleifen an. Mit einer solchen Schleife erledigt man bei der Programmierung üblicherweise diese Art von wiederkehrenden Aufgaben.

Re: Anfängerfrage programmieren

Verfasst: Samstag 11. Juni 2016, 18:14
von 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]

Re: Anfängerfrage programmieren

Verfasst: Samstag 11. Juni 2016, 18:41
von kbr

Code: Alles auswählen

...
print(x + y + 365)

Re: Anfängerfrage programmieren

Verfasst: Samstag 11. Juni 2016, 19:58
von pythonhoshy
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.

Re: Anfängerfrage programmieren

Verfasst: Samstag 11. Juni 2016, 20:25
von 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]

Re: Anfängerfrage programmieren

Verfasst: Samstag 11. Juni 2016, 20:48
von pythonhoshy
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.

Re: Anfängerfrage programmieren

Verfasst: Samstag 11. Juni 2016, 21:03
von 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

Re: Anfängerfrage programmieren

Verfasst: Samstag 11. Juni 2016, 21:47
von pixewakb
@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)?

Re: Anfängerfrage programmieren

Verfasst: Samstag 11. Juni 2016, 22:02
von 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]

Re: Anfängerfrage programmieren

Verfasst: Samstag 11. Juni 2016, 23:55
von pixewakb
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.

Re: Anfängerfrage programmieren

Verfasst: Sonntag 12. Juni 2016, 00:20
von 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.

Re: Anfängerfrage programmieren

Verfasst: Sonntag 12. Juni 2016, 07:31
von pythonhoshy
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?

Re: Anfängerfrage programmieren

Verfasst: Sonntag 12. Juni 2016, 08:41
von snafu
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 + ... = ?

Re: Anfängerfrage programmieren

Verfasst: Sonntag 12. Juni 2016, 10:05
von bwbg
Wobei das mit ein wenig Mathematik (speziell Geometrie, da recht anschaulich) recht einfach und ohne Schleifen zu lösen ist ... 8)

Re: Anfängerfrage programmieren

Verfasst: Sonntag 12. Juni 2016, 12:37
von 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]

Re: Anfängerfrage programmieren

Verfasst: Sonntag 12. Juni 2016, 12:51
von DasIch
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.

Re: Anfängerfrage programmieren

Verfasst: Sonntag 12. Juni 2016, 14:04
von kbr
Vermutlich ist die Aufgabenbeschreibung unvollständig und es soll noch ein Zinssatz berücksichtigt werden.