Informatika1-2012/Gyakorlat7
A MathWikiből
(Változatok közti eltérés)
(egy szerkesztő 29 közbeeső változata nincs mutatva) | |||
1. sor: | 1. sor: | ||
==Ismétlés== | ==Ismétlés== | ||
− | + | * előző gyakorlat [https://omnibus2.math.bme.hu:8000/home/pub/6/ sage worksheet] | |
* BFS | * BFS | ||
* DFS | * DFS | ||
* Dijkstra algoritmus | * Dijkstra algoritmus | ||
− | * | + | * Bináris keresés rendezett listában ([https://omnibus2.math.bme.hu:8000/home/pub/4/ előadás]) |
+ | * Kódolni jó! [https://dl.dropbox.com/u/1100162/coding.png coding] | ||
+ | * https://docs.google.com/document/d/1sn7MQl8hyO0ixGrzFWusmmqFbv1x_rwyDEP2PFUHpXA/edit | ||
==Analitikus számítások sage-ben== | ==Analitikus számítások sage-ben== | ||
− | + | * http://www.sagemath.org/doc/tutorial/tour_algebra.html | |
+ | *Egyenletek | ||
+ | <python> | ||
+ | sage: x = var('x') | ||
+ | sage: solve(x^2 + 3*x + 2, x) | ||
+ | </python> | ||
+ | <python> | ||
+ | sage: x, b, c = var('x b c') | ||
+ | sage: solve([x^2 + b*x + c == 0],x) | ||
+ | </python> | ||
+ | * Deriválás | ||
+ | <python> | ||
+ | sage: u = var('u') | ||
+ | sage: diff(sin(u), u) | ||
+ | </python> | ||
+ | *n-edik derivált: | ||
+ | <python> | ||
+ | sage: diff(sin(x^2), x, 4) | ||
+ | </python> | ||
+ | * Határozatlan integrálás | ||
+ | <python> | ||
+ | sage: integral(x*sin(x^2), x) | ||
+ | </python> | ||
+ | * Határozott integrálás | ||
+ | <python> | ||
+ | sage: integral(x/(x^2+1), x, 0, 1) | ||
+ | </python> | ||
+ | * Egyenletrendszerek, differenciálegyenletek ... | ||
==Python== | ==Python== | ||
===Bevezetés=== | ===Bevezetés=== | ||
21. sor: | 50. sor: | ||
* file I/O | * file I/O | ||
* modulok és importálásuk | * modulok és importálásuk | ||
+ | * függvények | ||
+ | * argumentumok | ||
===Néhány hasznos tudnivaló=== | ===Néhány hasznos tudnivaló=== | ||
− | + | ====Interaktív mód==== | |
<bash> | <bash> | ||
robee64@M14Z:~$ python | robee64@M14Z:~$ python | ||
31. sor: | 62. sor: | ||
>>> exit() | >>> exit() | ||
</python> | </python> | ||
+ | ====Scriptek==== | ||
* Python script meghívása | * Python script meghívása | ||
<bash> | <bash> | ||
39. sor: | 71. sor: | ||
>>> import random | >>> import random | ||
>>> import math | >>> import math | ||
+ | >>> import sys | ||
</python> | </python> | ||
* Egy példa scriptre (és az input() függvényre): | * Egy példa scriptre (és az input() függvényre): | ||
47. sor: | 80. sor: | ||
print "Ennél eggyel kisebbet mondtál: ", str(s+1) | print "Ennél eggyel kisebbet mondtál: ", str(s+1) | ||
</python> | </python> | ||
+ | ====Függvények==== | ||
* Függvény definiálása | * Függvény definiálása | ||
<python> | <python> | ||
64. sor: | 98. sor: | ||
main() | main() | ||
</python> | </python> | ||
− | * | + | * Ciklusok, stb. hasonlóak, mint sage-ben. |
+ | |||
+ | ====Argumentumok==== | ||
+ | * indexelés! | ||
<python> | <python> | ||
+ | #!/usr/bin/python | ||
+ | #coding: utf-8 | ||
+ | import sys | ||
+ | |||
+ | for arg in sys.argv: | ||
+ | print arg | ||
</python> | </python> | ||
− | |||
− | |||
− | |||
<python> | <python> | ||
− | f = open(' | + | #!/usr/bin/python |
+ | #coding: utf-8 | ||
+ | x=float(sys.argv[1]) | ||
+ | </python> | ||
+ | ====File I/O==== | ||
+ | * MIT nyitok meg | ||
+ | * "HOGYAN": 'r','w','a' (read, write, append) | ||
+ | <python> | ||
+ | f = open('input.txt', 'r') | ||
+ | #fileString=f.read() | ||
+ | #lineString = f.readline() | ||
+ | for line in f: | ||
+ | L=[] | ||
+ | L=line.split(" ") | ||
+ | for i in L: | ||
+ | print i | ||
+ | f_out = open('out.txt', 'w') | ||
+ | f_out.write('This is how we write out number into a file:' + str(6) + '\n') | ||
</python> | </python> | ||
===Feladatok=== | ===Feladatok=== | ||
+ | * Írj programot, mely egy argumentumként kapott számig kiírja 1-től az egész számokat a szintén argumentumként megadott file-ba. | ||
+ | * Írj programot, ami egy két oszlopos file-t (az oszlopokat " " választja el) minden sorában összeadja az elemeket. A file bemenő és kimeneti file-ok nevét a program argumentumként kapja meg. A kimenet 3 oszlopból álljon, mely tartalmazza az eredeti oszlopokat, és - harmadikként - az összeget. Törekedj beszélő változónevek megadására. | ||
+ | * Struktúráld át úgy az előző programodat, az összeadásra írj egy külön függvényt. | ||
+ | |||
+ | |||
+ | ===Feladatok Megoldásai=== | ||
+ | |||
+ | ====1. Feladat==== | ||
+ | |||
+ | <python> | ||
+ | import sys | ||
+ | |||
+ | def main(): | ||
+ | n=int(sys.argv[1]) | ||
+ | f_out=open(sys.argv[2],'w') | ||
+ | for i in range(n): | ||
+ | f_out.write(str(i+1) + "\n") | ||
+ | |||
+ | main() | ||
+ | |||
+ | </python> | ||
+ | |||
+ | ====2. Feladat==== | ||
+ | <python> | ||
+ | import sys | ||
+ | |||
+ | def main(): | ||
+ | f_in=open(sys.argv[1],'r') | ||
+ | f_out=open(sys.argv[2],'w') | ||
+ | for line in f_in: | ||
+ | L=line.split(" ") | ||
+ | x1=float(L[0]) | ||
+ | x2=float(L[1]) | ||
+ | sum=x1+x2 | ||
+ | f_out.write(str(x1) + " " + str(x2) + " " + str(sum) + "\n") | ||
+ | |||
+ | main() | ||
+ | |||
+ | </python> |
A lap jelenlegi, 2012. november 14., 16:27-kori változata
Tartalomjegyzék |
Ismétlés
- előző gyakorlat sage worksheet
- BFS
- DFS
- Dijkstra algoritmus
- Bináris keresés rendezett listában (előadás)
- Kódolni jó! coding
- https://docs.google.com/document/d/1sn7MQl8hyO0ixGrzFWusmmqFbv1x_rwyDEP2PFUHpXA/edit
Analitikus számítások sage-ben
sage: x = var('x') sage: solve(x^2 + 3*x + 2, x)
sage: x, b, c = var('x b c') sage: solve([x^2 + b*x + c == 0],x)
- Deriválás
sage: u = var('u') sage: diff(sin(u), u)
- n-edik derivált:
sage: diff(sin(x^2), x, 4)
- Határozatlan integrálás
sage: integral(x*sin(x^2), x)
- Határozott integrálás
sage: integral(x/(x^2+1), x, 0, 1)
- Egyenletrendszerek, differenciálegyenletek ...
Python
Bevezetés
- magas szintű programozási nyelv
- interpreteres nyelv
- objektumorientált
- free and open source
- terminál -> Python -> interaktív mód
- Python scriptek
Célok
- Python scriptek írása
- file I/O
- modulok és importálásuk
- függvények
- argumentumok
Néhány hasznos tudnivaló
Interaktív mód
robee64@M14Z:~$ python
- Kilépés python-ból:
>>> exit()
Scriptek
- Python script meghívása
robee64@M14Z:~$ python proba.py
- Modulok improtálása pythonban
>>> import random >>> import math >>> import sys
- Egy példa scriptre (és az input() függvényre):
#!/usr/bin/python #coding=UTF-8 s = input("Mondj egy számot:") print "Ennél eggyel kisebbet mondtál: ", str(s+1)
Függvények
- Függvény definiálása
def proba(): ...
- Példa függvényekre:
def main(): userNumber=getNumber() print "Ennel eggyel kisebbet mondtal: ", str(userNumber+1) def getNumber(): num = input("Mondj egy szamot:") return num main()
- Ciklusok, stb. hasonlóak, mint sage-ben.
Argumentumok
- indexelés!
#!/usr/bin/python #coding: utf-8 import sys for arg in sys.argv: print arg
#!/usr/bin/python #coding: utf-8 x=float(sys.argv[1])
File I/O
- MIT nyitok meg
- "HOGYAN": 'r','w','a' (read, write, append)
f = open('input.txt', 'r') #fileString=f.read() #lineString = f.readline() for line in f: L=[] L=line.split(" ") for i in L: print i f_out = open('out.txt', 'w') f_out.write('This is how we write out number into a file:' + str(6) + '\n')
Feladatok
- Írj programot, mely egy argumentumként kapott számig kiírja 1-től az egész számokat a szintén argumentumként megadott file-ba.
- Írj programot, ami egy két oszlopos file-t (az oszlopokat " " választja el) minden sorában összeadja az elemeket. A file bemenő és kimeneti file-ok nevét a program argumentumként kapja meg. A kimenet 3 oszlopból álljon, mely tartalmazza az eredeti oszlopokat, és - harmadikként - az összeget. Törekedj beszélő változónevek megadására.
- Struktúráld át úgy az előző programodat, az összeadásra írj egy külön függvényt.
Feladatok Megoldásai
1. Feladat
import sys def main(): n=int(sys.argv[1]) f_out=open(sys.argv[2],'w') for i in range(n): f_out.write(str(i+1) + "\n") main()
2. Feladat
import sys def main(): f_in=open(sys.argv[1],'r') f_out=open(sys.argv[2],'w') for line in f_in: L=line.split(" ") x1=float(L[0]) x2=float(L[1]) sum=x1+x2 f_out.write(str(x1) + " " + str(x2) + " " + str(sum) + "\n") main()