Baixe o app para aproveitar ainda mais
Prévia do material em texto
Lógica de Programação Prof. Dr. André Luís Silva Barbosa O que é Lógica de Programação? • É a técnica de encadear pensamentos para atingir determinado objetivo. O que é Lógica de Programação? • Os pensamentos, podem ser descritos como uma sequência de instruções, que devem ser seguidas para se cumprir uma determinada tarefa. E Sequência Lógica? • São passos executados até atingir um objetivo ou solução de um problema. E Instruções? • Na linguagem comum, entende-se por instruções: “um conjunto de regras ou normas definidas para a realização ou emprego de algo”. E Instruções? • Em informática: “instrução é a informação que indica a um computador uma ação elementar a executar.” Importante! • Convém ressaltar que uma ordem isolada não permite realizar o processo completo, para isso é necessário um conjunto de instruções colocadas em ordem sequencial lógica. Exemplo • Se quisermos fazer uma omelete de batatas, precisaremos colocar em prática uma série de instruções: descascar as batatas, bater os ovos, fritar as batatas, etc... Exemplo • É evidente que essas instruções tem que ser executadas em uma ordem adequada – não seria legal descascar as batatas depois de fritá- las. O quê isso significa? • Uma instrução tomada em separado não tem muito sentido; para obtermos o resultado, precisamos colocar em prática o conjunto de todas as instruções, na ordem correta. Algoritmo • Um algoritmo é formalmente uma sequência finita de passos que levam a execução de uma tarefa; • Podemos pensar em algoritmo como uma receita, uma sequência de instruções que dão cabo de uma meta específica. Algoritmo • A tarefas não podem ser redundantes nem subjetivas na sua definição, devem ser claras e precisas; Algoritmo • Como exemplos de algoritmos podemos citar os algoritmos das operações básicas (adição, multiplicação, divisão e subtração) de números reais decimais. • Outros exemplos seriam os manuais de aparelhos eletrônicos, como uma sequência de passos para configurar o seu PS4. Exemplos de Algoritmo • Até mesmo as coisas mais simples, podem ser descritas por seqüências lógicas. Por exemplo: • “Comer um chocolate”. – Pegar o chocolate – Retirar o papel – Comer o chocolate – Jogar o papel no lixo Exemplos de Algoritmo • “Somar dois números quaisquer”. – Escreva o primeiro número no retângulo A – Escreva o segundo número no retângulo B – Some o número do retângulo A com número do retângulo B e coloque o resultado no retângulo C Como desenvolver algoritmos • Os algoritmos são descritos em uma linguagem chamada pseudocódigo. • Os algoritmos são independentes das linguagens de programação. • Ao contrário de uma linguagem de programação não existe um formalismo rígido de como deve ser escrito o algoritmo. Como desenvolver algoritmos • O algoritmo deve ser fácil de se interpretar e fácil de codificar. • Ou seja, ele deve ser o intermediário entre a linguagem falada e a linguagem de programação. Regras para construção • Para escrever um algoritmo precisamos descrever a sequência de instruções, de maneira simples e objetiva. Para isso veremos algumas técnicas: – Usar somente um verbo por frase – Imaginar que você está desenvolvendo um algoritmo para pessoas que não trabalham com informática – Usar frases curtas e simples – Ser objetivo – Procurar usar palavras que não tenham sentido dúbio Fases • Qualquer tarefa que siga um determinado padrão pode ser descrito por um algoritmo. • Por exemplo: – Como fazer um arroz doce; – Calcular o saldo financeiro de um estoque; Fases • Entretanto ao montar um algoritmo, precisamos primeiro dividir o problema apresentado em três fases fundamentais. Fases • Onde temos: – 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 Fases • Analogia com o ser humano Exemplo de algoritmo • Imagine o seguinte problema: Calcular a média final dos alunos da 3ª Série. Os alunos realizarão quatro provas: P1, P2, P3 e P4. • Onde Média Final = 𝑃1+𝑃2+𝑃3+𝑃4 4 Exemplo de algoritmo • 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 Exemplo de algoritmo • Algoritmo – Receba a nota da prova1 – Receba a nota de prova2 – Receba a nota de prova3 – Receba a nota da prova4 – Some todas as notas e divida o resultado por 4 – Mostre o resultado da divisão Testando o algoritmo • Após desenvolver um algoritmo ele deverá sempre ser testado. • Significa, seguir as instruções do algoritmo de maneira precisa para verificar se o procedimento utilizado está correto ou não. • Vamos testar o algoritmo da média usando uma tabelinha? Diagrama de Bloco • O diagrama de blocos é uma forma padronizada e eficaz para representar os passos lógicos de um determinado processamento. • Podemos definir uma 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. Fluxograma • Um dos diagramas de blocos mais utilizados é o fluxograma. • Exemplo de fluxograma Fluxograma • Simbologia para fluxogramas Exercício • Desenvolva um fluxograma que: – Leia 4 números – Calcule o quadrado para cada um – Somem todos e – Mostre o resultado Exercício • Qual a saída do fluxograma a seguir? Constantes, Variáveis e Tipos de Dados • Variáveis e constantes são os elementos básicos que um programa manipula. • Uma variável é um espaço reservado na memória do computador para armazenar um tipo de dado determinado. • Variáveis devem receber nomes para poderem ser referenciadas e modificadas quando necessário. Constantes, Variáveis e Tipos de Dados • 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. Constantes • 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. Variável • Variável é a representação simbólica dos elementos de um certo conjunto. • Cada variável corresponde a uma posição de memória, cujo conteúdo pode se alterado ao longo do tempo durante a execução de um programa. • Embora uma variável possa assumir diferentes valores, ela só pode armazenar um valor a cada instante Variável Tipos de Variáveis • As variáveis e as constantes podem ser basicamente de quatro tipos: Numéricas, caracteres, alfanuméricas ou lógicas: • Numéricas Armazenamento de números, que poderão ser utilizados para cálculos. Podem ser ainda classificadas como Inteiras ou Reais. – As variáveis do tipo inteiro são para armazenamento de números inteiros; – Reais são para o armazenamento de números que possuam casas decimais. Tipos de Variáveis • Caracteres Específicas para armazenamento de conjunto de caracteres que não contenham números (literais). Ex: nomes. • Alfanuméricas Dados que contenham letras e/ou números. Pode em determinados momentos conter somente dadosnuméricos ou somente literais. Se usado somente para armazenamento de números, não poderá ser utilizada para operações matemáticas. Tipos de Variáveis • Lógicas Armazenam somente dados lógicos que podem ser Verdadeiro ou Falso. Declaração de variáveis • É interessante sempre declarar o tipo da variável que será utilizada. – Variáveis X, Y numéricos – Variáveis Z, W reais Operadores • Os operadores são meios pelo qual incrementamos, decrementamos, comparamos e avaliamos dados dentro do computador. – Operadores Aritméticos – Operadores Relacionais – Operadores Lógicos Operadores aritméticos Operadores aritméticos • Hierarquia: 1. Parênteses 2. Multiplicação ou divisão (o que aparecer primeiro) 3. Adição ou subtração (o que aparecer primeiro) • Exemplo: 3 * (1 – 2) + 1 + 4 * 2 = ?6 Operadores relacionais • Os operadores relacionais são utilizados para comparar conjuntos de caracteres (String) e números. • Os valores a serem comparados podem ser caracteres ou variáveis. • Estes operadores sempre retornam valores lógicos (verdadeiro ou falso/ True ou False) Operadores relacionais • Os operadores relacionais são: Operadores relacionais • Exemplo: Supondo que duas variáveis A e B assumem os seguintes valores: A = 5 e B = 3. Os resultados das expressões seriam: Operadores relacionais • Símbolo no fluxograma Operadores lógicos • Os operadores lógicos servem para combinar resultados de expressões, retornando se o resultado final é verdadeiro ou falso. • Os operadores lógicos são: Operadores lógicos • E / AND – Uma expressão AND (E) é verdadeira se todas as condições forem verdadeiras • OR/OU – Uma expressão OR (OU) é verdadeira se pelo menos uma condição for verdadeira • NOT – Uma expressão NOT (NÃO) inverte o valor da expressão ou condição, se verdadeira inverte para falsa e vice-versa. Operadores lógicos • A tabela abaixo mostra todos os valores possíveis criados pelos três operadores lógicos (AND, OR e NOT) Operadores lógicos • Suponha que temos três variáveis – A = 5, B = 8 e C =1 • Preencha a tabela a seguir com VERDADEIRO ou FALSO FALSO FALSO FALSO VERDADEIRO VERDADEIRO VERDADEIRO Estrutura de Decisão e Repetição • Necessário para tomar decisões no andamento do algoritmo; • Decisões interferem diretamente no andamento do programa; • Dois tipos principais: estrutura de decisão e estrutura de repetição. Comandos de decisão • Conduzem a estruturas de programas que não são totalmente sequenciais. • Com as instruções de SALTO ou DESVIO pode- se fazer com que o programa proceda de uma ou outra maneira, dependendo das decisões lógicas tomadas em função dos dados ou resultados anteriores. Comandos de decisão • Principais estruturas: – Se então – Se então Senão – Caso Selecione Se então/If ... Then • SE/IF normalmente vem acompanhado de um comando, isto é, se a condição for satisfeita pelo SE/IF, então determinado comando é executado; Se então/If ... Then • Por exemplo, imagine um algoritmo que determinado aluno será aprovado se sua média for maior ou igual a 5,0: SE MEDIA >= 5.0 ENTÃO IMPRIMA “ALUNO APROVADO” Se então/If ... Then • O fluxograma ficaria assim: Se então/If ... Then • Na linguagem de programação C, ficaria assim: if(media >= 5) { printf(“Aprovado”); } Se então/If ... Then • Perceba que na linguagem C o então (then) é substituído por uma chave ( { ); • Perceba ainda que os comandos dentro da estrutura se (if) são finalizados ao fechar a chave ( } ) Se então/If ... Then • O algoritmo proposto também poderia ser escrito da forma: SE MEDIA >= 5.0 { IMPRIMA “ALUNO APROVADO” } Se então/If ... Then • A depender da linguagem de programação, pode-se usar o then ... endif ou { ... }, os comandos serão executados somente se a condição do if for VERDADEIRA Se então Senão/ If ... Then ... Else • “SE/ENTÃO/SENÃO”, funciona exatamente como a estrutura “SE” • A diferença é: – em “SE” somente podemos executar comandos caso a condição seja verdadeira, diferente de “SE/SENÃO” pois sempre um comando será executado independente da condição, ou seja, caso a condição seja “verdadeira” o comando da condição será executado, caso contrário o comando da condição “falsa” será executado Se então Senão/ If ... Then ... Else • O fluxograma ficaria assim: Se então Senão/ If ... Then ... Else • Na linguagem de programação C, ficaria assim: if(media >= 5) { printf(“Aprovado”); } else{ printf(“Reprovado”); } Se então Senão/ If ... Then ... Else • Uso das chaves na linguagem C: – Obrigatório se o programador quiser que mais de uma linha seja executada dentro da estrutura: if(media >= 5) { printf(“O aluno está:\n”); printf(“Aprovado”); } else{ printf(“O aluno está:\n”); printf(“Reprovado”); } Se então Senão/ If ... Then ... Else • Uso das chaves na linguagem C: – Não é obrigatório se o programador quiser executar apenas uma linha na estrutura: if(media >= 5) printf(“Aprovado”); else printf(“Reprovado”); Encadeando estruturas condicionais • Faça um trecho de programa em C para o fluxograma: CASO SELECIONE / SWITCH ... CASE • Utilizada para testar, na condição, uma única expressão, que produz um resultado; • ou o valor de uma variável, em que está armazenado um determinado conteúdo. • Compara-se, então, o resultado obtido no teste com os valores fornecidos em cada cláusula “Caso”. CASO SELECIONE / SWITCH ... CASE • Exemplo na linguagem C: switch(opcao){ case 1: printf(“Opcao 1 selecionada!”); break; case 2: printf(“Opcao 2 selecionada!”); break; case default: printf(“Opcao inválida!”); break; } Comandos de repetição • São utilizados quando desejamos que um determinado conjunto de instruções ou comandos sejam executados um número definido ou indefinido de vezes, ou • Enquanto um determinado estado de coisas prevalecer, ou • Até que um valor seja alcançado. Comandos de repetição • Principais comandos de repetição: – Enquanto x, faça (While ...); – Faça..., Enquanto x (Do ... While ...); – Para ... Até ... Ao passo de... (For ...) Enquanto x, faça (While ...) • O bloco de operações será executado enquanto a condição x for verdadeira. • Exemplo (Contador): Enquanto x, faça (While ...) • Algoritmo do contador: Variável Nr, numérica Nr = 0 Enquanto Nr <= 100 faça Nr = Nr + 1 Fim Enquanto Enquanto x, faça (While ...) • Trecho do contador na linguagem C int Nr = 0; while(Nr <= 100) Nr = Nr + 1 Faça..., Enquanto x (Do ... While ...) • Neste caso primeiro são executados os comandos, e somente depois é realizado o teste da condição. • Se a condição for verdadeira, os comandos são executados novamente, caso seja falso é encerrada a estrutura de repetição. Faça..., Enquanto x (Do ... While ...) • Exemplo no fluxograma: Faça..., Enquanto x (Do ... While ...) • Algoritmo do contador: Variável Nr, numérica Nr = 0 Faça Nr = Nr + 1 Enquanto Nr <= 100 Faça..., Enquanto x (Do ... While ...) • Trecho do contador na linguagem C int Nr = 0; do Nr = Nr + 1 while(Nr <= 100); Para ... Até ... Ao passo de... (For ...) • A estrutura for é controlada por contador e o seu fluxograma é parecido com o da estrutura while. • Exemplo de algoritmo: Para J=0 até 10, passo 1 faça Imprima J; Fim para Para ... Até ... Ao passo de... (For ...) • Trecho com a linguagem C for(j = 0; j <= 10; j++) printf(“%d”, j);Vamos treinar um pouco? • Faça um algoritmo que determine o maior entre 3 números pré-estabelecidos. • Faça um algoritmo que conte de 1 a 100 e a cada múltiplo de 10 emita uma mensagem: “Múltiplo de 10”. Introdução à linguagem C Um programa simples 1 /*Primeiro programa em C */ 2 3 #include <stdio.h> 4 5 int main() 6 { 7 printf( “Bem-vindo ao C!\n" ); 8 9 return 0; 10 } Comentários Texto delimitado por /* e */ é ignorado pelo computador Usado para descrever programa Um programa simples • #include <stdio.h> – Diretiva do pré-processador – Indicação ao computador para carregar um certo arquivo • <stdio.h> – Permite operações padrão de entrada/saída • int main() – Programas em C contém uma ou mais funções, uma das quais tem que ser exatamente main – Aqui, parênteses são usados para indicar uma função Um programa simples • int main() – int significa que main "retorna" um valor inteiro – Chaves ({ }) indicam a existência de um bloco – O corpo de todas as funções tem que está contido entre chaves Um programa simples • printf(“Bem-vindo ao C!\n"); – Instrui o computador a realizar uma ação • Especificamente, imprime a cadeia de caracteres entre aspas (“ ”) – A linha inteira equivale a um comando – Todos os comandos têm que terminar com um ponto-e-vírgula (;) – Caractere de escape (\) • Indica que o printf deve fazer algo fora do comum \n é o caractere nova-linha Um programa simples • return 0; – Maneira de sair de uma função – return 0, neste caso, significa que o programa terminou normalmente • Fecha-chave (}) – Indica que o fim do main foi encontrado Programa de soma 1 /*Programa de soma */ 2 3 #include <stdio.h> 4 5 int main() 6 { 7 int int1, int2, soma; /* declaração */ 8 9 printf(“Entre com o primeiro inteiro:\n"); /* prompt */ 10 scanf( "%d", &int1 ); /* le um inteiro */ 11 printf(“Entre com o segundo inteiro:\n"); /* prompt */ 12 scanf( "%d", &int2 ); /* le um inteiro */ 13 soma = int1 + int2; /* atribui soma */ 14 printf(“A soma eh igual a %d\n", soma);/* imprime soma */ 15 16 return 0; / * indica que o programa foi bem-sucedido */ 17 } Entre com o primeiro inteiro: 45 Entre com o segundo inteiro: 72 Soma eh igual a 117 Programa de soma • int int1, int2, soma; – Declaração de variáveis • Variáveis posições na memória nas quais um valor pode ser armazenado • int significa que as variáveis podem guardar inteiros (-1, 3, 0, 47) Programa de soma • Nomes de variáveis (identificadores) – int1, int2, soma – Identificadores: consiste de letras, dígitos (não podem começar por dígitos) e sublinha( _ ) – Case sensitive (maiúscula diferente de minúscula) • Declarações de variáveis aparecem antes dos comandos executáveis que usam estas variáveis – Se um comando executável referencia uma variável ainda não declarada será produzido um erro de sintaxe (compilador) Programa de soma • Declarações aparecem antes dos comandos executáveis – Se um comando executável referencia uma variável não declarada será produzido um erro de sintaxe (compilador) Programa de soma • scanf( "%d", &inteiro1 ); • Obtém um valor do usuário – scanf usa a entrada padrão (comumente o teclado) • Este comando scanf tem dois argumentos – %d: indica que o dado deve ser um inteiro decimal – &inteiro1: posição na memória na qual a variável está armazenada Programa de soma • Quando o programa está sendo executado, o usuário responde ao comando scanf digitando um número e, em seguida, pressionando a tecla enter (return) Programa de soma • Operador de atribuição = – Atribui um valor para a variável – É um operador binário (tem dois operandos) • soma = variável1 + variável2; • soma recebe variável1 + variável2 – Variável que recebe valor posicionada à esquerda Programa de soma • printf("Soma eh igual a %d\n", soma); – Similar ao scanf – %d significa que um decimal inteiro será impresso – soma especifica qual inteiro será impresso • Cálculos podem ser realizados dentro de um comando printf – printf("Soma e %d\n", int1 + int2); Conceitos de memória • Variáveis – Nomes de variáveis correspondem a posições (locações) a serem reservadas na memória – Toda variável tem um nome, um tipo, um tamanho e um valor – Toda vez que um valor é atribuído a uma variável (através de scanf, por exemplo), o valor anterior é substituído (e destruído) Conceitos de memória • Variáveis – A leitura de variáveis da memória não as altera • Uma representação visual inteiro1 45 Conceitos de memória • Cálculos Aritméticos – Usa-se * para a multiplicação e / para a divisão – Divisão inteira: Truncamento do quociente • 7 / 5 é avaliado como 1 – Operador de módulo (%): Retorno do resto • 7 % 5 é avaliado como 2 Conceitos de memória • Precedência de Operadores – Alguns operadores têm prioridade sobre outros durante a avaliação da expressão (e.g., multiplicação antes da adição) – Usa-se parênteses quando necessário • Exemplo – Encontre a média de três variáveis a, b e c – Não se usa a + b + c / 3 – Usa-se (a + b + c ) / 3 Conceitos de memória • Operadores Aritméticos Operação em C Operador aritmético Expressão algébrica Expressão Adição + f + 7 f + 7 Subtração - p - c Multiplicação * bm b * m Divisão / x / y x / y Módulo % r mod s r % s em C p - c Tomada de decisão • Comandos executáveis – Realização de ações (cálculos, entrada/saída de dados) – Tomada de decisões • Decisão de impressão "passa" ou "falha" a partir de um teste de condição • Estrutura de controle if – Versão simples neste ponto, maior detalhamento posteriormente – Se a condição for verdadeira, então o corpo do comando if será executado • Igual a 0 é falso, diferente de zero é verdadeiro – O controle sempre prossegue após o comando if Tomada de decisão • Operadores x é maior ou igual a yxx>=y>=y>=>=== x é menor ou igual a yxx<=y<=y<=<=== x é maior do que yxx>y>y>>>> x é menor do que yxx<y<y<<<< Operadores RelacionaisOperadores Relacionais x é diferente de yx!=yx!=y!=!=?? x é igual a yx==yx==y====== Operadores de IgualdadeOperadores de Igualdade Significado em Significado em CCExemplo de Exemplo de CondiCondiçção em ão em CC Operador de Operador de Igualdade/ Igualdade/ Relacional em Relacional em CC Operador de Operador de Igualdade/ Igualdade/ Relacional AlgRelacional Algéébrico brico PadrãoPadrão x é maior ou igual a yxx>=y>=y>=>=== x é menor ou igual a yxx<=y<=y<=<=== x é maior do que yxx>y>y>>>> x é menor do que yxx<y<y<<<< Operadores RelacionaisOperadores Relacionais x é diferente de yx!=yx!=y!=!=?? x é igual a yx==yx==y====== Operadores de IgualdadeOperadores de Igualdade Significado em Significado em CCExemplo de Exemplo de CondiCondiçção em ão em CC Operador de Operador de Igualdade/ Igualdade/ Relacional em Relacional em CC Operador de Operador de Igualdade/ Igualdade/ Relacional AlgRelacional Algéébrico brico PadrãoPadrão Exercícios • 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. • 1 -aritmética • 2 -ponderada (30%,30%,40%) Exercícios Um sistema de equações lineares do tipo: 𝑎𝑥 + 𝑏𝑦 = 𝑐 𝑑𝑥 + 𝑒𝑦 = 𝑓 pode ser resolvido segundo mostrado abaixo : 𝑥 = 𝑐𝑒 − 𝑏𝑓 𝑎𝑒 − 𝑏𝑑 𝑦 = 𝑎𝑓 − 𝑐𝑑 𝑎𝑒 − 𝑏𝑑 Escreva um programa que lê os coeficientes a,b,c,d,e e f e calcula e mostra os valores de x e y. Exercícios Escrevaum programa que calcule a média aritmética das 3 notas de um aluno e mostre, além do valor da média, uma mensagem de "Aprovado", caso a média seja igual ou superior a 6, ou a mensagem "reprovado", caso contrário. Exercícios Escreva um programa que lê um número indefinido de valores e exiba como resultado: - A soma de todos os valores inseridos - A média aritmética dos valores inseridos Exercícios Escreva um programa que lê um número indefinido de valores e exiba como resultado: - A soma de todos os valores inseridos - A média aritmética dos valores inseridos Referências • Moraes, Paulo Sérgio de. Curso Básico de Lógica de Programação. Unicamp - Centro de Computação – DSC. 2000. • Deitel, P. J., Deitel, H. M. Como Programar e C. 6ª Ed. Pearson. 2011.
Compartilhar