12.07.2015 Views

Pertemuan2 Percabangan & Perulangan pada Python - iLab

Pertemuan2 Percabangan & Perulangan pada Python - iLab

Pertemuan2 Percabangan & Perulangan pada Python - iLab

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>Pertemuan2</strong><strong>Percabangan</strong> & <strong>Perulangan</strong> <strong>pada</strong> <strong>Python</strong>Objektif:1. Mahasiswa mengetahui percabangan dan perulangan <strong>pada</strong> <strong>Python</strong>.2. Mahasiswa mengetahui bentuk umum dari percabangan dan perulangan <strong>pada</strong> <strong>Python</strong>.3. Mahasiswa dapat membuat program sederhana dengan menggunakan bahasapemrograman <strong>Python</strong>, <strong>pada</strong> percabangan dan perulangan.| <strong>Pertemuan2</strong> 24


P2.1 Teori<strong>Percabangan</strong>Pada umummnya dalam membuat program selalu ada seleksi, dimana diperlukanpengecekan suatu kondisi untuk mengarahkan program berjalan sesuai keinginan. Pada<strong>Python</strong> untuk melakukan suatu pengecekan kondisi, terdapat tiga macam statemen. Antaralain :1. Perintah if2. Perintah if – else3. Perintah if – else – elif4. Perintah if bersarangPerintah IfBentuk umum perintah if :if (kondisi) :statemenStatemenif digunakan untuk melakukan penyeleksian dimana jika kondisi bernilaibenar, maka program akan mengeksekusi statemen dibawahnya. Dalam <strong>Python</strong>, untukpenulisan pengkondisian dan statemen dipisahkan oleh tanda titik dua (:). Contohnya :>>> nama = “python”>>> if nama == “python” :... print “Hello “ + nama...Hello pythonUntuk setiap penulisan perintah if setelah penentuan kondisi, maka dilanjutkandengan penulisan tanda titik dua (:). Tanda titik dua ini berarti jika kondisi bernilai benar,maka statemen-statemen setelah tanda titik dua akan dijalankan.Perintah if – elseStatemenif – else digunakan untuk melakukan penyeleksian kondisi dimana jikakondisi bernilai benar maka program akan mengeksekusi statemen 1. Namun jika nilaikondisi bernilai salah, maka statemen 2 yang akan dieksekusi.Bentuk umum perintah if – else :| <strong>Percabangan</strong> & <strong>Perulangan</strong> <strong>pada</strong> <strong>Python</strong> 25


if (kondisi) :statemen 1else :statemen 2Contoh program :>>> kunci = “python”>>> password = raw_input(“Masukkan Password : “)Masukkan Password : saya>>> if password == kunci :... print “Password Benar”... else :... print “Password Salah”...Password SalahPerintah if – else – elifStatemen if – else – elif digunakan untuk melakukan penyeleksian kondisi dimanakondisi yang diberikan lebih dari 1 kondisi atau memiliki beberapa kondisi. Jika kondisipertama bernilai benar, maka lakukan seleksi kondisi kedua dan seterusnya.Bentuk umum perintah if – else – elifif (kondisi 1) :statemenelif (kondisi 2) :statemenelse:statemenContoh program>>> angka = input(“Masukkan bilangan : “)Masukkan bilangan : 5>>> if angka > 0 :... print “Angka merupakan bilangan positif”...elif angka < 0 :... print “Angka merupakan bilangan negatif”...else :| <strong>Percabangan</strong> & <strong>Perulangan</strong> <strong>pada</strong> <strong>Python</strong> 26


... print “Angka merupakan 0”...Angka merupakan bilangan positifPerintah if bersarangKondisi bersarang adalah suatu kondisi didalam kondisi tertentu. Jika terdapat 2cabang kondisi, maka didalam salah satu cabang kondisi tersebut dapat pula diisi suatukondisi tertentu, misalnya :if x == y:print x, y “mempunyai nilai yang sama”else :if x > y :print x, “lebih besar dari”, yif x < y :print x, “lebih kecil dari”, yKondisi pertama mempunyai 2 pilihan kondisi. Kondisi pertama mempunyai perintahbaris yang sederhana, sedangkan kondisi kedua mempunyai 2 pilihan kondisi lagi didalamnya.Walaupun pengidentifikasian dalam <strong>Python</strong> sangat mudah dibaca, akan tetapi akan lebih sulituntuk membacanya secara cepat. Pada umumnya lebih baik menghindari kondisi bersarangseperti ini. Misalnya kita dapat menjalankan perintah berikut dengan menggunakan satukondisi :if 0 < x :if x < 10 :print x, “bilangan positif terdiri dari satu digit”Perintah print akan dijalankan jika kedua kondisi diatas terpenuhi, jadi kita dapatmenulisnya dengan carfa menggunakan operator logika “and” :if 0 < x and x < 10 :print x, “bilangan positif terdiri dari satu digit”<strong>Python</strong> juga menyediakan struktur kalimat matematika <strong>pada</strong> umumnya, seperti :if 0 < x < 10 :print x, “bilangan positif terdiri dari satu digit”Contoh diatas sama artinya dengan contoh-contoh sebelumnya yang menggunakankondisi berantai dan operator logika.Untuk menguji kondisi, dapat menggunakan operator ==, =, dan !=.| <strong>Percabangan</strong> & <strong>Perulangan</strong> <strong>pada</strong> <strong>Python</strong> 27


Perhatikan cara penulisan blok-blok program dalam <strong>Python</strong> blok-blok perintah ditandaidengan penulisan kode program yang menjorok ke dalam. Setiap perintah yang mempunyaibatas kiri yang sama dianggap satu blok. Sebisa mungkin harus konsisten menggunakankarakter spasi atau karakter tabulasi untuk membuat indentasi. Kesalahan yang sering terjadidengan indentasi ini adalah terlihat dalam penampilan editor sudah lurus <strong>pada</strong> batas kiri tapiada perbedaan dalam jumlah karakter tabulasi atau spasi.<strong>Perulangan</strong>Perintah perulangan digunakan untuk mengulang pengeksekusian statemen-statemenhingga berkali-kali sesuai dengan iterasi yang diinginkan. Dalam <strong>Python</strong>, perintah untukperulangan (loop) adalah while dan for.Perintah whilePerintah while <strong>pada</strong> <strong>Python</strong> merupakan perintah yang paling umum digunakan untukproses iterasi. Konsep sederhana dari perintah while adalah ia akan mengulang mengeksekusistatemen dalam blok while selama nilai kondisinya benar dan ia akan keluar atau tidakmelakukan eksekusi blok statemen jika nilai kondisinya salah.Bentuk umum statemen while :while (kondisi) :statemenContoh penggunaan while :>>> a = 0; b = 10>>> while a < b :... print a,... a = a + 1...0 1 2 3 4 5 6 7 8 9Perintah forPerintah for dalam python mempunyai ciri khas tersendiri dibandingkan denganbahasa pemrograman lain. Tidak hanya mengulang bilangan-bilangan sebuah ekspresiaritmatik atau memberikan keleluasaan dalam mendefinisikan iterasi perulangan danmenghentikan perulangan dan menghentikan perulangan <strong>pada</strong> saat kondisi tertentu. Dalam| <strong>Percabangan</strong> & <strong>Perulangan</strong> <strong>pada</strong> <strong>Python</strong> 28


| Zeitschrift für Steuern & Recht Z _ Steu-Beiträge 4. Jg. Heft 11 | 6. Juni 2007 | Seite 219Gerhard Bruschke, Diplom-Finanzwirt, MöhneseeSteuerliche Behandlung von Versicherungen gegen fremdfinanziertenEinmalbeitragI. AllgemeinesSeit mittlerweile mehr als zehn Jahren werdenauf dem Versicherungsmarkt Modelle angeboten,bei denen dem Versicherungsnehmerüber einen längeren Zeitraum 1 zumeist erheblicheVerluste aus Kapitalvermögen2 oder aus sonstigen Einkünften3 entstehen. Die Modelle sehenim Wesentlichen so aus, dass derVersicherungsnehmer eine Renten-oder Kapitallebensversicherunggegen Einmalbeitrag abschließt,wobei dieser Einmalbeitragüber einen Kapitalgeberrefinanziert wird.Bei der Zeichnung von Versicherungsmodellenmit fremdfinanzierten Einmalbetragfallen regelmäßig Gebühren zugunstender Modellvertreiber an. Diese Gebührenwerden durchweg als „Vermittlungsgebühren“oder „Abwicklungs- und Informationshonorar“bezeichnet und von den Versicherungsnehmernhäufig in vollem Umfang als vorweggenommeneWerbungskosten bei den Einkünften aus § 22Nr. 1 EStG oder § 20 EStG geltend gemacht.II. VersicherungsmodelleDie Grundidee der vorgenannten Modelleliegt darin, dass die Versicherungsnehmer währendder Finanzierungsphase weitgehend vonallen Belastungen freigestellt werden und keineeigenen Mittel einzusetzen haben. Die durchdie Fremdfinanzierung verbleibende Zinslastkann jedoch im Regelfall nicht vollständigaufgefangen werden, so dass diese Beträge überSteuervorteile ausgeglichen werden sollen.1 i.d.R. 10 bis 15 Jahre2 § 20 EStG3 § 22 EStG4 i.d.R. 10 v.H.5 vgl. BFH vom 15.12.1999 – X R 23/95, BStBl II 2000,2676 BFH vom 30.06.1999 – II R 70/97, BStBl II 1999, 7427 z.B. Ehegatten oder ein Elternteil und Kind8 BFH vom 31.03.1987 – IX R 112/83, BStBl II 1987,7749 Dabei handelt es sich regelmäßig um eine jüngerePerson10 vgl. § 55 Abs. 1 Nr. 2 EStDV11 vgl. H 22.4 (Ertragsanteil einer Leibrente) EStH 2006Gerhard BruschkeZu diesem Zweck wird neben einer Rentenversicherunggegen Einmalbeitrag ohne Kapitalwahlrechtund mit sofort beginnender Rentenzahlungein Kredit für den Einmalbeitrag abgeschlossen.Der Kredit läuft in der Regel über15 Jahre, beinhaltet ein hohes Disagio 4 undeine Zinsfestschreibung sowie eine Tilgungsaussetzungbis zum Ende der Laufzeit. Die Tilgungwird dann über eine parallel abgeschlosseneLebensversicherung abgedeckt,die entweder auch über einen(finanzierten) Einmalbeitrag oderlaufende Beitragsleistung gespeistwird. In einigen Fällen wird demVersicherungsnehmer auch nocheine zusätzliche Risikolebensversicherunggegen laufende Beitragsleistungangedient.In der Praxis werden die Modelleunter den Bezeichnungen„Sicherheits-Kompakt-Rente“ oder „Kombi-Rente“ vertrieben. Die Namensgebung ist jedochnicht einheitlich, so dass immer auf dieAusgestaltung des Modells geachtet werdenmuss.Die Finanzverwaltung hat diese Konstruktionenin der Vergangenheit immer sehr kritischgesehen. In der Regel mussten die Verlustejedoch unter Berücksichtigung der nachstehendaufgeführten Besonderheiten im Grundsatzsteuerlich anerkannt werden. 5III. ÜberschussprognoseGenerelle Voraussetzung für die Berücksichtigungentsprechender vorweggenommenerWerbungskosten bei den Einkünften aus Kapitalvermögenoder bei den sonstigen Einkünftenist, dass die Kapitalanlage für sich gerechnetsteuerlich zu einem Totalüberschuss führt. DieserTotalüberschuss muss bereits bei der erstmaligenGeltendmachung der Werbungskostenüber eine Überschussprognose rechnerisch dargestelltwerden.Die Verpflichtung zur Vorlage einer entsprechendenPrognose trifft den Versicherungsnehmer,da er im Ergebnis eine Steuerermäßigunggeltend macht. Allerdings kann bei allen bekanntenModellen auf eine entsprechende Überschussprognoseder Versicherer zurückgegriffenwerden. Diese werden auch grundsätzlich vonder Finanzverwaltung berücksichtigt, wobeiallerdings einige öfter auftretende Fehlerquellenbekannt geworden sind.III.1 Besonderheiten bei den EinnahmenDie Einnahmen müssen dem Versicherungsnehmerals Kapitalgeber zuzurechnen sein. Eineabweichende Zurechnung bei einem Dritten infolgeEinräumung eines Bezugsrechts kommtnicht in Betracht. 6 Das gilt auch für den Falleines unwiderruflichen Bezugsrechtes. Die Abtretungder Versicherungsleistungen stellt eineeinkommensteuerrechtlich unbeachtliche Einkommensverwendungdar.Sind mehrere Personen Versicherungsnehmer7 , sind die Einnahmen – sofern keineanderen Vereinbarungen im Versicherungsvertraggetroffen sind – nach Köpfen aufzuteilen.Die Überschussprognose ist dann für jede Personzu erstellen. 8 Da bei Rentenzahlungen dieLaufzeit der Rente in diesen Fällen zumeist vomLeben mehrerer Personen abhängt, ist für dieBemessung der Ertragsanteile § 55 Abs. 1 Nr. 3EStDV zu beachten.Hängt die Zahlung der Renteneinnahmennicht vom Leben des Versicherungsnehmers,sondern vom Leben einer anderen versichertenPerson 9 ab, sind die nach dem Tod des Versicherungsnehmersan dessen Erben weiterhin fließendenRentenzahlungen in die Überschussprognosemit einzubeziehen. Zahlungen an denGesamtrechtsnachfolger bleiben also trotz dessubjektbezogenen Totalgewinns bei der Überschussprognosefür dieses Einkunftsquelle nichtaußer Ansatz. Dabei ist der Ertragsanteil nachdem vollendeten Lebensalter der versichertenPerson zu bemessen. 10Hiervon zu unterscheiden ist der Fall, dassdie Renteneinnahmen mit dem Tod des Versicherungsnehmersenden und ein neuer Zahlungsanspruchzugunsten eines Hinterbliebenen entsteht.Die Hinterbliebenenversorgung als eigenständiger,aufschiebend bedingter Rentenanspruchist nicht in die Überschussprognose miteinzubeziehen. 11Leistungen inländischer Versicherungsunternehmensind regelmäßig nur in Höhe einer Mindestverzinsungvon ca. 4 % garantiert. Der Umfangder Überschussbeteiligung hängt von derzukünftigen tatsächlichen Ertragsentwicklungdes Unternehmens ab. Für die Oberschussprognosekönnen allerdings die vom Versicherungsunternehmenprognostizierten Zahlen zu-Den vollständigen Text finden Sie in der aktuellen ZSteu-AusgabeBestell-Formular: Letzte Seite


... print x... x = x + 1... else :... print “Loop sudah selesai dikerjakan”...12Perintah continueStatemen continue menyebabkan alur program kembali ke perintah looping. Jadi, jikadalam sebuah perulangan terdapat statemen continue, maka program akan kembali keperintah looping untuk iterasi selanjutnya.Contoh : >>> n = 10>>> while n :... n = n – 1... if n % 2 != 0 :... continue... print n...8642Perintah passStatemen pass mengakibatkan program tidak melakukan tindakan apa-apa. Perintahpass biasanya digunakan untuk mengabaikan suatu blok statemen perulangan, pengkondisian,class, dan fungsi yang belum didefinisikan badan programnya agar tidak terjadi eror ketikaproses kompilasi.Contoh program pass :#program tidak akan melakukan proses loopingwhile True : pass| <strong>Percabangan</strong> & <strong>Perulangan</strong> <strong>pada</strong> <strong>Python</strong> 30


P2.2 Contoh KasusKasus 1 :Buat program untuk memasukkan nama, NPM, nilai UTS dan nilai UAS, yang memilikiperhitungan nilai rata-rata (dari nilai UTS dan UAS) dan kondisi nilai akhir dari nilai rata-ratayang ada (nilai A s/d E).Langkah 1.Buka IDLE (<strong>Python</strong> GUI) yang ada di menu start, lalu klik menu file pilih newwindow (Ctrl + N).Langkah 2.Ketik listing program berikut :INGAT! Penggunaan spasi dan tabulasi dalam penulisan listing. Salahindentasi maka program tidak bisa running!Langkah 3.Setelah selesai klik menu file → save. Simpan dengan nama nilai.py.| <strong>Percabangan</strong> & <strong>Perulangan</strong> <strong>pada</strong> <strong>Python</strong> 31


Untuk menjalankan listing program diatas klik menu Run → Run Module F5seperti gambar dibawah ini.Kemudian input data dan tekan enter, maka contoh hasil outputnya adalahsebagai berikut.Kasus 2 :Buat program dengan output segitia siku-siku yang terbalik dengan menggunakan perintahwhile.Langkah 1.Buka IDLE (<strong>Python</strong> GUI) yang ada di menu start, lalu klik menu file pilih newwindow (Ctrl + N).| <strong>Percabangan</strong> & <strong>Perulangan</strong> <strong>pada</strong> <strong>Python</strong> 32


Langkah 2.Ketik listing program berikut :INGAT! Penggunaan spasi dan tabulasi dalam penulisan listing. Salahindentasi maka program tidak bisa running!Setelah selesai klik menu file → save. Simpan dengan nama segitiga.pyLangkah 3.Untuk menjalankan listing program diatas klik menu Run → Run Module F5,maka akan muncul output seperti gambar dibawah ini.| <strong>Percabangan</strong> & <strong>Perulangan</strong> <strong>pada</strong> <strong>Python</strong> 33


P2.3 Latihan1. Buat persegi simbol ‘$’ dengan menggunakan perintah perulangan for dimana user dapatmemasukkan panjang dan lebar sisi persegi tersebut.Jawaban :2. Buat segitiga siku-siku simbol ‘*’ dengan menggunakan perintah perulangan for dimanauser dapat memasukkan tinggi segitiga siku-siku tersebut.Jawaban :| <strong>Percabangan</strong> & <strong>Perulangan</strong> <strong>pada</strong> <strong>Python</strong> 34


3. Buat program menginput nama dan umur dengan kondisi sebagai berikut :a. Jika 10

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!