2019, Diszkrét matematika. 1. el adás

Hasonló dokumentumok
TANTÁRGYI ADATLAP. 2.7 A tantárgy jellege DI

2017, Diszkrét matematika

2019, Funkcionális programozás. 2. el adás. MÁRTON Gyöngyvér

2016, Diszkrét matematika

Imperatív programozás

2018, Diszkrét matematika

2018, Diszkrét matematika

2018, Diszkre t matematika. 8. elo ada s

2018, Diszkre t matematika. 10. elo ada s

2016, Diszkrét matematika

1. Egészítsük ki az alábbi Python függvényt úgy, hogy a függvény meghatározza, egy listába, az első n szám faktoriális értékét:

Python bevezető foglalkozás Python bevezető foglalkozás

2018, Diszkrét matematika

2016, Diszkrét matematika

2016, Diszkrét matematika

Python tanfolyam Python bevezető I. rész

Sapientia Egyetem, Műszaki és Humántudományok Tanszék.

2018, Diszkrét matematika

C programozás. { Márton Gyöngyvér, 2009 } { Sapientia, Erdélyi Magyar Tudományegyetem }

Funkcionális és logikai programozás. { Márton Gyöngyvér, 2012} { Sapientia, Erdélyi Magyar Tudományegyetem }

2018, Funkcionális programozás

2015, Diszkrét matematika

2019, Funkcionális programozás. 4. el adás. MÁRTON Gyöngyvér

Változók. Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai):

Ismerkedés a Python programnyelvvel. és annak micropython változatával

2018, Funkcionális programozás

Adattípusok, vezérlési szerkezetek. Informatika Szabó Adrienn szeptember 14.

2016, Funkcionális programozás

A Python programozási nyelv

Imperatív programozás

1. Alapok. #!/bin/bash

2018, Funkcionális programozás

Programozás I. 1. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Gyakorló feladatok Gyakorló feladatok

OOP I. Egyszerő algoritmusok és leírásuk. Készítette: Dr. Kotsis Domokos

Felvételi vizsga mintatételsor Informatika írásbeli vizsga

2018, Funkcionális programozás

2018, Diszkrét matematika

PYTHON. Avagy hosszú az út a BioPythonig

Információk. Ismétlés II. Ismétlés. Ismétlés III. A PROGRAMOZÁS ALAPJAI 2. Készítette: Vénné Meskó Katalin. Algoritmus. Algoritmus ábrázolása

Komputeralgebra Rendszerek

INFORMATIKA javítókulcs 2016

Mintavételes szabályozás mikrovezérlő segítségével

Sapientia Egyetem, Matematika-Informatika Tanszék.

Bevezetés a Python programozási nyelvbe

2019, Funkcionális programozás. 5. el adás. MÁRTON Gyöngyvér

BASH script programozás II. Vezérlési szerkezetek

BABEŞ BOLYAI TUDOMÁNYEGYETEM MATEMATIKA ÉS INFORMATIKA KAR BBTE Matek-Infó verseny 1. tételsor INFORMATIKA írásbeli. A versenyzők figyelmébe:

Sapientia Egyetem, Matematika-Informatika Tanszék.

Számítógépes Hálózatok. 1. Gyakorlat

Szkriptnyelvek. 1. UNIX shell

Java II. I A Java programozási nyelv alapelemei

RSA algoritmus. P(M) = M e mod n. S(C) = C d mod n. A helyesség igazoláshoz szükséges számelméleti háttér. a φ(n) = 1 mod n, a (a 1,a 2,...

Delphi programozás I.

Diszkrét matematika I. gyakorlat

Programozási nyelvek JAVA EA+GY 1. gyakolat

S z á m í t ó g é p e s a l a p i s m e r e t e k

A PROGRAMOZÁS ALAPJAI 3. Készítette: Vénné Meskó Katalin

sallang avagy Fordítótervezés dióhéjban Sallai Gyula

Szoftvertervezés és -fejlesztés I.

2015, Diszkrét matematika

Változók és adattípusok Változók és adattípusok

Sapientia Egyetem, Műszaki és Humántudományok Tanszék.

AWK programozás, minták, vezérlési szerkezetek

Operációs rendszerek. 9. gyakorlat. Reguláris kifejezések - alapok, BASH UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Diszkrét matematika I.

OOP #14 (referencia-elv)

Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós augusztus 29. Széchenyi István Egyetem, Gy r

Mechatronika és mikroszámítógépek 2017/2018 I. félév. Bevezetés a C nyelvbe

AWK programozás, minták, vezérlési szerkezetek

2016, Funkcionális programozás

Python I. Vincze Dávid Miskolci Egyetem, IIT

Nagy Gábor compalg.inf.elte.hu/ nagy ősz

Imperatív programozás

Operációs rendszerek. 11. gyakorlat. AWK - szintaxis, vezérlési szerkezetek UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

A C programozási nyelv I. Bevezetés

A C programozási nyelv I. Bevezetés

Programozási nyelvek Python

Bevezetés a programozásba I.

Programozás II. 2. Dr. Iványi Péter

Hálózatok építése és üzemeltetése

Programozás alapjai. 10. előadás

Java II. I A Java programozási nyelv alapelemei

HORVÁTH ZSÓFIA 1. Beadandó feladat (HOZSAAI.ELTE) ápr 7. 8-as csoport

2016, Diszkrét matematika

Számítógépes Hálózatok. 7. gyakorlat

Sapientia Egyetem, Műszaki és Humántudományok Tanszék.

A Python programozási nyelv

Felvételi tematika INFORMATIKA

Kifejezések. Kozsik Tamás. December 11, 2016

file./script.sh > Bourne-Again shell script text executable << tartalmat néz >>

Diszkrét matematika I.

Osztályozóvizsga és javítóvizsga témakörei Matematika 9. évfolyam

Programozás alapjai C nyelv 4. gyakorlat. Mit tudunk már? Feltételes operátor (?:) Típus fogalma char, int, float, double

Matematikai programok

Bevezetés a programozásba I.

Adatszerkezetek és algoritmusok

INFORMATIKA tétel 2019

Adatbázis és szoftverfejlesztés elmélet

Kifejezések. Kozsik Tamás. December 11, 2016

Átírás:

Diszkrét matematika 1. el adás mgyongyi@ms.sapientia.ro Sapientia Egyetem, Matematika-Informatika Tanszék Marosvásárhely, Románia 2019, szi félév

Követelmények, osztályozás Végs jegy: (írásbeli jegy + laborjegy)/2, ahol mindkét jegy el kell érje a 5 értéket. Jelenlét: a laborgyakorlat kötelez, hiányzás esetén kötelez az óra pótlása, ellenkez esetben nem lehet részt venni az els vizsgaalkalmon (egy tanévben 3 vizsgaalkalom van, kett közvetlenül az oktatási id szak után, a harmadik sszel van és ezért zetni kell). akinek a laborjegye legalább 7 az használhatja végs jegyként ezt a jegyet a félév során kétszer lesz laborfelmér, ahol mindkét jegy el kell érje a 5-t; a két jegy átlaga képezi a laborjegyet.

Követelmények Az els vizsga egy 9 pontos írásbeli tételsorból áll. Ez alkotja az írásbeli jegyet. Ezen csak akkor lehet részt venni, ha a laborjegy legalább 5. A második és harmadik vizsga szintén egy 9 pontos írásbeli tételsorból (ez alkotja az írásbeli jegyet, ha nem sikerül átmen jegyet szerezni az els alkalom során, vagy ha javítani szeretnénk), majd egy ezt követ feladatsorból áll, amelyeket számítógépen kell leprogramozni (ez alkotja a laborjegyet). A laborjegy, ha 5 felett van, akkor használható egész évben.

Könyvészet Bege A., Kása Z., Algoritmikus kombinatorika és számelmélet, Egyetemi Kiadó, Kolozsvár, 2006. Freud R., Gyarmati E., Számelmélet, Nemzeti Tankönyvkiadó, Budapest, 2000. Cormen T.H., Leiserson C.E., Rivest R.L., Algoritmusok, M szaki Könyvkiadó, Budapest, 2001. Lovász L., Pelikán J., Vesztergombi K., Diszkrét matematika, Typotex, Budapest, 2006. Rónyai L. Ivanyos G., Szabó R., Algoritmusok, Typotex, Budapest, 2004 Rosen K.H., Discrete Mathematics and its Applications, McGrawHill, New-York, 2012. Magnus Lie Hetland M.L., Beginning Python: From Novice to Professional, 2nd edition, Apress, 2008. https://realpython.com/ http://nyelvek.inf.elte.hu/leirasok/python/

Áttekint Számok, számlálási problémák számok, számtartományok sajátos számsorozatok: Fibonacci számok számok ábrázolása, számrendszerek Számelméleti alapfogalmak prímszámok, prímtesztel algoritmusok legnagyobb közös osztó, legkisebb közös többszörös, az eukleidészi algoritmus és változatai kongruenciák, kongruencia rendszerek, Kínai maradéktétel, egész számok faktorizációja, alkalmazás: az RSA klasszikus algoritmusa, Die-Helmann kulcscsere.

Áttekint Kódolási technikák az ASCII kód, a base64 kód Álvéletlen-szám generátorok Lineáris kongruencián alapuló generátor A közép-négyzet módszer a Python álvéletlen számgenerátora Kombinatorika Lexicograkus sorrend, permutációk, kombinációk, variációk

Bevezet diszkrét matematika algoritmusok, minden algoritmust, programot Python programozási nyelvben írunk, verzió: Python 3.7.0, https://www.python.org/ a Python 1991-ben jelent meg, Guido van Rossum kezdte el fejleszteni, Python, tulajdonságok: magasszint adatszerkezetek: listák, ennesek (tuple), stringek, halmazok, stb., dinamikus típusosság, automatikus memóriakezelés, objektum orientáltság, rövid programok írása gyors és egyszer interpreter: a saját utasításait bemen adatként kezeli, ezeket átalakítja a futtató gép utasításává, majd rögtön futtatja, ellentétben a fordító (kompilátor) típusú programozási nyelvekkel a Python tulajdonképpen nem interpreter: byte kódot fordít és futtat

Python, elemi kódsorok Példák: a Python instalálása, majd indítása után megjelenik egy ablak egy kétsoros standard szöveggel (Python verzió szám, stb.) és a prompt: > a prompt után kifejezések, utasítások írhatóak, amelyeket a Python interpretere rögtön kiértékel: >>> print ("Hello vilag!") Hello vilag! >>> 251 + 965 1216 >>> 2 ** 100 1267650600228229401496703205376 #A Python 3.7.0 tetszoleges nagy, egész számokkal is tud muveleteket vegezn >>> import math >>> math.sqrt(10) 3.1622776601683795

Python, elemi kódsorok Példák: >>> x = 10 #enter-t kell nyomni! >>> y = 13 #enter-t kell nyomni! >>> if x > y: print (x,' nagyobb, mint ',y) #enter-t kell nyomni!! else: print (y, ' nagyobb vagy egyenlo, mint ', x) #ketszer kell enter-t nyomni!! 13 nagyobb vagy egyenlo, mint 10 >>> for i in range(10): print (i) #ugyeljunk a tordelesre!! 0 1... 9

Python, szintaxis Megjegyzések, "kommentek" használata: egysoros megjegyzés: #ez egy egysoros megjegyzés többsoros megjegyzés: """ez egy többsoros megjegyzés"""

Python, elemi kódsorok Példák: >>> for i in range(10): print (i, end = " ") 0 1 2 3 4 5 6 7 8 9 >>> for i in range(10): print (i, end = "") 0123456789 >>> for i in range(10): print (2 ** i, end = " ") 1 2 4 8 16 32 64 128 256 512

A programírás lépései az interpreterbe beírt kifejezések, utasítások elvesznek, ha kilépünk a Pythonból, IDLE (integrated development environment): a Python standard fejleszt i környezete, programszerkesztésre, mentésre, állomány megnyításra, futtatásra ad lehet séget, a kódszerkeszt t a File/New File menüpontból lehet elindítani a kódszerkeszt menüpontjai: File/New File -új állomány létrehozása; File/Save -állomány mentése, Run/Run Module vagy Ctrl + F5 -a program futtatása a Python shell-b l stb. Python program: scriptnek is mondják

A programírás lépései mentsük el eload1.py néven azt az állományt, amelybe a következ kódsorokat tettük: n = 20 for i in range(n): print (i/2, end = ", ") IDLE alól való futtatás: Ctrl + F5 az eredmény (2-vel való valós osztás): 0.0, 0.5, 1.0, 1.5, 2.0,..., 9.0, 9.5, parancssorból való futtatás: Windows: be kell állítani a PATH környezetváltozót (environment variable), úgy hogy megadjuk a python.exe állomány elérési útvonalát (System/Advanced system settings) a parancssorban a CD rendszerparanccsal kiválasztjuk azt a mappát, ahol az eload1.py állomány van futtatás: C:\> python eload1.py futtatás: kétszer klikkelve az eload1.py-on

Python, szintaxis A programozási nyelvek egyik alapfogalma a változó: A változók értékek tárolását teszik lehet vé, a pontos jelentés programozási nyelvekt l függ en változik. A változók értéke: értékadás, értékmodósító utasításokkal határozzuk meg. A változók típusa: a típus alapján d l el, hogy a milyen fajta értékeket kezel/tárol. A változókkal végzett m veletsorok képezik a programírás alapjait. Python változó: nincs explicit változódeklarálás. A változódeklarálás automatikus, pl. értékadás során. más alapfogalomak: operátor, függvény: Az értékadó operátor az egyenl ség (=). A print függvény kiértékeli a zárójelben megadott kifejezést, és az eredményt kiírja a standard kimenetre. input - adatbeviteli függvény, a beviteli értéket át kell alakítani

Alaptípusok/osztályok a Pythonban Kezd programozók számára az osztályok és típusok egy fogalmat jelölnek, jelzik hogy milyen fajta adattal dolgozunk. Egy adott érték típusa pont olyan fontos informatikai fogalom, mint az érték. alaptípusok: int, oat, str, bool >>> type(103373189) <class 'int'> >>> type(106.909) <class 'float'> >>> type(true) <class 'bool'> >>> type('helo vilag') <class 'str'> >>> type("helo vilag") <class 'str'> Karakterláncok (str) jelölésére egyformán használhatjuk a ', illetve " szimbólumokat

Típusok közötti átalakítások Egész számmá alakítunk: >>> int(23.11) 23 >>> int(23.0) 23 >>> int(-23.900) -23 >>> int(10/3) 3 >>> int('23 szo') Traceback (most recent call last): File "<pyshell#25>", line 1, in <module> int('23 szo') ValueError: invalid literal for int() with base 10: '23 szo'

Típusok közötti átalakítások Valós számmá alakítunk: >>> float(15) 15.0 >>> float('23.67') 23.67 Karakterlánc típussá alakítunk: >>> str(12) '12' >>> str(12.67) '12.67' >>> str(true) 'True'

Python, szintaxis más alapfogalmak: utasítás, operátor, függvény: kommenteljük ki az el z kódsorokat (használjunk # -t a sorok elején) és most írjuk a következ ket az eload1.py állományba: print ("n:", end = " ") n = int(input()) for i in range(1, n + 1): print ("az osztasi egészrész", i, "-el: ", end = "") print (n // i) az eredmény: n: 6 az osztasi egeszresz 1 -el: 6 az osztasi egeszresz 2 -el: 3 az osztasi egeszresz 3 -el: 2 az osztasi egeszresz 4 -el: 1 az osztasi egeszresz 5 -el: 1 az osztasi egeszresz 6 -el: 1

Algoritmusok Pythonban 1. feladat Határozzuk meg a beolvasott számok legkisebbikét, függvényt alkalmazva. Saját függvényeket is írhatunk, kommenteljük ki a korábban írt kódsorokat és írjuk a következ ket az eload1.py állományba: def fugv1(): print ('n:', end = " ") n = int (input()) IDLE alól való fordítás: Ctrl + F5 IDLE alól való fordítás után: >>> fugv1() print ('x:', end = " ") x = int (input()) m = x for i in range (0, n-1): print ('x:', end = " ") x = int (input()) if x < m: m = x return m ÁRTON Gyöngyvér

Python, szintaxis A függvények a bemeneti értéken/értékhalmazon elvégeznek egy m veletsort meghatározva egy kimeneti értéket/értékhalmazt. Python függvénydeniálás: def <fvnév> ( <paramlista> ) : <fügvtörzs> Az utolsó sorban lev return utasítás teszi lehet vé, hogy a függvény értéket adjon vissza, az el z példánál a függvény visszatéríti a legkisebb értéket a beolvasott értékek közül a Python esetében nem kötelez a return használata.

Python, szintaxis a range függvény egy számsorozatot generál, a megadott határértékekkel a for ciklusutasítás deniálása: for <elem> in <halmaz> : <ciklustörzs> A for a halmaz minden elem elemére végrehajtja a ciklustörzs részt. az if elágazásutasítás deniálása: if <kif> : <elágazástörzs> (elif < kif > : <elágazástörzs>) [else : <elágazástörzs>] ha igaz a megfelel kif kifejezés, akkor a megfelel elágazástörzs hajtódik végre. Az elif, else ágak nem kötelez ek.

Algoritmusok Pythonban 2. feladat Végezzünk alap aritmetikai m veleteket. def muveletek (x, y): return (x + y, x - y, x * y, x // y, x % y, x / y ) def fugv2(): print ('x:', end = " ") x = int (input()) print ('y:', end = " ") y = int (input()) e1, e2, e3, e4, e5, e6 = muveletek(x, y) print ("osszeg: ", e1) print ("kulonbseg: ", e2) print ("szorzat: ", e3) print ("osztasi egeszresz: ", e4) print ("osztasi maradek: ", e5) print ("valos osztas: ", e6)

Algoritmusok Pythonban Az eload1.py állományba írt függvények bármelyike, fordítás után meghívható, a Python shell-ben: >>> muveletek (25, 3) (28, 22, 75, 8, 1, 8.333333333333334) >>> fugv2() x: 91 y: 42 osszeg: 133 kulonbseg: 49 szorzat: 3822 osztasi egeszresz: 2 osztasi maradek: 7 valos osztas: 2.1666666666666665 Vegyük észre, hogy a fugv2 meghívja a muveletek függvényt. A fugv2-nek nincs bemeneti paramétere, a muveletek-nek azonban két bemeneti paraméter értékét kell megadni.

Alapm veletek karakterláncokkal: +, * operátorok >>> str1 = "Diszkrét" >>> str2 = " Matematika" >>> str3 = " I. félév" >>> strt = str1 + str2 + str3 >>> print (strt) 'Diszkrét Matematika I. félév' >>> strt = 3 * 'Helo ' >>> strt 'Helo Helo Helo '

Algoritmusok Pythonban 3. feladat Készítsünk meghívót az Egyetem Napja alkalmából! def meghivo(): diakok = ['Mari', 'Szabi', 'Kati', 'Feri'] for d in diakok: meghivo1 = 'Kedves ' + d + '! \n\ntisztelettel meghívjuk az Egyetem' meghivo2 = '\nnapja alkalmából tartott eloadássorozatra!\n\n' print (meghivo1 + meghivo2) >>> meghivo() Kedves Mari! Tisztelettel meghívjuk az Egyetem Napja alkalmából tartott eloadássorozatra! Kedves Szabi!...