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



Дата14.06.2022
өлшемі0.71 Mb.
#459213
түріСабақ
4 ашык сабак
ked 2018 түнгі, MS SQL Server рп силлабус

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

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


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

Семей, 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 2023
әкімшілігінің қараңыз

    Басты бет