Expérience de la tenue d'une Olympiade de programmation scolaire de la ville

Dans cet article, je vais vous parler de l'expérience de la tenue d'un concours de programmation scolaire de la ville.

L'idée d'organiser une Olympiade locale est née au moment du lancement d'une école de programmation pour enfants . Au fil des deux années de travail, il est devenu encore plus évident que le compte soit rendu aux unités de différents concours dans ce sens, ce qui signifie qu'il y a peu de possibilités de tester les élèves, d'implication en dehors de la classe, de motivation supplémentaire avec les résultats. Je dirai même ceci: à Irkoutsk, il n'y a pas de concours pour les étudiants sur la programmation en scratch, et une seule Olympiade à laquelle les pythonistes peuvent participer - «Nous jouons aux programmeurs».

Il semblait que l'organisation de l'Olympiade nécessitait beaucoup de ressources: trouver une grande salle, par exemple, négocier avec une grande bibliothèque, fournir du matériel, trouver des enseignants bénévoles, assurer la sécurité et bien d'autres bagatelles. Et c'était une pierre d'achoppement pour un petit établissement d'enseignement privé en termes de ressources. La décision est venue de façon inattendue - l'Olympiade à distance! En février 2020, il y avait des rumeurs sur une retraite rapide, que les événements en personne seraient interdits et pour moi tout s'est mis en place.

Maintenant sur l'organisation de l'Olympiade:

Nous avons posté les missions sur VKontakte dans notre groupe le 20 mars 2020. Le temps de résoudre les problèmes a été accordé un peu plus d'une semaine - du 20 mars 2020 au 29 mars 2020. Il était prévu d'évaluer les travaux avant le 12 avril 2020, ils en doutaient même, on ne sait jamais, mais ils l'ont géré en seulement 4 jours. Dans le même temps, il y avait un peu plus de 100 participants, le contrôle était manuel (mais nous y reviendrons plus tard).

Les participants ont été divisés en trois catégories:

  • stade junior (jusqu'Ă  la 7e annĂ©e des Ă©tablissements d'enseignement inclusifs, les problèmes sont rĂ©solus dans le langage de programmation visuel scratch / snap)

  • niveau intermĂ©diaire (jusqu'Ă  la 7e annĂ©e des Ă©tablissements d'enseignement, inclusif, les problèmes sont rĂ©solus dans n'importe quel langage de programmation autorisĂ© par l'Olympiade)

  • niveau supĂ©rieur (8e Ă  11e annĂ©e des Ă©tablissements d'enseignement, les problèmes sont rĂ©solus dans n'importe quel langage de programmation autorisĂ© par l'Olympiade).

. , 15 “ ” :

C++

Code: Blocks, VisualStudio

VisualStudio 2019

C#

Code: VisualStudio

VisualStudio 2019

Pascal

FreePascal 2.6.2

FreePascal 2.6.2

Basic

FreeBasic 0.90.1

FreeBasic 0.90.1

Java

NetBeans, Eclipse

JDK 1.7.0

Python

IDLE

Python 3.6

. . . - , - . : : 5 – , 2 – – . , – . . , , - .

5 , 2 . . 5 , . . , , . - . , - .

, .

, python

1

. . , . . (scratch/snap) – (, /). (python) – .

:

:

:

5

1 2 3 4 5

 3

1
a = int(input(" :"))
y = 0
for i in range(a):
    x = float(input(":"))
    y += x
y = y / a
print(" : " + str(y))

2

, ( ).  , - , -  , - .

, , . . (scratch/snap) – ( /)) . (python) – .

:

10 30 20

20 10 30

2
s = []
for i in range(3):
    griby = int(input())
    s.append(griby)
if s[0]>s[1] and s[0]>s[2]:
    print("")
elif s[1]>s[2]:
    print("")
else:
    print("")

3

, . . , .

. . (scratch/snap) – ( ) ( /) . (python) – . ? .

:

:

:

5

10 20 30 40 50

 9

18

27

36

45

3
girls = int(input())
apple = []
for numgirl in range(1, girls + 1):
    a = int(input())
    a = a - numgirl
    apple.append(a)
for numgirl in range(girls):
    print(apple[numgirl])

4

1 7. , (scratch/snap) – (, /). (python) – .

:

1

3

4
days = ['','','','','','','']
day = int(input())
print(days[day - 1])

5

. . , , 5 2 ( ), 2 5 ( ). . . (scratch/snap) – (, /). (python) – .

:

:

:

6

10 2 6 20 4 5

4 5 15 8 10 2

5
nums = int(input())
listnums = []
for i in range(nums):
    listnums.append(int(input()))
for i in range(nums):
    if listnums[i] % 5 == 0:
        listnums[i] = listnums[i] // 5 * 2
    elif listnums[i] % 2 == 0:
        listnums[i] = listnums[i] // 2 * 5
    print(listnums[i])

6

: , , . , «» — , , . 1 8 , , . (scratch/snap) – (, /) , . (python) – , .

:

:

:

1 5

4

8 1

2

6
vozmojnost = 0
stolb = int(input())
stroka = int(input())
#   
if stolb + 2 < 9:
    if stroka + 1 < 9: #  
        vozmojnost += 1 
    if stroka - 1 > 0: #  
        vozmojnost += 1 
#           
if stolb - 2 > 0:
    if stroka + 1 < 9: #  
        vozmojnost += 1 
    if stroka - 1 > 0: #  
        vozmojnost += 1 
#           
if stroka + 2 < 9:
    if stolb + 1 < 9: #  
        vozmojnost += 1
    if stolb - 1 > 0:#  
        vozmojnost += 1
#           
if stroka - 2 > 0:
    if stolb + 1 < 9:#  
        vozmojnost += 1
    if stolb - 1 > 0:#  
        vozmojnost += 1        
print(vozmojnost)

7

. , YES, — NO. 1 8 , , . (scratch/snap) – (, /) YES NO. (python) – YES NO .

:

:

:

1 1 2 6

YES

7
summ = 0
for i in range(4):
    summ += int(input())
if summ % 2 ==0:
    print('YES')
else:
    print('NO')

8

. . , . . () , , . . ( ).

(scratch/snap) – , , – . (python) – .

:

:

:

9

4 2 1

7 5 3

9 8 6

8
vvod = int(input())
num = vvod ** 0.5
if int(num) != num:
    num = int(num) + 1
else:
    num = int(num)
table = [[0] * num for i in range(num)]
numb = 0
ivert = num
for i in range(num):
    if ivert > 0:
        igoriz = 0
        for i in range(num - ivert + 1):
            if igoriz <= num - ivert:
                numb += 1
                if numb <= vvod:
                    table[igoriz][ivert + igoriz - 1] = numb
                else:
                    table[igoriz][ivert + igoriz - 1] = 0
            igoriz += 1
    ivert -= 1  
ivert = 1            
for i in range(num - 1):
    if ivert < num:
        igoriz = 0
        for i in range(num - ivert):
            if igoriz < num - ivert:
                numb += 1
                if numb <= vvod:
                    table[ivert + igoriz][igoriz] = numb
                else:
                    table[ivert + igoriz][igoriz] = 0
            igoriz += 1
    ivert += 1
for row in table:
    for elem in row:
        print(elem, end=' ')
    print()

9

- . 3 , 4 , 5 .. , ( ) . , , - , , , «Penguin Emperor». . input.txt . scratch/snap . (scratch/snap) – (, /) . (python) – .

:

:

:

Penguin Emperor

Shark zebra

Turtle Caiman

Shark white

Shark 2

9
file = open("input.txt")
animal=[]
kolvo=[]
for stroka in file:
    data = stroka.split()
    animal.append(data[0])
for i in animal:
    kolvo.append(animal.count(i))
maxi = 0
pos = 0
for i in range(len(kolvo)):
    if kolvo[i] > maxi:
        maxi = kolvo[i]
        pos = i
print(animal[i], maxi, end=" ")

10

, - brawl stars. . . w1, …, wn. , , . w1, …, wn (1 ≤ wi ≤ 100) . input.txt . scratch/snap

, — . .

(scratch/snap) – . (python) – .

:

:

4 Shelly

7 Bull

10 Bo

12 8-bit

15 ElPrimo

20 Tick

Tick

Bo

Shelly

0

ElPrimo

8-bit

Bull

10
file = open("input.txt")
pers_dict = []
for pers in file:
    data = pers.split()
    pers_dict.append((data[1], int(data[0])))
pers_dict.sort(key = lambda elem: elem[1], reverse = True)               
command1 = []
command2 = []
summa1=0
summa2=0
for elem in pers_dict:
    if summa1 <= summa2:
        command1.append(elem)
        summa1 += elem[1]
    else:
        command2.append(elem)
        summa2 += elem[1]
for key in command1:
    print(key[0])     
if summa1> summa2:
    print(summa1-summa2)
else:
    print(summa2-summa1)
for key in command2:
    print(key[0])

:

  • , , , , .

  • - , , scratch - , - "" .

  • , . .

  • ? . , .

  • , . . 8-10 , 6 , 4 .

J'espère vraiment que l'article sera utile aux responsables des cercles de programmation et aux enseignants. N'hésitez pas à organiser des Olympiades locales, à voir les décisions de vos élèves, à tirer des conclusions pour améliorer votre programme éducatif.




All Articles