Lógica de Programação
Sumário Briefing Representação de Algoritmos Dados Variáveis Expressões Tabelas Verdade Pseudocódigo e VisuAlg Instruções Primitivas Estrutura de Decisão Estrutura de Repetição Vetores Procedimentos e Funções
Lógica de Programação Briefing
Briefing Lógica Do grego “Logos” Estudo do raciocínio válido Aquilo que pode ocorrer Áreas da ciência Filosofia Matemática Semântica Informática
Briefing Filosofia Você é prisioneiro de uma tribo indígena que conhece todos os segredos do Universo e portanto sabem de tudo. Você está para receber sua sentença de morte. O cacique o desafia: - Faça uma afirmação qualquer. Se o que você falar for mentira você morrerá na fogueira, se falar uma verdade você será afogado. Se não pudermos definir sua afirmação como verdade ou mentira, nós te libertaremos. O que você diria?
Briefing Filosofia Solução: Afirme que você morrerá na fogueira! Explicação: Se você realmente morrer na fogueira, isto é uma verdade, portanto deveria morrer afogado Mas se você morrer afogado a informação seria uma mentira e, portanto, deveria morrer na fogueira Mesmo prevendo o futuro, haveria um impasse Você seria libertado
Briefing Matemática Você deve colocar os números nas intersecções destes três aros, de modo que nas três linhas a soma seja dois.
Briefing Matemática Solução: +3 -2 +1 +2 -1
Briefing Semântica Qual afirmação está correta? A afirmação abaixo é verdadeira A afirmação acima é falsa
Briefing Semântica Solução: ? Resultado Eu, Robô Blade Runner Wall-E ...
Briefing Informática Lógica de programação Algoritmo Técnica de encadear pensamentos para atingir um determinado objetivo Algoritmo Uma sequência finita de passos, logicamente colocados, que levam a execução de uma determinada tarefa
Briefing Informática Algoritmo “Receita de bolo” Deve ter passos claros e precisos Softwares são algoritmos construídos com alguma linguagem de programação
Atividade (classwork) Escreva um parágrafo que conceitue a palavra “Lógica”, na sua opinião sem a consulta de quaisquer recursos literários ou bibliográficos Pesquise e escreva sobre o Paradoxo de Epiménides e busque exemplos deste tipo de problema
Representação de Algoritmos Linguagem Natural Lógica de Programação Representação de Algoritmos Linguagem Natural
Representação de Algoritmos Linguagem Natural Narrativa Sequência de passos Trilha evolutiva Podem conter decisões que modificam o curso e os passos a serem seguidos
Representação de Algoritmos Linguagem Natural Ex: Preparar um bolo Início: Coloque no liquidificador a laranja picada (sem casca e sem o pavio central), os ovos, o óleo e o açúcar Ligue o liquidificador e bata por 3 minutos Despeje o conteúdo em uma vasilha e adicione a farinha e o fermento Misture bem Asse em forno médio e pré-aquecido por 35 minutos Faça a cobertura, despejando o suco de laranja com açúcar e o leite sobre o bolo ainda quente Fim: Deixe esfriar e sirva
Representação de Algoritmos Linguagem Natural Ex1: Preparar um churrasco
Representação de Algoritmos Linguagem Natural Ex2: Projetar e construir um novo carro
Atividade (classwork) Cite 5 exemplos de problemas que possam ser resolvidos com algoritmos Elabore um algoritmo em linguagem natural para cada problema citado
Representação de Algoritmos Fluxograma Lógica de Programação Representação de Algoritmos Fluxograma
Representação de Algoritmos Fluxograma Representação gráfica Figuras geométricas representam ações distintas Muito popular Fácil entendimento das ideias contidas no algoritmo
Representação de Algoritmos Fluxograma Figuras
Representação de Algoritmos Fluxograma Ex: Preparar um bolo INÍCIO Junte a laranja picada, ovos, óleo e açúcar Ligue o liquidificador e bata por 3 minutos Despeje em uma vasilha e adicione farinha e fermento Despeje o suco de laranja, açúcar e leite sobre o bolo para cobertura Asse em forno médio por 35min Misture bem Deixe esfriar e sirva FIM
Representação de Algoritmos Fluxograma Ex1: Preparar um churrasco
Representação de Algoritmos Fluxograma Ex2: Projetar e construir um novo carro
Atividade (classwork) Cite 5 exemplos de problemas que possam ser resolvidos com algoritmos Elabore um algoritmo com fluxogramas para cada problema citado
Lógica de Programação Dados
Dados O que são dados? Dados são...
Dados Não neste contexto!!! O que são dados na informática?
Dados O que é dado? O que é informação? O que é conhecimento?
Dados
Dados Os dados possuem tipos diferentes, dependendo da forma que possuem e o que proporcionam ao sistema A memória do computador trabalha de forma diferente com cada tipo de dado Os tipos de dados são: Numéricos Lógicos Literais
Dados Numéricos Inteiros São valores numéricos (positivos ou negativos) que não possuem casas decimais Idade (28,5 anos?) Dia (dia 15,2?) Unidades (2,1 maçãs?)
Dados Numéricos Reais São valores numéricos (positivos ou negativos) que podem possuir casas decimais Peso (78,6 kg) Largura de um terreno (12,5 m) Número real positivo (23.4) Número real negativo (-12.9) Uma casa decimal (0.0) Duas casas decimais (-0.32)
Dados Numéricos Os números devem ser tratados da seguinte maneira: 2 = Inteiro 2.0 = Real 2.1 = Real
Dados Lógicos São também conhecidos como booleanos Sua ideologia de uso reflete a maneira de funcionamento dos computadores São usados para representar dois tipos de valores possíveis: V (valor lógico verdadeiro) F (valor lógico falso)
Dados Lógicos Verdadeiro pode ser simbolizado por: Falso por: V TRUE 1 FALSE NÃO
Dados Lógicos O colaborador é professor? V Portanto, o colaborador não é técnico administrativo, diretor, atendente ou qualquer outra função F O colaborador é técnico administrativo? O colaborador é atendente? Portanto, o colaborador exerce outra função
Dados Literais Letras, números e caracteres especiais podem ser dados de tipo literal Uma sequência de dados deste tipo é caracterizada por estar entre aspas duplas (“”) É também conhecido por tipo de dado alfanumérico (alfa = letras; numérico = números) ou string
Dados Literais Exemplos de dados literais: “25” “Fulano” “24 de Fevereiro” “30.2” “20/02/2002” “-32a9ff34” “$#@”
Atividade (homework) Cite 10 exemplos de dados para cada tipo de dado: Numérico inteiro Numérico real Literal
Lógica de Programação Variáveis
Variáveis As variáveis são espaços criados na memória do computador para guardar informações Estas informações são armazenadas por período temporário pela aplicação a ser executada (software) Seus valores, diferente das constantes podem variar
Variáveis Imagine um armário: 38 Idade 1200.00 Salário Cidade Ijuí RS Nº filhos RS Estado 3 Nome Fulano Ciclano
Variáveis Cada “gaveta” armazena um tipo de dado Se o valor na gaveta identificada for substituído, o dado anterior se perderá Cada gaveta pode possuir somente UM dado (valor)
Variáveis Existem algumas regras a serem seguidas ao nomearmos uma variável: Começar com uma letra Os demais caracteres podem ser letras, números ou ‘_’ (underline, underscore) Não podem ser utilizados nomes reservados, como: escreva, leia, var, etc. Procure utilizar nomes sugestivos para suas variáveis
Expressões Aritméticas Lógica de Programação Expressões Aritméticas
Expressões Aritméticas São expressões cujo resultado é um valor numérico (inteiro ou real) São utilizados somente operadores aritméticos e variáveis numéricas para este tipo de expressão
Parte inteira da divisão Expressões Aritméticas São utilizados os seguintes operadores Operador Operação + Adição - Subtração * Multiplicação / Divisão Manutenção de sinal Inversão de sinal DIV Parte inteira da divisão MOD Resto da divisão
Expressões Aritméticas Os tipos de dados do resultado das expressões são: Inteiro +, -, * = Real Qualquer / DIV MOD
Expressões Aritméticas Os elementos obedecem uma hierarquia de execução Parênteses Multiplicação ou Divisão (o que vier primeiro) Soma e Subtração (o que vier primeiro) Media = Nota1 + Nota2 + Nota3 / 3 Media = (Nota1 + Nota2 + Nota3) / 3
Atividades (classwork) Verifique o tipo de dado numérico resultante das seguintes expressões aritméticas: 7 * 2 0.6 + 3.2 - 5 + 9.0 4 DIV 1 4.5 * 2 1 + 1 + (2 MOD 4) (10 + 2) * 2 - 0.8 / - 2 1 - 0.5 + 9 7 * (- 2 + 3.4) (10 DIV 2) + 0.2 (90 MOD 33) - 0.2
Lógica de Programação Expressões Lógicas
Expressões Lógicas As expressões lógicas são aquelas cujo o resultado da sua avaliação tem um resultado lógico (V ou F) Comparador == Igual <> Diferente < Menor < = Menor ou Igual > Maior > = Maior ou Igual Operador OU OR v E AND ^ NÃO NOT ¬
Expressões Lógicas Comparadores A = 5, B = 3 A = B Falso A <> B Verdadeiro A > B Verdadeiro A < B Falso A > = B Verdadeiro A < = B Falso
Expressões Lógicas Operadores OU E NÃO O resultado será verdadeiro se pelo menos UM resultado de uma expressão lógica for verdadeiro E O resultado será verdadeiro somente se TODOS os resultados das expressões lógicas forem verdadeiros NÃO O resultado final é o inverso do resultado da expressão lógica
Expressões Lógicas 1º Valor Operador 2º Valor Resultado V E F OU NÃO
= Expressões OU Lógicas Exemplos Se eu usar casaco OU blusão, me manterei aquecido = OU
= Expressões E Lógicas Exemplos Se não houver placas de proibida a ultrapassagem E não houver faixa contínua, posso ultrapassar o veículo = E não não
Expressões Lógicas Exemplos Se não for homem, é mulher = não
Expressões Lógicas A = 2, B = 3 C = 2, D = 3 A == B A <> B F V A == B ^ C == D A == B v C == D ¬ (A == B) C == A v B <> D C == A ^ B <> D F V
Atividades (mix) Lista de exercícios (1-2) ½ Classwork ½ Homework
Lógica de Programação Expressões Literais
Expressões Literais Seu resultado proporciona um valor literal Ocorre com menos frequência nos sistemas do que as expressões aritméticas e lógicas O operador varia de uma linguagem de programação para outra (+)(,)(.)... A operação para unir dois valores literais (strings) é chamado de concatenação
Expressões Literais Exemplo Suponha que esteja sendo utilizada uma linguagem que o operador de concatenação seja “+” Imagine que queremos construir a expressão “REFRIGERANTE”, havendo a string “REFRI” e “GERANTE” “REFRI” + “GERANTE” = “REFRIGERANTE”
Expressões Lógicas Tabelas Verdade Lógica de Programação Expressões Lógicas Tabelas Verdade
Expressões Lógicas (Tabelas Verdade) Considere as variáveis A e B. Como não sabemos seus valores, se faz necessário desenvolver todas as combinações lógicas possíveis (Tabela Verdade) A B NÃO A NÃO B A OU B A E B V F
Expressões Lógicas (Tabelas Verdade) As tabelas verdade são utilizadas para verificar se uma fórmula é verdadeira ou falsa, e quando que ela é verdadeira ou falsa São utilizadas em interrogatórios, para verificar se um indivíduo está mentindo ou não São utilizadas para quando não se sabe o valor verdadeiro de cada variável da fórmula Todas as probabilidades
Expressões Lógicas (Tabelas Verdade) Verifique quando a seguinte expressão é falsa: A v ¬B Falso quando A for falso e B for verdadeiro A B ¬B A v ¬B V F
Atividades (classwork) Informe a tabela verdade das seguintes expressões lógicas, informando em cada questão quando que o resultado é falso ou verdadeiro: A ^ B A v B A v ¬B ¬A ¬A ^ B A ^ ¬B ¬A ^ ¬B A v ¬A B ^ ¬B v A
Representação de Algoritmos Pseudocódigo e VisuAlg Lógica de Programação Representação de Algoritmos Pseudocódigo e VisuAlg
Representação de Algoritmos Pseudocódigo, algoritmo ou português estruturado Utilizado para elaborar a sequência lógica pela linguagem natural, antes de utilizar uma linguagem de programação Permite a tradução de um algoritmo para uma linguagem de programação específica, diretamente VisuAlg
Representação de Algoritmos Pseudocódigo, algoritmo ou português estruturado Ex: Alô Mundo! (Hello World!)
Instruções Primitivas Lógica de Programação Instruções Primitivas
Instruções Primitivas As instruções primitivas exercem funções básicas e essenciais para a operação dos computadores sendo: Entrada de dados Saída de dados Servem para que o sistema se comunique com: Usuário Periféricos
Instruções Primitivas Aplicativos, softwares e programas que não utilizam instruções primitivas é incapaz de se comunicar com o mundo exterior Programas sem comunicação com o mundo externo não tem qualquer utilidade
Instruções Primitivas De atribuição Principal maneira de se armazenar informação em uma variável <nome_da_variável> <- <expressão> O tipo da variável deve estar conciso com o valor a ser atribuído (inteiro, real, literal, ...) No fluxograma é ilustrado pelo bloco PROCESSAMENTO var = 1+1
Instruções Primitivas De saída de dados Somente a instrução de atribuição não é suficiente para haver comunicação, pois o valor fica armazenado na memória As instruções de saída são os meios pelos quais as informações são exibidas ao usuário e/ou periféricos escreva(“Alô Mundo!”) escreva(<variável>) No fluxograma é representado pelo bloco IMPRESSÃO DE RESULTADOS Escreva “Alô Mundo”
Instruções Primitivas De entrada de dados Somente a instrução e saída não é suficiente, pois não há dinamicidade no sistema Cada vez que o programa é executado, novos valores podem ser atribuídos às variáveis leia(<variável>) No fluxograma é ilustrado pelo bloco ENTRADA DE DADOS NATURAL leia Nome
Estrutura de Decisão Tipo SE Lógica de Programação Estrutura de Decisão Tipo SE
Estrutura de Decisão As estruturas de decisão englobam os princípios da condição O fluxo de instruções a ser seguido é escolhido em função do resultado da condição Podem existir várias condições a serem avaliadas para a definição do fluxo a ser seguido Condição = Expressão lógica As decisões podem ser tomadas por SE e ESCOLHA
Estrutura de Decisão Tipo Se Nesta estrutura uma única condição é avaliada Se o resultado for verdadeiro (V, T, 1), então um determinado conjunto de instruções será executado. Caso contrário, ou seja, o resultado for falso (F, F, 0) outro conjunto de instruções será executado É obrigatório que o algoritmo prossiga por alguma das condições (verdadeiro ou falso)
Estrutura de Decisão Tipo Se Condições idade < 18 genero = ‘Masculino’ altura >= 1.60
Estrutura de Decisão Tipo Se Sintaxes ... V F <condição> <comando composto 1> <comando composto 2>
<comando composto> Estrutura de Decisão Tipo Se Sintaxes ... <condição> V F <comando composto>
Estrutura de Decisão Tipo ESCOLHA Lógica de Programação Estrutura de Decisão Tipo ESCOLHA
Estrutura de Decisão Tipo Escolha Generalização do SE Pode haver uma ou mais condições a serem testadas e um comando composto diferente associado a cada uma das condições
Estrutura de Decisão Tipo Escolha Sintaxes ... V F V F… V F <Condição_1> V <Comando_composto_1> F V <Condição_2> <Comando_composto_2> F… <Condição_n> V <Comando_composto_n> F <Comando_composto_s>
Atividades (classwork) Transcreva os exercícios da aula passada utilizando o tipo ESCOLHA no VisuAlg a) b) c) Elabore o fluxograma para cada exercício
Estrutura de Repetição Laços Contados Lógica de Programação Estrutura de Repetição Laços Contados
Estrutura de Repetição São comuns os trechos de código que devem ser repetidos em um algoritmo Este trecho de código pode conter valores diferentes, seja pela entrada ou pela saída de dados As estruturas de repetição também são conhecidas por laços de repetição ou loops Existem dois tipos de estruturas de repetição: laços contados e laços condicionais Lógica de Programação (Leonardo Minelli)
Estrutura de Repetição Laços Contados São utilizados para quando sabe-se ao certo quantas vezes o comando composto no interior do bloco deverá ser executado Instrução dotada de mecanismos para contar quantas vezes o laço é executado 5x Lógica de Programação (Leonardo Minelli)
Estrutura de Repetição Laços Contados Semântica O valor <inicio> é atribuído a variável <variavel> O valor <variavel> é comparado com o valor <final> Se <variavel> for menor ou igual que <final> Comando composto é executado Ao final do comando é atribuído +1 para <variavel> Se <variavel> for maior que <final> Comando composto não é executado Finaliza-se o laço
Estrutura de Repetição Laços Contados Semântica <variavel> é uma variável do tipo inteiro <inicio>, <final>, <passo> podem ser constantes ou variáveis <passo> se não atribuído terá o valor de 1. Significa de quanto em quanto será acrescido o valor a cada execução do laço de repetição, podendo ser positivo ou negativo
Estrutura de Repetição Laços Contados Fluxograma ... <condição> V F ... <comando composto>
Estrutura de Repetição Laços Condicionais Lógica de Programação Estrutura de Repetição Laços Condicionais
Estrutura de Repetição Laços Condicionais Diferente dos laços contados, com os laços condicionais não se sabe ao certo quantas vezes a repetição será executada Existem dois tipos de instruções que expressam este tipo de laço Enquanto Repita
Estrutura de Repetição Laços Condicionais Enquanto No início da instrução a condição é testada Se for falsa, os comandos compostos não serão executados, nem por uma vez Se for verdadeira, os comandos compostos serão executados Se repetirá até que a condição proposta seja falsa. Atenção: O controle para saída do laço é de responsabilidade do criador do código! Em um momento a condição deve ser falsa para que o laço pare de ser executado. Quando isto ocorre, é chamado de laço infinito ou looping
Estrutura de Repetição Laços Condicionais Enquanto Semântica <condição> é qualquer expressão lógica
Estrutura de Repetição Laços Condicionais Repita Semelhante ao enquanto A condição é testada ao final do laço Diferente do enquanto, que é no início Sempre será executado pelo menos uma vez
Estrutura de Repetição Laços Condicionais Repita Semântica <condição> é qualquer expressão lógica
Vetores Unidimensionais Lógica de Programação Vetores Unidimensionais
Vetores Todas as variáveis, até agora, possuem somente um valor, correto? Lembram do armário e das gavetas?
... Variáveis Imagine um armário: 38 Idade 1200.00 Salário Cidade Ijuí Nº filhos RS Estado 3 Nome Fulano Ciclano
Vetores Só podíamos armazenar um valor por vez em cada variável Se precisássemos armazenar 10 nomes, necessitaríamos de 10 variáveis de tipo literal! nome1, nome2, nome3, ... nome10 O vetor veio para acabar com estes problemas!
Vetores O que é um vetor? Segundo a matemática... Segmento de reta orientado que possuem a mesma intensidade, mesma direção e mesmo sentido! SANTOS, Reginaldo J.
Vetores O que é um vetor?
Vetores O que é um vetor? Segundo a informática... Vetor é uma variável que, a partir de posições diferentes, consegue armazenar várias informações do mesmo tipo Sua posição inicial será SEMPRE 0 (zero) Existem basicamente dois tipos de vetores Unidimensionais Bidimensionais
Vetores Unidimensionais Vetores unidimensionais são semelhantes a uma “trilha” de informações Pensando em um vetor com países que falam português, por exemplo, um vetor unidimensional seria o seguinte: pt[0,1,2,3,4,5,6,7] pt[0..7] Brasil São Tomé e Príncipe Cabo Verde Timor Leste Moçambique Portugal Guiné-Bissau Angola
Vetores Unidimensionais VisuAlg <variavel> : vetor[<inicio>..<final>] de <tipo de dado> Este comando criará um vetor unidimensional com o nome <variavel>, que iniciará em <inicio> e irá até <final>, possuindo o tipo de dado <tipo de dado> Literal Inteiro Real
Vetores Bidimensionais Lógica de Programação Vetores Bidimensionais
Vetores Bidimensionais O que é um vetor? Vetores Bidimensionais = Matrizes Matriz É uma tabela de “m” linhas e “n” colunas sobre um conjunto, normalmente um corpo “F”, representada sobre a forma de um quadro “s”
Vetores Bidimensionais Veja o quadro dos países que falam português...
[ ] pt Vetores Bidimensionais pt[1,1] pt[1,2] pt[1,3] pt[1,4] pt[2,1]
Vetores Bidimensionais Ex: pt[1,1] = Brasil pt[1,2] = São Tomé e Príncipe pt[1,3] = Cabo Verde pt[1,4] = Timor Leste pt[2,1] = Moçambique pt[2,2] = Portugal pt[2,3] = Guiné-Bissau pt[2,4] = Angola
Procedimentos e Funções Lógica de Programação Procedimentos e Funções
Procedimentos e Funções Subalgoritmos e subprogramas são blocos independentes de comandos que visam dividir as operações do programa Os subalgoritmos podem ser de dois tipos Procedimentos Funções
Procedimentos e Funções Os procedimentos não possuem valores de retorno Os valores são processados e manipulados dentro do bloco
Procedimentos e Funções
Procedimentos e Funções Assim como na matemática, as funções recebem valores que são passados por parâmetros