Calcular a nota de acceso á universidade con Scratch

Scratch é unha linguaxe creada polo M.I.T. o instituto tecnolóxico de Massachusetts. O programa de scratch serve para programar de maneira visual por medio de bloques de código e unha pantalla para observar o desenvolvemento do código.

O obxectivo do programa que fixen con esta linguaxe é calcular a nota de acceso á universidade de cada individuo a partir dos correspondentes datos:

  • Nota media en 1ºBacharelato
  • Nota media en 2ºBacharelato
  • Nota da parte xeral das ABAU
  • Nota da primeira específica e a súa ponderación
  • Nota da segunda específica e a súa ponderación
  • Nota da terceira específica e a súa ponderación (opcional)
  • Nota da cuarta específica e a súa ponderación (opcional)

Antes de nada, comparto o enlace en drive para a descarga do programa, pincha aquí.

En caso de non poder visualizalo, o código é o seguinte:

Agora pasarei a comentar o código e logo falarei das versións anteriores e por que foron remplazadas.

Primeiro de todo fixamos as variables a 0 para evitar erros cando se queira repetir o programa. As variables son as seguintes.

  • M1=Media de primeiro de bacharelato
  • M2=Media de segundo de bacharelato
  • X=Media da parte xeral de selectividade
  • EP=Nota da primeira opcional e logo ponderada (máis adiante verase a razón do cambio de significado nas variables)
  • ES=Nota da segunda opcional e logo ponderada
  • ET=Nota da terceira opcional e logo ponderada
  • EC=Nota da cuarta opcional e logo ponderada
  • M1=Nota máis alta das ponderadas
  • M2=Segunda nota máis alta das ponderadas
  • R=Nota de acceso á universidade

A continuación mandamos ao gato dicir uns mensaxes xenéricos informando de que vamos a pedir os datos para calcular a nota de acceso á universidade. Logo preguntamos a nota media de 1ºBach e a partir da resposta fixamos a variable M1. O que ven debaixo é para evitar erros, manda repetir a pregunta ate que M1 non sexa maior ca 10 nin menor ca 0. Repetimos o proceso con M2 e X

En EP e ES cambia lixeiramente a situación pois logo de preguntar a nota, preguntamos a súa ponderación. É dicir, se pondera 0, 0,1 ou 0,2 na carreira. Co fin de optimizar o proceso e ahorrarnos variables EP e ES convértense logo nas notas ponderadas ao multiplicarse a súa ponderación coa variable orixinal.

O seguinte foi posiblemente o máis complicado, a integración óptima das dúas variables ET e EC as cales son opcionais. Primeiro preguntamos se se quere introducir outra opcional. Abrimos un condicional (foi un intento de realizar un booleano de forma algo tosca) polo cal se a resposta á pregunta é «S», este actívase. Dentro do condicional seguimos os pasos normais que se fixeron con EP e ES, ao terminar e sen saír do condicional volvemos a preguntar se se quere calcular outra opcional (EC) e no caso de dar coma resposta «S», vólvese a entrar noutro condicional. Repítese o proceso que con ET e ao terminar saese do condicional de EC e de ET.

Agora chega a parte complicada que mencionei anteriormente, aínda que a solución é relativamente simple en comparación ca idea orixinal de como facelo. O problema: determinar cal das catro notas ponderadas era maior e cal a segunda maior para logo transformalas en M1 e M2 respectivamente. Obstáculo, non encontrar ninguna ferramenta que os comparase directamente e os introducise nas variables.

Esto faise co bloque se/senon. Primeiro establecemos coma condición que EP>ES, EP>ET, EP>EC. De esta forma averiguamos se EP é o maior. En caso de cumplirse a condición, EP será asignado coma E1 e agora abriremos outras cláusulas se/non para determinar E2: se ES>ET e ES>EC entón E2=ES, senon: facemos un novo condicional descartando a variable ES pois non pode ser nunca E2 e repetimos o proceso, así ata descartar todas as posibilidades. Deste modo acharemos E2 se E1=EP, para os outros casos está a primeira claúsula se/senon, no senon similar a como fixemos para achar E2, abriremos outro condicional e buscaremos se ES=E1 descartando EP pois é imposible que sexa E1, repetimos isto ate esgotar todas as variables.

Finalmente o que queda non ten dificultade, creamos una nova variable R a cal será igual a M1*0,3+M2*0,3+X*0,4+E1+E2. Engadimos outra mensaxe xenérica e dicimos o valor de R.

Deja un comentario