Сабақтарының әдістемелік нұсқаулығы 5В070300 «Ақпараттық жүйелер»



Дата14.06.2022
өлшемі0.71 Mb.
#459213
түріСабақ
4 ашык сабак


ҚАЗАҚ ИННОВАЦИЯЛЫҚ ГУМАНИТАРЛЫҚ ЗАҢ УНИВЕРСИТЕТІ

«Жобалауды талдау» пәнінің зертханалық


сабақтарының әдістемелік нұсқаулығы

Семей, 2018 ж.


Зертханалық сабақтарының әдістемелік нұсқаулығы 5В070300 «Ақпараттық жүйелер» мамандығының 3 курс студенттеріне арналып құрастырылған.

Құрастырушы: И.К.Каскабаева, аға оқытушы, магистр кафедра «Информатика және математика»


14 зертханалық сабақ


Тақырып: Python бағдарламалау тілінде күрделі бағдарламаларды құру.
Сабақ мақсаты: Python бағдарламалау тілінде бірнеше күрделі бағдарламаларды құра отырып, олардың функцияларын, модульдерін бір – бірінен ажырату.
Тапсырма:

  1. «Каратэ» символының бағдарламасын құр

  2. «Күн жүйесі немесе планета айналымы» бағдарламасын құр.

  3. «Табиғат. Қарапайым Теректер» бағдарламасын құр

  4. «Түс өзгерту өлшемі» бағдарламасын құр

  5. «Жылан» ойынының бағдарламасын құр.



Қажетті құралдар: ДК, Python бағдарламалау тілі
Зертханалық жұмысты орындауға арналған әдістемелік нұсқаулар:

  1. Әдiстемелiк нұсқаулармен танысу.

  2. Python бағдарламлау тілінде «Каратэ» символының бағдарламасын құру




#!/usr/bin/env python3
""" turtle-example-suite:

tdemo_yinyang.py

Another drawing suitable as a beginner's
programming example.

The small circles are drawn by the circle


command.

"""


from turtle import *

def yin(radius, color1, color2):


width(3)
color("black", color1)
begin_fill()
circle(radius/2., 180)
circle(radius, 180)
left(180)
circle(-radius/2., 180)
end_fill()
left(90)
up()
forward(radius*0.35)
right(90)
down()
color(color1, color2)
begin_fill()
circle(radius*0.15)
end_fill()
left(90)
up()
backward(radius*0.35)
down()
left(90)

def main():


reset()
yin(200, "black", "white")
yin(200, "white", "black")
ht()
return "Done!"

if __name__ == '__main__':


main()


  1. Python бағдарламлау тілінде «Күн жүйесі немесе планета айналымы» бағдарламасын құру.




#!/usr/bin/env python3


""" turtle-example-suite:

tdemo_yinyang.py

Another drawing suitable as a beginner's
programming example.

The small circles are drawn by the circle


command.

"""


from turtle import *

def yin(radius, color1, color2):


width(3)
color("black", color1)
begin_fill()
circle(radius/2., 180)
circle(radius, 180)
left(180)
circle(-radius/2., 180)
end_fill()
left(90)
up()
forward(radius*0.35)
right(90)
down()
color(color1, color2)
begin_fill()
circle(radius*0.15)
end_fill()
left(90)
up()
backward(radius*0.35)
down()
left(90)

def main():


reset()
yin(200, "black", "white")
yin(200, "white", "black")
ht()
return "Done!"

if __name__ == '__main__':


main()
mainloop()



  1. Python бағдарламлау тілінде «Табиғат. Қарапайым Теректер» бағдарламасын құру.


#!/usr/bin/env python3


""" turtlegraphics-example-suite:

tdemo_forest.py

Displays a 'forest' of 3 breadth-first-trees
similar to the one in tree.
For further remarks see tree.py

This example is a 'breadth-first'-rewrite of


a Logo program written by Erich Neuwirth. See
http://homepage.univie.ac.at/erich.neuwirth/
"""
from turtle import Turtle, colormode, tracer, mainloop
from random import randrange
from time import perf_counter as clock

def symRandom(n):


return randrange(-n,n+1)

def randomize( branchlist, angledist, sizedist ):


return [ (angle+symRandom(angledist),
sizefactor*1.01**symRandom(sizedist))
for angle, sizefactor in branchlist ]

def randomfd( t, distance, parts, angledist ):


for i in range(parts):
t.left(symRandom(angledist))
t.forward( (1.0 * distance)/parts )

def tree(tlist, size, level, widthfactor, branchlists, angledist=10, sizedist=5):


# benutzt Liste von turtles und Liste von Zweiglisten,
# fuer jede turtle eine!
if level > 0:
lst = []
brs = []
for t, branchlist in list(zip(tlist,branchlists)):
t.pensize( size * widthfactor )
t.pencolor( 255 - (180 - 11 * level + symRandom(15)),
180 - 11 * level + symRandom(15),
0 )
t.pendown()
randomfd(t, size, level, angledist )
yield 1
for angle, sizefactor in branchlist:
t.left(angle)
lst.append(t.clone())
brs.append(randomize(branchlist, angledist, sizedist))
t.right(angle)
for x in tree(lst, size*sizefactor, level-1, widthfactor, brs,
angledist, sizedist):
yield None

def start(t,x,y):


colormode(255)
t.reset()
t.speed(0)
t.hideturtle()
t.left(90)
t.penup()
t.setpos(x,y)
t.pendown()

def doit1(level, pen):


pen.hideturtle()
start(pen, 20, -208)
t = tree( [pen], 80, level, 0.1, [[ (45,0.69), (0,0.65), (-45,0.71) ]] )
return t

def doit2(level, pen):


pen.hideturtle()
start(pen, -135, -130)
t = tree( [pen], 120, level, 0.1, [[ (45,0.69), (-45,0.71) ]] )
return t

def doit3(level, pen):


pen.hideturtle()
start(pen, 190, -90)
t = tree( [pen], 100, level, 0.1, [[ (45,0.7), (0,0.72), (-45,0.65) ]] )
return t

# Hier 3 Baumgeneratoren:


def main():
p = Turtle()
p.ht()
tracer(75,0)
u = doit1(6, Turtle(undobuffersize=1))
s = doit2(7, Turtle(undobuffersize=1))
t = doit3(5, Turtle(undobuffersize=1))
a = clock()
while True:
done = 0
for b in u,s,t:
try:
b.__next__()
except:
done += 1
if done == 3:
break

tracer(1,10)


b = clock()
return "runtime: %.2f sec." % (b-a)

if __name__ == '__main__':


main()
mainloop()


  1. Python бағдарламлау тілінде «Түс өзгерту өлшемі» бағдарламасын құру.





# colormixer













from turtle import Screen, Turtle, mainloop










class ColorTurtle(Turtle):










def __init__(self, x, y):




Turtle.__init__(self)




self.shape("turtle")




self.resizemode("user")




self.shapesize(3,3,5)




self.pensize(10)




self._color = [0,0,0]




self.x = x




self._color[x] = y




self.color(self._color)




self.speed(0)




self.left(90)




self.pu()




self.goto(x,0)




self.pd()




self.sety(1)




self.pu()




self.sety(y)




self.pencolor("gray25")




self.ondrag(self.shift)










def shift(self, x, y):




self.sety(max(0,min(y,1)))




self._color[self.x] = self.ycor()




self.fillcolor(self._color)




setbgcolor()










def setbgcolor():




screen.bgcolor(red.ycor(), green.ycor(), blue.ycor())










def main():




global screen, red, green, blue




screen = Screen()




screen.delay(0)




screen.setworldcoordinates(-1, -0.3, 3, 1.3)










red = ColorTurtle(0, .5)




green = ColorTurtle(1, .5)




blue = ColorTurtle(2, .5)




setbgcolor()










writer = Turtle()




writer.ht()




writer.pu()




writer.goto(1,1.15)




writer.write("DRAG!",align="center",font=("Arial",30,("bold","italic")))




return "EVENTLOOP"










if __name__ == "__main__":




msg = main()




print(msg)




mainloop()


  1. Python бағдарламлау тілінде «Жылан» ойынының бағдарламасын құру




from tkinter import *
import random

# Globals


WIDTH = 800
HEIGHT = 600
SEG_SIZE = 20
IN_GAME = True

# Helper functions


def create_block():
""" Creates an apple to be eaten """
global BLOCK
posx = SEG_SIZE * random.randint(1, (WIDTH-SEG_SIZE) / SEG_SIZE)
posy = SEG_SIZE * random.randint(1, (HEIGHT-SEG_SIZE) / SEG_SIZE)
BLOCK = c.create_oval(posx, posy,
posx+SEG_SIZE, posy+SEG_SIZE,
fill="red")
def main():
""" Handles game process """
global IN_GAME
if IN_GAME:
s.move()
head_coords = c.coords(s.segments[-1].instance)
x1, y1, x2, y2 = head_coords
# Check for collision with gamefield edges
if x2 > WIDTH or x1 < 0 or y1 < 0 or y2 > HEIGHT:
IN_GAME = False
# Eating apples
elif head_coords == c.coords(BLOCK):
s.add_segment()
c.delete(BLOCK)
create_block()
# Self-eating
else:
for index in range(len(s.segments)-1):
if head_coords == c.coords(s.segments[index].instance):
IN_GAME = False
root.after(100, main)
# Not IN_GAME -> stop game and print message
else:
c.create_text(WIDTH/2, HEIGHT/2,
text="GAME OVER!",
font="Arial 20",
fill="red")
class Segment(object):
""" Single snake segment """
def __init__(self, x, y):
self.instance = c.create_rectangle(x, y,
x+SEG_SIZE, y+SEG_SIZE,
fill="white")

class Snake(object):


""" Simple Snake class """
def __init__(self, segments):
self.segments = segments
# possible moves
self.mapping = {"Down": (0, 1), "Right": (1, 0),
"Up": (0, -1), "Left": (-1, 0)}
# initial movement direction
self.vector = self.mapping["Right"]

def move(self):


""" Moves the snake with the specified vector"""
for index in range(len(self.segments)-1):
segment = self.segments[index].instance
x1, y1, x2, y2 = c.coords(self.segments[index+1].instance)
c.coords(segment, x1, y1, x2, y2)

x1, y1, x2, y2 = c.coords(self.segments[-2].instance)


c.coords(self.segments[-1].instance,
x1+self.vector[0]*SEG_SIZE, y1+self.vector[1]*SEG_SIZE,
x2+self.vector[0]*SEG_SIZE, y2+self.vector[1]*SEG_SIZE)

def add_segment(self):


""" Adds segment to the snake """
last_seg = c.coords(self.segments[0].instance)
x = last_seg[2] - SEG_SIZE
y = last_seg[3] - SEG_SIZE
self.segments.insert(0, Segment(x, y))

def change_direction(self, event):


""" Changes direction of snake """
if event.keysym in self.mapping:
self.vector = self.mapping[event.keysym]

# Setting up window


root = Tk()
root.title("PythonicWay Snake")

c = Canvas(root, width=WIDTH, height=HEIGHT, bg="#003300")


c.grid()
# catch keypressing
c.focus_set()
# creating segments and snake
segments = [Segment(SEG_SIZE, SEG_SIZE),
Segment(SEG_SIZE*2, SEG_SIZE),
Segment(SEG_SIZE*3, SEG_SIZE)]
s = Snake(segments)
# Reaction on keypress
c.bind("", s.change_direction)

create_block()


main()
root.mainloop()

Өзін-өзі бақылауға арналған сұрақтар:

  1. Python бағдарламалау тілінде модульдерге анықтама беріңіз.

  2. Модульдердің айырмашылығы неде?

  3. Функцияларды ата.



Есеп беру түрі: Орындалған тапсырманың электронды нұсқасын оқытушыға тексерту, сұрақтарына ауызша жауап беру.



Достарыңызбен бөлісу:




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет