Baixe o app para aproveitar ainda mais
Prévia do material em texto
Desenvolvimento de Algoritmos ! Prof. André Barbosa Lógica de Programação É a técnica de encadear pensamentos para atingir determinado objetivo. Os pensamentos são descritos como uma sequência de instruções, que devem ser seguidas para se cumprir uma determinada tarefa. Introdução Lógica de Programação Instruções tomadas separadas não têm muito sentido; Para obtermos o resultado, precisamos colocar em prática o conjunto de todas as instruções, na ordem correta. Introdução Algoritmo Formalmente definido como uma sequência finita de passos que levam a execução de uma tarefa; É uma receita, uma sequência de instruções que dão cabo de uma meta específica. Introdução Fases do Algoritmo ENTRADA: São os dados de entrada do algoritmo PROCESSAMENTO: São os procedimentos utilizados para chegar ao resultado final SAÍDA: São os dados já processados Introdução Fases do Algoritmo Analogia com o ser humano Introdução Percepções das impressões sensoriais Processo de pensamento Saída do resultado dos processos de pensamento Exemplo Imagine o seguinte problema: Calcular a média final de uma turma, onde os alunos realizarão quatro provas: P1, P2, P3 e P4. A Média Final = Introdução Para montar o algoritmo proposto, faremos três perguntas: A) Quais são os dados de entrada? B) Qual será o processamento a ser utilizado? C) Quais serão os dados de saída? A) R: Os dados de entrada são P1, P2, P3 e P4 B) R: O processamento será somar todos os dados de entrada e dividi-los por 4 C) R: O dado de saída será a média final Introdução Fluxogramas Forma padronizada e eficaz para representar os passos lógicos de um determinado processamento. Sequência de símbolos, com significado bem definido, portanto, sua principal função é a de facilitar a visualização dos passos de um processamento. Desenvolvendo Algoritmos Simbologia para Fluxogramas Desenvolvendo Algoritmos Exemplo de Fluxograma Qual a saída do fluxograma? Desenvolvendo Algoritmos 9 Exemplo de Fluxograma com entrada manual Desenvolvendo Algoritmos Exemplo mais sofisticado Desenvolvendo Algoritmos Não Sim Vamos praticar? Desenvolva um fluxograma que receba como entrada 3 valores distintos e mostre a soma; Desenvolva um fluxograma que recebe dois valores como entrada e mostra o maior valor; Desenvolva um fluxograma que recebe os coeficientes de uma equação do primeiro grau do tipo ax + b = 0 e mostra o valor de x Desenvolvendo Algoritmos Vamos avançar o nível? Um usuário deseja um algoritmo onde possa escolher que tipo de média deseja calcular a partir de 3 notas. Faça um algoritmo que leia as notas, a opção escolhida pelo usuário e calcule a média. As opções de média são: 1 -aritmética 2 -ponderada (30%,30%,40%) Desenvolvendo Algoritmos Algoritmos com Visualg 3.0 O Visualg é um programa que permite criar, editar, interpretar e que também executa os algoritmos em português estruturado (portugol) como se fosse um “programa” normal de computador. É um programa de livre uso e distribuição GRÁTIS, e DOMÍNIO PÚBLICO, usado para o ensino de lógica de programação em várias escolas e universidades no Brasil e no exterior. O que é Visualg? Um programa simples e a função ESCREVA Desenvolvendo Algoritmos Visualg 3.0 ESCREVA(“Olá mundo”) Um programa simples, mas interativo Desenvolvendo Algoritmos com Python nome_usuario : CARACTERE ESSCREVA(“Digite seu nome: ”) LEIA(nome_usuario) ESCREVA(“Olá”, nome_usuario) Um programa deve conter declarações que especificam de que tipo são as variáveis que ele utilizará e as vezes um valor inicial. Tipos podem ser por exemplo: inteiros, reais, caracteres, etc. As expressões combinam variáveis e constantes para calcular novos valores. Variáveis, declarações e expressões Variável Uma área da memória do computador para guardar coisas como: Caracteres ou palavras (conjunto de caracteres – strings) Números Booleanos (verdadeiro ou falso) Variáveis, declarações e expressões No exemplo, temos uma variável chamada nome_usuario Rotulando variáveis Aceitos meu_nome, seu_nome, nome_conta, nome_usuario contador, numero_total_de_usuarios, percentual_aceito, taxa onde_nos_moramos, numero_casa, numero_da_casa, is_okay, is_correct, status_flag Não aceitos 1A, Aaaaa, aaAAAaa Caça, Balão ALGUMACOISA Variáveis, declarações e expressões A função Leia Variáveis, declarações e expressões LEIA(nome_usuario) Declarações de strings (caracter) A declaração abaixo guarda uma string na variável Variáveis, declarações e expressões ‘Olá’ ‘Olá mundo’ ‘Olá Pedro’ ‘Passa logo 2020’ ‘Ser ou não ser, eis a questão’ nome_usuario <- “Pedro” Declarações de strings no Visualg Concatenação Variáveis, declarações e expressões string_1 <- “Bom” string_2 <- “ dia” string_3 <- string_1 + string_2 ESCREVA(string_3) ESCREVA(“Olá ” + “Mundo”) Para escrever na linha abaixo, utilize a função ESCREVAL Variáveis, declarações e expressões ESCREVAL(“Olá”) ESCREVAL(“Mundo”) Determinado valor fixo que não se modifica ao longo do tempo, durante a execução de um programa. Dependendo do tipo, ela pode ser numérica, lógica ou literal. Constantes O VisuAlg prevê quatro tipos de dados: inteiro, real, cadeia de caracteres e lógico (ou booleano). As palavras-chave que os definem são as seguintes (observe que elas não têm acentuação): inteiro: define variáveis numéricas do tipo inteiro, ou seja, sem casas decimais. real: define variáveis numéricas do tipo real, ou seja, com casas decimais. caractere: define variáveis do tipo string, ou seja, cadeia de caracteres. logico: define variáveis do tipo booleano, ou seja, com valor VERDADEIRO ou FALSO. Tipos de Dados A atribuição de valores a variáveis é feita com o operador <- Alguns exemplos de atribuições, usando as variáveis declaradas acima: a <- 3 Valor1 <- 1.5 Valor2 <- Valor1 + a nome_do_aluno <- "José da Silva" sinalizador <- FALSO Operador de Atribuição Operadores Aritméticos +,- Operadores unários, isto é, são aplicados a um único operando. São os operadores aritméticos de maior precedência. Exemplos: -3, +x. Enquanto o operador unário - inverte o sinal do seu operando, o operador + não altera o valor em nada o seu valor. \ Operador de divisão inteira. Por exemplo, 5 \ 2 = 2. Tem a mesma precedência do operador de divisão tradicional. +,-,*,/ Operadores aritméticos tradicionais de adição, subtração, multiplicação e divisão. Por convenção, * e / têm precedência sobre + e -. Para modificar a ordem de avaliação das operações, é necessário usar parênteses como em qualquer expressão aritmética. MOD ou % Operador de módulo (isto é, resto da divisão inteira). Por exemplo, 8 MOD 3 = 2. Tem a mesma precedência do operador de divisão tradicional. ^ Operador de potenciação. Por exemplo, 5 ^ 2 = 25. Tem a maior precedência entre os operadores aritméticos binários (aqueles que têm dois operandos). Operadores Aritméticos Hierarquia: Parênteses Multiplicação ou divisão (o que aparecer primeiro) Adição ou subtração (o que aparecer primeiro) Exemplo: 3 * (1 – 2) + 1 + 4 * 2 = ? 6 Por exemplo: "Rio " + " de Janeiro" = "Rio de Janeiro" Operadores de Caracteres + Operador de concatenação de strings (isto é, cadeias de caracteres), quando usado com dois valores (variáveis ou constantes) do tipo "caractere". Por exemplo: "Rio " + " de Janeiro" = "Rio de Janeiro" Operadores Relacionais =, <, >, <=, >=, <> Respectivamente: igual, menor que, maior que, menor ou igual a, maior ou igual a, diferente de. São utilizados em expressões lógicas para se testar a relação entre dois valores do mesmo tipo. Exemplos: 3 = 3 ( 3 é igual a 3?) resulta em VERDADEIRO ; "A" > "B" ("A" está depois de "B" na ordem alfabética?) resulta em FALSO. Operadores Lógicos nao Operador unário de negação. nao VERDADEIRO = FALSO, e nao FALSO = VERDADEIRO. Tem a maior precedência entre os operadoreslógicos. ou Operador que resulta VERDADEIRO quando um dos seus operandos lógicos for verdadeiro. e Operador que resulta VERDADEIRO somente se seus dois operandos lógicos forem verdadeiros. xou Operador que resulta VERDADEIRO se seus dois operandos lógicos forem diferentes, e FALSO se forem iguais. Tabela-verdade 1º VALOR 2º VALOR RESULTADO V V V V F F F V F F F F Operador e TABELA-VERDADE DO CASAMENTO Certo Certa Certo Errada Errado Certa Errado Errada Marido Esposa Resultado Esposa Certa Esposa Certa Esposa Certa Marido Errado Operadores Lógicos 1º VALOR OPERADOR 2º VALOR RESULTADO V e V V V e F F F e V F F e F F V ou V V V ou F V F ou V V F ou F F V nao F F nao V Operadores Lógicos – TABELA-VERDADE 1º VALOR 2º VALOR RESULTADO V V V V F F F V F F F F Operador e Operadores Lógicos – TABELA-VERDADE 1º VALOR 2º VALOR RESULTADO V V V V F V F V V F F F Operador ou Operadores Lógicos – TABELA-VERDADE 1º VALOR RESULTADO V F F V Operador nao Estrutura condicional se se <condição booleana a ser avaliada> entao comandos fimse Estrutura condicional se num : INTEIRO escreva(“Entre com o número”) leia(num) se num < 0 entao escreva(“é negativo”) fimse Estrutura condicional se num : INTEIRO escreva(“Entre com um número”) leia(num) se num > 0 entao escreva(num, “é positivo”) escreva(num, “ao quadrado é ”, num^2) fimse escreva(“Obrigado”) Trabalhando com o senão numa estrutura se num : INTEIRO escreva(“Entre com o número”) leia(num) se num < 0 entao escreva(“é negativo”) senão escreva(“não é negativo”) fimse Loops, Estruturas Condicionais Loops, Estruturas Condicionais Encadeamento do se nevando : LOGICO temp : INTEIRO Inicio // Seção de Comandos, procedimento, funções, operadores, etc... nevando <- VERDADEIRO temp <- -1 se temp < 0 entao escreval("Está muito frio") se nevando entao escreval("Coloque umas botas") escreval("E peça um chocolate quente") fimse fimse escreval("Obrigado") Vamos praticar? Faça um programa que receba 3 valores inteiros e mostre-os na ordem crescente. Loops, Estruturas Condicionais Uso do se... senão encadeado Loops, Estruturas Condicionais Loops enquanto para repita Loops, Estruturas Condicionais Estrutura enquanto enquanto <condição booleana> faca comandos fimenquanto Trabalhando com a estrutura enquanto count : INTEIRO count <- 0 escreval(“Iniciando”) enquanto count <= 10 faca escreva(count, “ ”) //parte do enquanto count <- count + 1 //também é parte do enquanto fimenquanto escreval() //não é parte do enquanto escreval(“Fim”) Estrutura enquanto Estrutura para para <variável> de <valor-inicial> ate <valor-limite> [passo <incremento>] faca comandos fimpara Trabalhando com a estrutura para count : INTEIRO escreval(“Iniciando”) para count de 0 até 10 faca escreva(count, “ ”) //parte do para fimpara escreval() //não é parte do para escreval(“Fim”) Estrutura para Estrutura repita repita comandos ate <expressão-lógica> Trabalhando com a estrutura repita count : INTEIRO escreval(“Iniciando”) repita escreva(count, “ ”) //parte do repita count <- count + 1 //parte do repita ate count > 10 escreval() //não é parte do repita escreval(“Fim”) Estrutura repita Vamos praticar? Estrutura de condição se Faça um programa que recebe como entrada 3 valores. Em seguida, o programa deve mostrar os 3 valores recebidos na ordem decrescente. Loops (enquanto, para ou repita) Faça um programa que some todos os números pares de 0 a 10000 e mostre o resultado. Loops, Estruturas Condicionais Vamos desenvolver no Visualg o algoritmo do fluxograma ao lado? Loops, Estruturas Condicionais Agora altere o código para receber várias notas, de vários alunos e mostrar a média geral da turma, quantidade de aprovados e quantidade de reprovados Loops, Estruturas Condicionais
Compartilhar