Algoritmos e programa¸c˜
ao em Scratch
Brauner G Coutinho1
1Centro de Ciˆencias Humanas e Exatas UEPB
Sum´
ario
Algoritmos
Operadores aritm´eticos Vari´aveis
Comando de sa´ıda: escrever Comando de entrada: ler Coment´arios
Tipos de estruturas de um algoritmo Operadores relacionais e l´ogicos Blocos condicionais
Algoritmos - defini¸c˜
ao
I Algoritmo ´e uma sequˆencia finita de passos que devem ser seguidos para a resolu¸c˜ao de um problema, realiza¸c˜ao de uma tarefa ou para atingir um objetivo bem definido;
I Algoritmos n˜ao s˜ao novidade para n´os. Na nossa rotina di´aria, realizamos diversas tarefas em uma sequˆencia de passos:
I Escovar os dentes;
I Cozinhar um miojo
I Atravessar a rua;
I Trocar um pneu do carro, etc.
I Alguns problemas matem´aticos s˜ao solucionados por meio de uma sequˆencia de passos.
I C´alculo das ra´ızes de uma equa¸c˜ao quadr´atica;
Algoritmos - alguns exemplos
Escovar os dentes pela manh˜a:
1. Colocar creme dental na escova;
2. Escova os dentes;
3. Enxaguar a boca com ´agua;
4. Enxugar a boca. Cozinhar um miojo:
1. Colocar a panela com a ´agua no fogo;
2. Esperar ferver;
3. Colocar o macarr˜ao do pacote;
4. Cozinhar por trˆes minutos;
5. Desligar o fogo;
Algoritmos - alguns exemplos
Resolver equa¸c˜ao quadr´atica:
1. Conhecer os coeficientes da equa¸c˜ao ax2+ bx + c = 0;
2. Calcular o valor de ∆ = b2–4ac;
3. Se o valor de ∆ for negativo n˜ao existem ra´ızes reais, parar;
4. Calcular a primeira raiz como x0= −b+
√ ∆ 2a ;
5. Calcular a segunda raiz como x00 = −b−
√ ∆ 2a .
Calcular a m´edia aritm´etica entre quatro notas:
1. Perguntar as quatro notas;
2. Calcular a soma destas quatro notas;
3. Dividir o resultado desta soma por quatro;
Algoritmos - alguns exemplos
Em uma margem do rio est˜ao um pastor, um lobo, uma cabra, um repolho. Atravesse todos para a outra margem do rio sabendo que:
I O pastor s´o pode atravessar no barquinho com uma “passageiro” de cada vez;
I Um “passageiro” que “devora” o outro n˜ao podem estar na mesma margem sozinhos, sem a presen¸ca do pastor;
I O lobo devora a cabra;
I A cabra devora o repolho;
I O pastor pode levar e trazer um “passageiro” quantas vezes quiser.
Algoritmos computacionais
I O computador ´e uma m´aquina muito poderosa: capaz de realizar grandes quantidades de c´alculos de forma r´apida e precisa;
I S˜ao diferentes de outras m´aquinas pois podem ser usados para diversas finalidades: engenharia, medicina, avia¸c˜ao, arquitetura, matem´atica, etc;
I Mas porque?
Algoritmos computacionais
I Um programa de computador ´e uma sequˆencia de instru¸c˜oes ou comandos que ele ´e capaz de seguir;
I Algoritmos computacionais podem ser transformados em programas de computador desde que sejam escritos em uma determinada linguagem de programa¸c˜ao;
I Existem diversas linguagens de programa¸c˜ao: Pascal, C, Fortran, Java, Python, PHP, Scratch, Logo, etc.
I Devemos utilizar a que mais seja adequada para as nossas necessidades.
Algoritmos computacionais - linguagem Scratch
No nosso curso, utilizaremos a linguagem Scratch (MIT) que possui algumas caracter´ısticas bastante interessantes:
I Criada para fins educacionais;
I Os comandos s˜ao como blocos de encaixar, inspirados no brinquedo LEGO, evitando erros de sintaxe;
I N˜ao custa nada;
I Pode ser instalada na sua m´aquina ou usada no site;
I Funciona em diversos sistemas operacionais;
I F´acil de aprender;
I E uma linguagem moderna e bastante popular;´
Algoritmos computacionais
I O computador ´e bom para calcular mas n˜ao ´e inteligente ou criativo como n´os;
I Devemos explicar detalhadamente as instru¸c˜oes para ele, na forma de comandos, de modo que ele possa compreender e executar;
I Para programar em uma linguagem ´e necess´ario entender a l´ogica de programa¸c˜ao, ou seja, compreender claramente como os comandos s˜ao executados durante a execu¸c˜ao do programa.
Algoritmos computacionais
I A maior dificuldade ao se escrever algoritmos computacionais ´
e organizar as id´eias na forma de instru¸c˜oes simples que o computador possa executar;
I No EUA, as crian¸cas aprendem no¸c˜oes de programa¸c˜ao no ensino fundamental (linguagem logo);
I Como nunca lidamos com isso antes, devemos treinar, exercitar bastante, fazer muitos exerc´ıcios com algoritmos para poder aprender a criar programas eficientes com mais facilidade.
Algoritmos computacionais - caracter´ısticas importantes
I Deve ser composto por um n´umero finito de passos;
I A ordem dos passos importa;
I Diversos algoritmos podem resolver o mesmo problema;
I Deve ser escrito na forma de instru¸c˜oes simples capazes de serem executadas pelo computador;
I N˜ao deve permitir d´uvida na interpreta¸c˜ao;
Algoritmos computacionais - representa¸c˜
ao
I Existem v´arias formas de se representar um algoritmo;
I Vamos usar a representa¸c˜ao na forma de texto estruturado (portuguˆes estruturado ou portugol);
I Exemplo de um algoritmo em portuguˆes estruturado para c´alculo da ´area de um c´ırculo de raio igual a 10:
1. r = 10
2. pi = 3.1416
3. area = pi .r2
4. mostrar area
Operadores aritm´
eticos
I No Scratch os operadores arim´eticos ficam na Se¸c˜ao Operadores;
Operadores aritm´
eticos: express˜
oes
I Na matem´atica, ao montar express˜oes mais longas, costumamos utilizar: { }( ) [ ].
I No Scratch os operadores s˜ao encaixados em sequˆencia e as opera¸c˜oes localizadas nas pe¸cas “mais altas” s˜ao realizadas primeiro;
Ex: 3 [5 + 17(14 − 39)] seria escrito no Scratch como:
I Cuidado ao arrastar pe¸cas com express˜oes matem´aticas muito extensas.
Operadores aritm´
eticos
I E preciso aten¸c˜´ ao ao escrever uma express˜ao matem´atica;
I Existe diferen¸ca no resultado das express˜oes abaixo?
I Qual das express˜oes acima representa corretamente a seguinte express˜ao matem´atica?
5 + 6 2
I Como j´a foi dito, as opera¸c˜oes localizadas nas pe¸cas “mais altas” s˜ao realizadas primeiro.
Guardando valores em vari´
aveis
I Muitas vezes, ´e ´util guardar valores para utilizar depois;
I Em nossos programas usamos vari´aveis para guardar valores;
I No Scratch uma vari´avel ´e criada na Se¸c˜ao Vari´aveis?
I Clique no bot˜ao “Criar uma vari´avel”;
Guardando valores em vari´
aveis
I As informa¸c˜oes no computador s˜ao armazenadas na sua mem´oria principal;
I Podemos imaginar que esta mem´oria ´e um grande arquivo com v´arias caixas, contendo diferentes informa¸c˜oes;
I Imagine uma vari´avel como sendo uma dessas caixas;
I Para guardar e depois localizar algum conte´udo em uma das caixas, ´e preciso identific´a-la com uma etiqueta (o nome da vari´avel);
a
10
peso
Guardando valores em vari´
aveis
I As mesmas express˜oes aritm´eticas que criamos a partir de valores num´ericos, podemos montar utilizando vari´aveis:
I Para mudar o valor de uma vari´avel usamos os seguintes comandos:
I O primeiro muda a vari´avel para o valor especificado;
I O segundo adiciona `a vari´avel o valor especificado ap´os a v´ırgula;
Guardando valores em vari´
aveis
I Ex: Para calcular a m´edia de dois valores:
I Ap´os criar trˆes vari´aveis (x1, x2, media) pode-se usar o seguinte c´odigo;
Comando de sa´ıda
I Para mostrar alguma informa¸c˜ao na tela, usamos os comandos da Se¸c˜ao Aparˆencia abaixo:
I Qual a diferen¸ca entre os dois?
I Os comandos diga servem para mostrar todos os tipos de informa¸c˜oes:
I n´umeros;
I express˜oes;
I frases;
Comando de sa´ıda
I Para mostrar mais de uma informa¸c˜ao simultaneamente, use o seguinte operador:
I O comando junte pode unir diversas informa¸c˜oes:
I n´umeros;
I express˜oes;
I frases;
Comando de sa´ıda: escrever - print
I Um programa para calcular a ´area de um c´ırculo de raio 10 pode ser escrito como:
Comando de sa´ıda: escrever - print
I Exemplo de programa para calcular e mostrar o volume de um cilindro com raio da base igual a 3 e altura igual a 8 usando o comando diga:
Comando de entrada
I Nos casos estudados at´e agora, os valores das vari´aveis s˜ao definidos na edi¸c˜ao do programa;
I No exemplo do slide anterior, o algoritmo e o programa correspondente calculam somente o volume de um cilindro de raio 6 e altura 8;
I Esse tipo de programa ´e limitado, seria mais ´util se pudesse calcular o volume de qualquer cilindro sem necessidade de altera¸c˜ao do c´odigo;
Comando de entrada
I Para que o programa fa¸ca a pergunta, usa-se da Se¸c˜ao Sensores o seguinte comando:
I Uma diferen¸ca entre o Scratch e outras linguagens ´e que a resposta ao comando de entrada “pergunte” vai sempre para a vari´avel resposta, que tamb´em pode ser acessada na mesma Se¸c˜ao Sensores.
Comando de entrada
I E necess´´ ario tomar cuidado quando se deseja fazer mais de uma pergunta em sequˆencia;
I Supondo que a=1, b=2 e c=3, o que ´e mostrado pelos programas a seguir:
Comando de entrada
I Para evitar que o valor se perca, podemos usar guardar a resposta em vari´aveis espec´ıficas:
Comando de entrada
I O programa do exemplo para calcular o volume de um cilindro pode ser modificado para uma forma mais geral como segue:
Coment´
arios
I Imagine que vocˆe recebe um algoritmo ou programa escrito por outra pessoa;
I Se vocˆe estudou algoritmos, vocˆe pode interpretar o c´odigo para entender o que o algoritmo faz, que opera¸c˜oes ele realiza, para que serve o algoritmo/programa;
I At´e mesmo se vocˆe abre um algoritmo seu, escrito h´a muito tempo, pode ser dif´ıcil lembrar o que ele faz;
I Seria interessante escrever textos explicativos, em nossa l´ıngua, que pudessem explicar algo a respeito do programa ou algoritmo;
Coment´
arios
I E para isso que servem os coment´´ arios;
I Para adicionar um coment´ario, com o bot˜ao direito do mouse clique sobre alguma “pe¸ca” do Scratch e logo ap´os em “adicionar coment´ario”;
I O texto que vier em um coment´ario ´e ignorado durante a execu¸c˜ao do programa;
I Com coment´arios, ´e mais f´acil entender o que o programa faz;
Tipos de estruturas de um algoritmo
I Um algoritmo pode apresentar trˆes tipos de estruturas:
1. Seq¨uencial;
2. Condicional;
3. Repeti¸c˜ao;
I At´e agora estudamos o tipo seq¨uencial, ou seja, aquele em que TODOS os passos s˜ao SEMPRE executados UMA ´UNICA VEZ, sempre em seq¨uˆencia;
I A execu¸c˜ao come¸ca na primeira linha e vai avan¸cando sequencialmente, linha ap´os linha, at´e chegar no final;
I O computador executando um algoritmo com estrutura seq¨uencial pode ser comparado com um carro percorrendo uma estrada;
I O carro deve percorrer todos os quilˆometros da estrada para se chegar ao destino, um de cada vez, sempre na mesma seq¨uˆencia.
Tipos de estruturas de um algoritmo
I Antes de estudar as demais estruturas (condicional e repeti¸c˜ao), devemos estudar os operadores relacionais e l´ogicos.
Operadores relacionais
I Operadores relacionais s˜ao usados para realizar compara¸c˜oes entre dois valores;
I O resultado ´e sempre um valor l´ogico: V ou F, Verdadeiro ou Falso, true ou false (em inglˆes).
I Os valores comparados podem ser vari´aveis, n´umeros ou express˜oes aritm´eticas.
Operadores relacionais
I Verifique atrav´es do Scratch o resultados das seguintes express˜oes:
I 5 = 15
I 8 > 37
I 1 < 5
I Operadores relacionais podem vir juntos com operadores aritm´eticos;
I Tente montar as express˜oes:
I 2 * 4 = 24 / 3
I 14 / 2 < 1
Operadores l´
ogicos
I S˜ao usados para conectar duas ou mais rela¸c˜oes;
I O resultado ´e sempre um valor l´ogico: V ou F!
I Aplicam-se as mesmas regras do componente L´ogica:
e : resulta V se ambas as partes forem V.
ou : resulta V se pelo menos uma das partes ´e V.
Operadores l´
ogicos
I Tente montar no Scratch esses exemplos de express˜oes com operadores relacionais e l´ogicos:
I 3 < 5 < 10
I 3 < 10 < 5
I 3 = 4 − 1
I 2 > 5 e 6 < 10 I 2 > 5 ou 6 < 10
Operadores l´
ogicos
I Como vocˆe pode ter notado, os seguintes operadores n˜ao est˜ao dispon´ıveis no Scratch: 6=, ≥, ≤;
I Como criar essas express˜oes?
I Tente descobrir e montar as seguintes express˜oes:
I 5 ≤ 5
I 11 ≥ 5
I 12 6= 12 * 1
I Express˜oes mais complexas podem envolver, simultaneamente, diversos operadores aritm´eticos, l´ogicos e relacionais;
Ex: 5 > 4 ou (1 ≥ 0,5 e 4 6= 2)
I Aten¸c˜ao ao uso dos parˆenteses;
Blocos condicionais (se)
I As vezes surge a necessidade de colocar comandos em um` programa que s´o ser˜ao executadas caso alguma condi¸c˜ao espec´ıfica aconte¸ca;
I A condi¸c˜ao ´e sempre um resultado de uma express˜ao l´ogica (V ou F, true ou false);
I E como se o computador estivesse percorrendo uma´ estrada com duas op¸c˜oes de caminhos a seguir!
Blocos condicionais (se)
I Os dois blocos condicionais est˜ao dispon´ıveis na Se¸c˜ao Controle;
I Forma simples: h´a somente o caminho Verdadeiro (dentro do se...ent˜ao).
I Forma composta: h´a os dois caminhos: Verdadeiro (abaixo do se...ent˜ao) e Falso (abaixo do sen˜ao).
Blocos condicionais (se)
Exemplo de utiliza¸c˜ao da instru¸c˜ao se: algoritmo que recebe um n´umero e diz se ´e positivo ou negativo
Blocos condicionais (se)
Exemplo de utiliza¸c˜ao da instru¸c˜ao se: algoritmo que recebe um n´umero e diz se ´e positivo ou negativo
Algoritmos com repeti¸c˜
ao
I Em alguns algoritmos do nosso dia a dia, certas a¸c˜oes precisam ser repetidas;
I Existem dois tipos de repeti¸c˜oes:
1. Um n´umero exato de vezes:
Ex: Gire 3 vezes, dˆe 2 voltas completas, etc.
2. Um n´umero desconhecido de vezes (enquanto uma condi¸c˜ao for satisfeita ou at´e que uma condi¸c˜ao seja satisfeita):
Ex: Mexa o ovo at´e que ele cozinhe, esfregue as m˜aos enquanto elas est˜ao sujas, caminhe at´e chegar a porta, etc.
Algoritmos com repeti¸c˜
ao
I Em algoritmos computacionais, nos deparamos com situa¸c˜oes similares:
I Comandos repetidos um determinado n´umero de vezes;
I Comandos repetidos enquanto uma condi¸c˜ao for satisfeita ou at´e que uma condi¸c˜ao seja satisfeita.
I Exemplo de programa que envolve repeti¸c˜ao: fa¸ca um programa para escrever na tela a palavra “Ol´a!” trˆes vezes.
I Um programa com 3 comandos “diga” seria eficiente?
I E se fosse para repetir 100 vezes?
I Para lidar com repeti¸c˜oes em nossos programas com Scratch, temos trˆes blocos que estudaremos a seguir.
Blocos de repeti¸c˜
ao
I Os blocos de controle de repeti¸c˜ao, encontrados na Se¸c˜ao Controle, s˜ao:
Blocos de repeti¸c˜
ao
I Reproduza no Scratch o programa abaixo e veja o que ele faz:
I O comando espere segundos insere uma pausa entre uma fala e outra;
I O que ele faz?
I Altere o programa para repetir 5.
I E se vocˆe quisesse repetir 300 vezes?
I E mais eficiente para programar?´
Repetir por n vezes
I O programa do exemplo usa um dos blocos de repeti¸c˜ao que o Scratch oferece:
I Quando queremos que alguns comandos sejam executados um n´umero determinado de vezes utilizamos o comando acima;
I Utilizado para repetir uma a¸c˜ao um n´umero fixo de vezes;
I Somente deve ser utilizado quando o n´umero de repeti¸c˜oes ´e conhecido previamente, na hora de criar o programa.
Repetir por n vezes
I Essa estrutura pode ser usada para diversos problemas envolvendo n´umeros;
I Para contar de 1 at´e 3, podemos ter o seguinte programa usando vari´aveis:
Repetir por n vezes
I Analisando o programa, percebe-se que os comandos abaixo repetem-se 3 vezes:
I Uma forma de reescrever este programa de modo mais eficiente seria usando a estrutura de repeti¸c˜ao:
I Observe que o programa fica mais elegante, melhor de programar e tem a mesma funcionalidade.
Repetir por n vezes
I A combina¸c˜ao de estruturas de repeti¸c˜ao com o uso de vari´aveis permite solucionar diversos problemas como veremos.
I O programa anterior podem servir como modelo para se trabalhar com P.A.
I O programa a seguir calcula e mostra os 4 primeiros termos de uma P.A. com a1= 10 e r = 5:
I Perceba que, neste programa, inverteu-se a posi¸c˜ao dos comandos diga e adicione. Tente entender o motivo.
Repetir por n vezes
I Tamb´em usa-se a mesma estrutura de repeti¸c˜ao para problemas que envolvam repetidas perguntas;
I O programa a seguir pergunta 3 n´umeros e mostra o valor da raiz quadrada de cada um:
Repetir por n vezes
Exerc´ıcios:
1. Baseando-se no programa anterior, crie um que conte regressivamente de 5 at´e 1 (5, 4, 3, 2, 1).
2. Crie um programa que mostre os 6 primeiros n´umeros pares.
3. Crie um programa que conte de 19 at´e 25.
4. Fa¸ca um programa que pergunte dois n´umeros a e b. Pe¸ca ao usu´ario para que informar valores tais que a < b. Em seguida o programa deve contar de a at´e b, de 1 em 1.
5. Fa¸ca um programa que pergunte dois n´umeros a e b. Se a < b o programa deve contar de modo crescente de 1 em 1. Se a > b o programa deve contar de modo decrescente de a at´e b, de 1 em 1.
6. Fa¸ca um programa que mostre os 6 primeiros termos de uma P.A. com a1= 5 e r = 3.
7. Fa¸ca um programa que mostre os 10 primeiros termos de uma P.A. com a1= 100 e r = −10.
8. Fa¸ca um programa que pergunte o primeiro termo a1, a raz˜ao
r e a quantidade de termos de uma P.A. O programa deve calcular e mostrar todos termos dessa P.A.
9. Fa¸ca um programa que pergunte 3 n´umeros e, para cada valor digitado, mostre o seu quadrado.
Repetir por n vezes - Somat´
orios
I Outro problema bastante ´util que pode ser resolvido com estrutura de repeti¸c˜ao ´e o c´alculo de somas ou somat´orios;
I Nestes casos sempre uma vari´avel deve ser iniciada com valor 0 antes da repeti¸c˜ao;
I O programa abaixo pergunta 5 n´umeros e, em seguida, realiza a soma de todos os n´umeros informados:
Repetir por n vezes - Somat´
orios
I Conforme pode ser observado no programa anterior, em c´alculos de somas ou somat´orios sempre teremos os seguintes comandos;
1. Antes da repeti¸c˜ao:
2. Dentro da repeti¸c˜ao:
3. Ap´os a repeti¸c˜ao:
Repetir por n vezes - Somat´
orios
I O programa abaixo conta de 1 at´e 7, calcula a soma destes n´umeros e mostra o valor da soma no final:
Repetir por n vezes - M´
edias
I O programa abaixo conta de 1 at´e 7, calcula a soma destes n´umeros e mostra o valor da soma no final:
Repetir por n vezes - Menor valor
I Repeti¸c˜oes podem ser utilizadas para calcular o maior e o menor valor de um conjunto de v´arios n´umeros;
I O programa a seguir pergunta 3 valores e mostra, no final, o menor valor informado:
Repetir por n vezes - Menor valor
I Observe no programa anterior, que a primeira pergunta ´e feita fora da repeti¸c˜ao, e que a sua resposta vai sempre ser o menor valor no in´ıcio do programa;
I Esse racioc´ınio ´e o mesmo que fazemos ao realizar a mesma tarefa mentalmente;
Exerc´ıcios:
1. Tente modificar o programa anterior para localizar o maior valor de um conjunto de n´umeros.
2. Tente modificar o programa anterior para localizar tanto o menor como o maior valor conjunto de n´umeros.
Repetir at´
e uma condi¸c˜
ao
I Outro bloco de controle de fluxo usada no Scratch ´e:
I O comando acima realiza a repeti¸c˜ao dos comandos no interior do bloco at´e que uma condi¸c˜ao especificada seja verdadeira (true);
Repetir at´
e uma condi¸c˜
ao
I Abaixo seguem programas para contar de 1 at´e 5 usando os dois blocos de controle:
Repetir infinitamente
I Um outro bloco de controle dispon´ıvel no Scratch repete infinitamente comandos:
I Os comandos colocados no interior do bloco s˜ao repetidos infinitamente.
I Por que h´a tantas op¸c˜oes? Qual destas ´e a melhor?
Blocos de repeti¸c˜
ao - Resumo
I Quando se sabe o n´umero de vezes a repetir, usamos:
I Quando n˜ao se sabe o n´umero de vezes no momento de construir o programa, usamos: