Informatika1-2012/Gyakorlat7

A MathWikiből
(Változatok közti eltérés)
 
(egy szerkesztő 20 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
* Mélységi keresés (előadás)
+
* 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]
 
* 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===
22. 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ó===
* Python interaktív mód
+
====Interaktív mód====
 
<bash>
 
<bash>
 
robee64@M14Z:~$ python
 
robee64@M14Z:~$ python
32. sor: 62. sor:
 
>>> exit()
 
>>> exit()
 
</python>
 
</python>
 +
====Scriptek====
 
* Python script meghívása
 
* Python script meghívása
 
<bash>
 
<bash>
40. 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):
48. 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>
65. sor: 98. sor:
 
main()
 
main()
 
</python>
 
</python>
* Command line argumentumok
+
* 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>
 +
#!/usr/bin/python
 +
#coding: utf-8
 +
x=float(sys.argv[1])
 
</python>
 
</python>
* File I/O
+
====File I/O====
** MIT nyitok meg
+
* MIT nyitok meg
** "HOGYAN": 'r','w','a' (read, write, append)
+
* "HOGYAN": 'r','w','a' (read, write, append)
 
<python>
 
<python>
f = open('elso.txt', 'r')
+
f = open('input.txt', 'r')
 
#fileString=f.read()
 
#fileString=f.read()
 
#lineString = f.readline()
 
#lineString = f.readline()
82. sor: 129. sor:
 
             print i
 
             print i
 
f_out = open('out.txt', 'w')
 
f_out = open('out.txt', 'w')
f_out.write('This is how we write out into a given file\n')
+
f_out.write('This is how we write out number into a file:' + str(6) + '\n')
 
</python>
 
</python>
* Ciklusok, stb. hasonlóak, mint sage-ben.
 
  
 
===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, 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., 15:27-kori változata

Tartalomjegyzék

Ismétlés

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()
Személyes eszközök