Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.
left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Prévia do material em texto

<p>WBA1150_v1.0</p><p>Lógica de programação</p><p>Modularização de programas</p><p>Subprogramas</p><p>Bloco 1</p><p>Fabiano Gonçalves dos Santos</p><p>Refinamentos sucessivos</p><p>• Decompor um problema complexo é um fator que determina</p><p>para reduzir a sua complexidade.</p><p>• Os refinamentos sucessivos são uma forma que orienta o</p><p>processo de divisão de problemas.</p><p>• Técnica top-down.</p><p>• Etapas:</p><p>1. Divida o problema em suas partes principais.</p><p>2. Analise a divisão obtida para garantir coerência.</p><p>3. Se alguma parte ainda estiver complexa, voltar para 1.</p><p>4. Analise o resultado para garantir entendimento e coerência.</p><p>Exemplo</p><p>Cartão Ponto</p><p>Entrada SaídaCálculo</p><p>Manhã Tarde</p><p>Minutos Entrada</p><p>Minutos Saída</p><p>Atraso</p><p>Minutos Entrada</p><p>Minutos Saída</p><p>Atraso</p><p>A partir dos horários de entrada e saída de um funcionário,</p><p>calcular o total de horas trabalhadas, o total de atraso, a</p><p>média diária de horas trabalhadas e de atraso.</p><p>Fonte: Forbellone (2005).</p><p>Figura 1 – Esquema de cartão de ponto</p><p>Subprogramas</p><p>• Cada divisão obtida</p><p>com a técnica de</p><p>refinamentos</p><p>sucessivos pode ser</p><p>convertida numa</p><p>parte do algoritmo.</p><p>• Cada uma dessas</p><p>partes são conhecidas</p><p>como: módulos ou</p><p>subprogramas.</p><p>• Na hora da</p><p>implementação, são</p><p>chamados de</p><p>funções.</p><p>Problema</p><p>Entrada Cálculo</p><p>Manhã</p><p>Minutos</p><p>Entrada</p><p>Minutos</p><p>Saída</p><p>Atraso</p><p>Tarde</p><p>Minutos</p><p>Entrada</p><p>Minutos</p><p>Saída</p><p>Atraso</p><p>Impressão</p><p>Fonte: Forbellone (2005).</p><p>Figura 2 – Organograma do problema</p><p>Subprogramas – Manipulação</p><p>• Uma função pode ser acionada de qualquer ponto do</p><p>algoritmo principal ou de outra função.</p><p>• O acionamento de uma função também é conhecido por</p><p>chamada ou ativação da função.</p><p>• Quando ocorre uma chamada, o fluxo de execução passa</p><p>para a função chamada.</p><p>• Quando se conclui a execução da função chamada, o</p><p>controle retorna para a função chamadora.</p><p>Subprogramas – Manipulação</p><p>Algoritmo</p><p>início</p><p>Primeiro;</p><p>módulo Primeiro;</p><p>fimmódulo;</p><p>Segundo; módulo Segundo;</p><p>fimmódulo;fim.</p><p>Fonte: Forbellone (2005).</p><p>Figura 3 – Chamada de uma função</p><p>Modularização de programas</p><p>Funções</p><p>Bloco 2</p><p>Fabiano Gonçalves dos Santos</p><p>Funções – Por que usamos?</p><p>• Maior clareza e legibilidade no algoritmo.</p><p>• Construção independente.</p><p>• Testes individualizados.</p><p>• Simplificação da manutenção.</p><p>• Reaproveitamento de algoritmos.</p><p>Função – Estrutura</p><p>• funcao tipo nome (tipo_parâmetro nome_parâmetro) {</p><p>• corpo</p><p>• retorne variável ou valor</p><p>• }</p><p>Fonte: elaborada pelo autor.</p><p>Figura 4 – Estrutura da função</p><p>Chamada de funções</p><p>1 programa {</p><p>2 funcao inicio() {</p><p>3 inteiro v1,v2,v3</p><p>4 real m</p><p>5 escreva("Entre com os três valores:\n")</p><p>6 leia(v1,v2,v3)</p><p>7 m = media(v1,v2,v3)</p><p>8 escreva("A média entre os três valores é: ", m)</p><p>9 }</p><p>10</p><p>11 funcao real media(inteiro m1, inteiro m2, inteiro m3) {</p><p>12 real media</p><p>13 media = (m1 + m2 + m3)/5.0</p><p>14 retorne media</p><p>15 }</p><p>16 }</p><p>Funcionamento de funções</p><p>m = media( v1 , v2 , v3 )</p><p>funcao real media(inteiro m1, inteiro m2, inteiro m3) {</p><p>real media</p><p>media = (m1 + m2 + m3)/5.0</p><p>retorne media</p><p>}</p><p>São semelhantes às funções da Matemática:</p><p>y = f(x)</p><p>f(x) = x2 – 6x + 5</p><p>Modularização de programas</p><p>Procedimentos</p><p>Bloco 3</p><p>Fabiano Gonçalves dos Santos</p><p>Procedimentos (Procedures)</p><p>• São funções sem retorno.</p><p>• Estrutura:</p><p>• funcao nome (tipo_parâmetro nome_parâmetro) {</p><p>• corpo</p><p>• }</p><p>programa {</p><p>funcao inicio() {</p><p>menu()</p><p>}</p><p>funcao menu() {</p><p>escreva("1- Depositar\n")</p><p>escreva("2- Sacar\n")</p><p>escreva("3- Extrato\n")</p><p>escreva("4- Sair")</p><p>}</p><p>}</p><p>Passagem de parâmetros – Por valor</p><p>1 programa {</p><p>2 funcao inicio() {</p><p>3 inteiro x, y</p><p>4 x = 1</p><p>5 y = 9</p><p>6 troca(x,y)</p><p>7 escreva("Valor de x = ",x)</p><p>8 escreva("\nValor de y = ",y)</p><p>9 }</p><p>10 funcao troca(inteiro x, inteiro</p><p>y) {</p><p>11 inteiro aux</p><p>12 aux = x</p><p>13 x = y</p><p>14 y = aux</p><p>15 }</p><p>16 }</p><p>Fonte: elaborada pelo autor.</p><p>As variáveis não sofrem modificação externa.</p><p>Figura 5 – Resultado da</p><p>execução</p><p>Passagem de parâmetros – Por referência</p><p>1 programa {</p><p>2 funcao inicio() {</p><p>3 inteiro x, y</p><p>4 x = 1</p><p>5 y = 9</p><p>6 troca(x,y)</p><p>7 escreva("Valor de x = ",x)</p><p>8 escreva("\nValor de y = ",y)</p><p>9 }</p><p>10 funcao troca(inteiro &x, inteiro &y) {</p><p>11 inteiro aux</p><p>12 aux = x</p><p>13 x = y</p><p>14 y = aux</p><p>15 }</p><p>16 }</p><p>Fonte: elaborada pelo autor.</p><p>As variáveis sofrem modificação externa.</p><p>Figura 6 – Resultado da</p><p>execução</p><p>Recursão</p><p>Posso chamar um</p><p>procedimento ou função</p><p>de dentro dela mesmo? A</p><p>resposta é sim.</p><p>Esse tipo de invocação de</p><p>sub-rotina para ela</p><p>mesmo é chamado de</p><p>recursividade.</p><p>Fonte:</p><p>https://en.wikipedia.org/wiki/Recursion#/med</p><p>ia/File:First_matryoshka_museum_doll_open.j</p><p>pg. Acesso em: 31 ago. 2022.</p><p>Figura 7 – Exemplo de</p><p>recursividade</p><p>Exemplo</p><p>1 programa {</p><p>2 funcao inicio() {</p><p>3 inteiro numero</p><p>4 escreva("Quantos elementos? ")</p><p>5 leia(numero)</p><p>6 para (inteiro i = 1; i <= numero ; i++) {</p><p>7 escreva(fibonacci(i), " ")</p><p>8 }</p><p>9 escreva("\n")</p><p>10 }</p><p>11 funcao inteiro fibonacci(inteiro posicao) {</p><p>12 se (posicao == 1) {</p><p>13 retorne 0</p><p>14 }</p><p>15 senao se (posicao == 2) {</p><p>16 retorne 1</p><p>17 }</p><p>18 retorne fibonacci(posicao - 1) + fibonacci(posicao - 2)</p><p>19 }</p><p>20 }</p><p>Fonte: elaborada pelo autor.</p><p>Figura 8 – Resultado da execução</p><p>Teoria em Prática</p><p>Bloco 4</p><p>Fabiano Gonçalves dos Santos</p><p>Desenvolva o seguinte algoritmo</p><p>Em uma empresa, existem alguns tipos de funcionários:</p><p>• Horistas: que ganham R$ 50,00 por hora.</p><p>• Exclusivos: que ganham um salário fixo de R$ 1.212,00.</p><p>• Comissionados: que ganham R$ 600,00 fixo + 5% das</p><p>vendas que foram feitas no mês.</p><p>Com base nessas informações, faça um pequeno</p><p>programa para calcular o salário de cinco funcionários, a</p><p>serem informados pelo usuário.</p><p>O programa deve calcular também o valor total desses</p><p>cinco funcionários.</p><p>Resolução – Programa principal</p><p>2 funcao inicio() {</p><p>3 real variavel=0.0, salario, total=0.0</p><p>4 caracter tipo</p><p>5 para (inteiro i=0; i<=4; i++) {</p><p>6 escreva("\nTipo do funcionário (h,f,c)? ")</p><p>7 leia(tipo)</p><p>8 se(tipo=='h') {</p><p>9 escreva("Quantidade de horas? ")</p><p>10 leia(variavel)</p><p>11 }</p><p>12 se (tipo=='c'){</p><p>13 escreva("Valor das vendas? ")</p><p>14 leia(variavel)</p><p>15 }</p><p>16 salario = calcula_salario(tipo, variavel)</p><p>17 escreva("\nSalário = R$",salario)</p><p>18 total = total+salario</p><p>19 }</p><p>20 escreva("\nSalário de todos: R$",total)</p><p>21 }</p><p>Resolução – Função sugerida</p><p>23 funcao real calcula_salario(caracter tipo, real variavel) {</p><p>24 real salario</p><p>25 escolha (tipo) {</p><p>26 caso 'h':</p><p>27 salario = 50.0 * variavel</p><p>28 pare</p><p>29 caso 'c':</p><p>30 salario = 600.0 + 0.05*variavel</p><p>31 pare</p><p>32 caso contrario:</p><p>33 salario = 1212.0</p><p>34 pare</p><p>35 }</p><p>36 retorne salario</p><p>37 }</p><p>Resolução – Saída de dados</p><p>Fonte: elaborada pelo autor.</p><p>Figura 9 – Resultado da execução</p><p>Dicas do(a) Professor(a)</p><p>Bloco 5</p><p>Fabiano Gonçalves dos Santos</p><p>Prezado aluno, as indicações a seguir podem estar disponíveis</p><p>em algum dos parceiros da nossa Biblioteca Virtual (faça o login</p><p>por meio do seu AVA), e outras podem estar disponíveis em sites</p><p>acadêmicos (como o SciELO), repositórios de instituições</p><p>públicas, órgãos públicos, anais de eventos científicos ou</p><p>periódicos científicos, todos acessíveis pela internet.</p><p>Isso não significa que o protagonismo da sua jornada de</p><p>autodesenvolvimento deva mudar de foco. Reconhecemos que</p><p>você é a autoridade máxima da sua própria vida e deve,</p><p>portanto, assumir uma postura autônoma nos estudos e na</p><p>construção da sua carreira profissional.</p><p>Por isso, nós o convidamos a explorar todas as possibilidades da</p><p>nossa Biblioteca Virtual e além! Sucesso!</p><p>Leitura Fundamental</p><p>Indicação de leitura 1</p><p>O artigo a seguir é uma variação do Portugol que estamos</p><p>usando nas aulas, mas na linguagem C. Vale a pena dar uma</p><p>olhada.</p><p>Referência:</p><p>BARBOSA, Lucas L.; COUTO, Christian M. S.; TERRA, Ricardo.</p><p>PortuCol: uma pseudo linguagem inspirada em C ANSI para o</p><p>Ensino de Lógica de Programação e Algoritmos. In: Anais [...].</p><p>SBC, 2016. p. 2343-2352.</p><p>Indicação de leitura 2</p><p>Artigo referente ao uso de robótica no aprendizado de lógica</p><p>de programação.</p><p>Referência:</p><p>CAMBRUZZI, Eduardo; DE SOUZA, Rosemberg M. Robótica</p><p>Educativa na aprendizagem de Lógica de Programação:</p><p>Aplicação e análise. In: Anais [...]. 2015. p. 21-28.</p><p>Dica do(a) Professor(a)</p><p>O Grasshooper é um excelente aplicativo para dispositivos</p><p>móveis que pode ajudá-lo no aprendizado rápido de</p><p>linguagens de programação.</p><p>FORBELLONE, André L. V.; EBERSPACHER, Henri F. Lógica</p><p>de programação: a construção de algoritmos e</p><p>estruturas de dados. São Paulo: Prentice Hall, 2005.</p><p>GUEDES, Sérgio (org). Lógica de programação</p><p>algorítmica. São Paulo: Pearson, 2014.</p><p>MEIO, Ana C. Principios de linguagem de programação.</p><p>São Paulo: Blucher, 2003.</p><p>Referências</p><p>Bons estudos!</p>

Mais conteúdos dessa disciplina