Практикум по программированию для школьников: различия между версиями

Материал из ALT Linux Wiki
Нет описания правки
Нет описания правки
Строка 3: Строка 3:


Некоторые программы, здесь уже размещённые, могут быть катастрофически не дописаны. Это очень хорошо, ведь над такой программой ещё можно работать.
Некоторые программы, здесь уже размещённые, могут быть катастрофически не дописаны. Это очень хорошо, ведь над такой программой ещё можно работать.
= Для начала =
= Для начала (некоторые примеры)=
== Тренажёр для изучения координат ==
== Тренажёр для изучения координат ==
Программа, интересная и как тренажёр для учебной работы с координатами (5-7 класс) и как пример несложной программы, которую может написать (или разобраться в её коде) начинающий программист (8-9 класс)
Программа, интересная и как тренажёр для учебной работы с координатами (5-7 класс) и как пример несложной программы, которую может написать (или разобраться в её коде) начинающий программист (8-9 класс)
Строка 55: Строка 55:
         okno.title("Не правильно! Левая кнопка мыши нажата" + str(event.x) + " " + str(event.y))     
         okno.title("Не правильно! Левая кнопка мыши нажата" + str(event.x) + " " + str(event.y))     
holst.bind('<Button-1>', gdelevyklik)
holst.bind('<Button-1>', gdelevyklik)
</syntaxhighlight>
== Построение перпендикуляра ==
<syntaxhighlight lang="python">
from tkinter import *
import random
okno = Tk()
okno.geometry('1500x800+10+10')
okno.resizable(False,False)
holst = Canvas(okno,width = 1500,height=700, bg = "white")
holst.pack(expand='true')
tochki = [] #Массив точек
chislo_tochek = 0
rejim = 0
def rejim_perp():
  global regim, chislo_tochek
  okno.title("Режим работы программы: ""Перпендикуляр"" ")
  rejim = 4
  chislo_tochek = 0
  tochki = []
  holst.bind('<Button-1>',perp)
def perp(event):
  global chislo_tochek
  global tochki
  tochki.append([event.x,event.y])
  chislo_tochek = chislo_tochek + 1
  holst.create_oval(event.x-3, event.y-3,event.x+3, event.y+3,fill="black")
  if (chislo_tochek == 2):
        holst.create_line(tochki[0][0],tochki[0][1],tochki[1][0],tochki[1][1])
  if (chislo_tochek == 3):       
    x = tochki[2][0]+50
    y = x*(tochki[0][0]-tochki[1][0])/(tochki[1][1]-tochki[0][1])-(tochki[2][0]*(tochki[0][0]-tochki[1][0])/(tochki[1][1]-tochki[0][1]))+tochki[2][1]
    holst.create_line(x,y,tochki[2][0],tochki[2][1])
    chislo_tochek = 0
    tochki = []
knopka_perp = Button(okno,width=12,height=1,bg="#a7f7c5",text="перпендикуляр",command=rejim_perp)
knopka_perp.pack(side = 'left')
</syntaxhighlight>
</syntaxhighlight>

Версия от 19:32, 11 января 2022

Тот, кто виноват в создании этой страницы :) предполагает, что здесь, прежде всего, будут размещены примеры программ, написанных на языке Python учащимися или с их участием. Хорошо, если эти программы будут такими, чтобы их можно было использовать в учебном процессе (по разным предметам, не только по информатике). Можно, впрочем, и не на питоне, можно и одну задачу решить на разных языках. Можно и не про образовательный процесс.

Некоторые программы, здесь уже размещённые, могут быть катастрофически не дописаны. Это очень хорошо, ведь над такой программой ещё можно работать.

Для начала (некоторые примеры)

Тренажёр для изучения координат

Программа, интересная и как тренажёр для учебной работы с координатами (5-7 класс) и как пример несложной программы, которую может написать (или разобраться в её коде) начинающий программист (8-9 класс)

from tkinter import *
import random
okno = Tk()
okno.geometry('1500x700+0+0')
koordinatkax=random.randint(-15,15)
koordinatkay=random.randint(-6,6)
holst = Canvas(okno, width=1500, height = 600, bg = "white")
holst.create_line(0,300,1500,300,fill="black",width=3,arrow=LAST)
holst.create_line(750,600,750,0,fill="black",width=3,arrow=LAST)
metka = Label(okno,font=20,text="Привет! Найди точку с координатами x = " + str(koordinatkax) + ",  y = " + str(koordinatkay))
metka.place(x = 0,y = 620)
metkaX = Label(holst,font=20,text="X")
metkaX.place(x = 1475,y =310)
metkaY = Label(holst,font=20,text="Y")
metkaY.place(x =760,y = 10)
#положительные метки Y
metka1Y = Label(holst,font=20,text="1")
metka1Y.place(x =725,y = 240)
#метка 0
metka0 = Label(holst,font=20,text="0")
metka0.place(x =725,y = 305)
#положительные метки X
metka1X = Label(holst,font=20,text="1")
metka1X.place(x =792,y = 308)
#отрицательные метки Y
metka1Y = Label(holst,font=20,text="-1")
metka1Y.place(x =725,y = 340)
#отрицательные метки X
metka1X = Label(holst,font=20,text="-1")
metka1X.place(x =692,y = 308)
for i in range(14):
    holst.create_line(0,50*i,1500,50*i,fill="black",width=1)
    holst.create_line(745,50*i,755,50*i,fill="black",width=3)
for i in range(30):
    holst.create_line(50*i,0,50*i,600,fill="black",width=1)
    holst.create_line(50*i,295,50*i,305,fill="black",width=3)
holst.place(x=0,y=0)
knopka = Button(okno)
knopka.place(x = 50,y = 650)
def gdelevyklik(event):
    xo = koordinatkax*50+750
    yo = 300-koordinatkay*50
    if int(((event.x-xo)**2+(event.y-yo)**2)**0.5) < 5:
        okno.title("Молодец! Левая кнопка мыши нажата" + str(event.x) + " " + str(event.y))    
    else:
        okno.title("Не правильно! Левая кнопка мыши нажата" + str(event.x) + " " + str(event.y))    
holst.bind('<Button-1>', gdelevyklik)

Построение перпендикуляра

from tkinter import *
import random
okno = Tk()
okno.geometry('1500x800+10+10')
okno.resizable(False,False)
holst = Canvas(okno,width = 1500,height=700, bg = "white")
holst.pack(expand='true')
tochki = [] #Массив точек
chislo_tochek = 0
rejim = 0

def rejim_perp():
  global regim, chislo_tochek
  okno.title("Режим работы программы: ""Перпендикуляр"" ")
  rejim = 4
  chislo_tochek = 0
  tochki = []
  holst.bind('<Button-1>',perp)
def perp(event):
  global chislo_tochek
  global tochki
  tochki.append([event.x,event.y])
  chislo_tochek = chislo_tochek + 1
  holst.create_oval(event.x-3, event.y-3,event.x+3, event.y+3,fill="black")
  if (chislo_tochek == 2):
        holst.create_line(tochki[0][0],tochki[0][1],tochki[1][0],tochki[1][1])
  if (chislo_tochek == 3):        
    x = tochki[2][0]+50
    y = x*(tochki[0][0]-tochki[1][0])/(tochki[1][1]-tochki[0][1])-(tochki[2][0]*(tochki[0][0]-tochki[1][0])/(tochki[1][1]-tochki[0][1]))+tochki[2][1]
    holst.create_line(x,y,tochki[2][0],tochki[2][1])
    chislo_tochek = 0
    tochki = []
knopka_perp = Button(okno,width=12,height=1,bg="#a7f7c5",text="перпендикуляр",command=rejim_perp)
knopka_perp.pack(side = 'left')