Baixe o app para aproveitar ainda mais
Prévia do material em texto
Linguagem e técnicas de programação ( LTP) Prof. Ms. Jonas Silva 1 Professor Mestre Jonas Formado em Ciência da Computação Pós-graduado em Gerência de Projetos de TI Mestrado em Engenharia de Produção Na UNIP há 14 anos Analista de Sistemas Sênior 2 3 PLANO DE ENSINO CURSO: Tecnologia em Análise e Desenvolvimento de Sistemas SÉRIE: 2º período (semestral) DISCIPLINA: LINGUAGEM E TÉCNICAS DE PROGRAMAÇÃO CARGA HORÁRIA SEMANAL: 06 horas/aula CARGA HORÁRIA SEMESTRAL: 120 horas/aula I - EMENTA Algoritmos. Estruturas fundamentais de algoritmos: sequência, tomada de decisão e repetição. Estrutura de Dados. Introdução à linguagem de programação. A linguagem de programação C. Fundamentos de programação estruturada. Macros e Funções. Vetores, Strings e Matrizes. Estruturas e Uniões. Ponteiros. 4 Funções de entrada e saída. Funções gráficas e textos. Filas, Pilhas, Listas encadeadas. Árvores de busca binária. Práticas laboratoriais. V - Conteúdo Programático Introdução Teoria: Algoritmos Conceitos básicos Programas Representação lógica Regras Fases Tipos de Algoritmos Laboratório: Introdução à linguagem C Histórico Regras da Linguagem PLANO DE ENSINO 5 Introdução à programação Teoria: Tipos de informações e entrada e saída Tipos de Dados Variáveis, constantes e operadores Entrada e saída de informações Programação sequencial Laboratório: Linguagem C; Tipos de informações e entrada e saída Tipos de Dados Variáveis, constantes e operadores Entrada e saída de informações Tomada de decisões Teoria: Condicionais Se então senão Selecione caso Laboratório: Condicionais If else Switch PLANO DE ENSINO 6 Laços de repetiçãoTeoria: 1. Repita até que e Enquanto faça 2. Para até passo 1. Laboratório: 1. while , do /while 2. for 1. Estrutura de dados 1. Teoria: 1. Dados Homogêneos 2. Dados Heterogêneos; 3. Vetores, Strings e Matrizes 2. Laboratório Vetores PLANO DE ENSINO 7 PLANO DE ENSINO 1. Macros e Funções 1. Teoria: 1. Funções 2. Procedimentos 2. Laboratório: funções 1. Programação 2. Bibliotecas 1. Funções gráficas e de texto 2. Estruturas e uniões 1. Teoria: Estruturas 2. Laboratório: Tipo Abstrato de dados 3. Alocação da memória 1. Ponteiros 2. Alocação dinâmica da memória 8 PLANO DE ENSINO 3. Utilização de arquivos, diretórios e discos Listas Ligadas 4. Listas Ligadas 5. Pilha 6. Fila 7. Recursividade 8. Árvores 9 PLANO DE ENSINO VIII – BIBLIOGRAFIA BÁSICA SCHILDT, H. C completo e total. São Paulo, 3.ed. Makron, 2010. SOFFNER, R. Algoritmos e Programação em Linguagem C. Saraiva, 2013. PEREIRA, S. L. Algoritmos e lógica de programação em C: uma abordagem didática. São Paulo, Érica, 2010. COMPLEMENTAR ARAUJO, E. C. de. Algoritmos: fundamento e prática. 3.ed. São Paulo: Visual Books, 2007. CELES, W.; CERQUEIRA, R.; RANGEL, J. L. Introdução a estruturas de dados: com técnicas de programação em C. Rio de Janeiro: Campus, 2004. MELO, A. C. V. de ; SILVA, F. S. C da. Princípios de linguagens de programação. São Paulo: Edgard Blucher, 2010. DEITEL, P.; DEITEL, H. C: como programar . 6. ed. São Paulo. Pearson 2011. MIZRAHI, V. V. Treinamento em linguagem C. 2. ed. São Paulo, Pearson, 2008 10 Objetivo de Aprendizagem Nesta unidade será apresentado ao aluno a estrutura e a funcionalidade de uma linguagem de programação utilizando formas de representações de problemas com construções de algoritmos. 11 Aplicabilidade da Programação • Presente em todas as áreas da computação: • Hardware; • Sistemas Operacionais; • Análise de Sistemas; • Banco de Dados; • Desenvolvimento Web; • Redes de Computadores; • Etc. 12 SEQUÊNCIA LÓGICA: Estes pensamentos devem ser descritos como uma sequência de instruções, que devem ser seguidas em ordem para se cumprir uma determinada tarefa; Passos executados até se atingir um objetivo ou solução de um problema 13 Cada um dos passos, cada uma das ações a tomar (obedecendo a sequência lógica) para ir resolvendo o problema, ou para ir executando a tarefa; Uma só instrução não resolve problemas. INSTRUÇÃO: 14 Instruções: “quebrar ovos”, “bater ovos”, “pôr sal”, “ligar fogão”, “pôr óleo na frigideira”, “pôr frigideira no fogo”, “fritar ovos batidos”, etc... Quanto às instruções isoladas: Só “quebrar ovos”, ou só “pôr óleo na frigideira”, não é suficiente para cumprir a tarefa “fazer omelete” Quanto à sequência lógica: Se executarmos “fritar ovos batidos” antes de “bater ovos”, ou pior, antes de “quebrar ovos”, não iremos cumprir a tarefa “fazer omelete” EXEMPLO: para “fazer omelete” 15 ALGORITMO: Sequência finita de passos, seguindo uma sequência lógica que levam à execução de uma tarefa; Claro e preciso. 16 Exemplo de algoritmo Quando uma dona de casa prepara um bolo, segue uma receita, que nada mais é do que um algoritmo em que cada instrução é um passo a ser seguido para que o prato fique pronto com sucesso: 1. Bata 4 claras em neve 2. Adicione 2 xícaras de açúcar 3. Adicione 2 colheres de farinha de trigo, 4 gemas, uma colher de fermento e duas colheres de chocolate 4. Bata por 3 minutos 5. Unte uma assadeira com margarina e farinha de trigo 6. Coloque o bolo para assar por 20 minutos 17 Exercício Sair pela manhã para sua atividade diária (trabalhar, ir pra aula, stc..) Descreva as ações a serem executadas, para que ao final da execução das mesmas o objetivo principal seja atingido satisfatoriamente. 18 Solução possível 1. Acordar 2. Desligar o despertador 3. Levantar 4. Arrumar a cama 5. Separar roupas e sapatos 6. Ir ao banheiro (higiene pessoal) 7. Colocar roupas e sapatos 8. Ir à cozinha 9. Preparar o café da manhã 10. Tomar café 11. Pegar documentos, chaves e pasta 12. Sair 19 FASES para desenvolver o algoritmo: Determinar o problema. Dividir a solução nas três fases: Exemplo: Problema: calcular a média de dois números Dados de entrada: os números, N1, N2 Processamento: somar os dois números e dividir a soma por 2 Dados de saída: Média ENTRADA PROCESSAMENTO SAÍDA Média = N1 + N2 2 20 Algoritmo: 1. Receber o primeiro número 2. Receber o segundo número 3. Somar todos os números 4. Dividir a soma por 2 5. Mostrar o resultado da divisão 21 Formas de representação de algoritmos: Descrição Narrativa; Fluxograma; Pseudocódigo. Algoritmos e Lógica de Programação 22 Algoritmos e Lógica de Programação o Descrição Narrativa: Caso 01 – Lavar o cabelo: 1. Molhar o cabelo; 2. Aplicar o xampú; 3. Massagear os cabelos; 4. Enxaguar. 23 Algoritmos e Lógica de Programação o Descrição Narrativa Exercício: Caso 02 – Trocar uma lâmpada queimada. Caso 03 – Trocar o pneu furado de um carro. 24 Solução caso 2 1. Pegar a escada e uma lâmpada nova 2. Desligar o interruptor 3. Posicionar a escada embaixo da lâmpada queimada 4. Subir na escada e tirar a lâmpada queimada 5. Colocar a lâmpada nova 6. Descer da escada e acender a lâmpada para teste 7. Guardar a escada 8. Jogar a lâmpada queimada no lixo 25 Solução caso 3 1. Parar o carro 2. Pegar no porta-malas: step, macaco, chave de rodas, triângulo 3. Sinalizar com o triângulo 4. Soltar os parafusos, sem tirá-los totalmente 5. Posicionar o macaco e levantar o carro 6. Tirar os parafusos totalmente e a roda 7. Colocar o step e os parafusos (com a mão) 8. Baixar o carro 9. Apertar os parafusos bem com a chave de rodas 10. Guardar a roda, macaco, triângulo, chave porta- malas. 11. Partir 26 Representação gráfica Diagrama de Blocos 27 o Fluxograma Representação gráfica, onde formas geométricas diferentes implicam ações distintas Algoritmos e Lógica de Programação 28 Algoritmos e Lógica de Programação Fluxograma Principais Formas: = Início e Fim do Fluxograma = Fluxo de Dados = Operação de Entrada de Dados = Operação de Saída de Dados = Operação de Atribuição (Processamento) = Decisão 29 Algoritmos e Lógica de Programação InícioMédia (N1+N2)/2 Média Fim N1, N2 Fluxograma Exemplo: 30 Algoritmos e Lógica de Programação Pseudocódigo ou Português Estruturado Exemplo: Algoritmo Soma Var n1, n2, S : Inteiro Início Escreva (“Entre com o primeiro valor: ”) Leia (N1) Escreva (“Entre com o segundo valor: ”) Leia (N2) S <- N1 + N2 Escreva (“Soma =“, S) Fim. 31 Algoritmos e Lógica de Programação Pseudocódigo ou Português Estruturado Representação de Algoritmo na forma Estruturada: Algoritmo<nome_do_algoritmo>; Var <declaração_de_variáveis>; Inicio <corpo_do_algoritmo>; Fim. Onde : Programa: É uma forma que indica o início da definição de um algoritmo em forma de pseudocódigo. <nome_do_algoritmo> : É um nome simbólico dado ao algoritmo com a finalidade de distingui-lo dos demais. <declaração_de_variávei> : Consiste no campo de declaração das variáveis utilizadas no algoritmo. Início e Fim : Palavras que delimitam o começo e o término do conjunto de instruções do corpo do algoritmo. 32 Algoritmos e Lógica de Programação Pseudocódigo ou Português Estruturado Comandos de Entrada e Saída de Dados: Entrada de Dados Ex : Leia (X); Leia (A, XPTO, Nota); Saída de Dados Ex : Escreva (Y); Escreva (“Bom Dia”, Nome); 33 • Representa uma posição na memória, onde pode ser armazenado um dado; • Possui um nome e um valor; • Durante a execução do algoritmo, pode ter seu valor alterado. Algoritmos e Lógica de Programação Variável 34 Algoritmos e Lógica de Programação Exemplo: “Calcular a média de dois números” PSEUDOCÓDIGO: Leia (N1) Leia (N2) MEDIA <- (N1+N2) / 2 Escreva (MEDIA) VARIÁVEIS: mais clareza no pseudocódigo VARIÁVEL 35 Pseudocódigo ou Português Estruturado Uso de Variáveis - O primeiro caractere do nome de uma variável não poderá ser, em hipótese alguma, um número. Sempre deverá ser uma letra; - O nome de uma variável não poderá possuir espaços em branco; - Não poderá ser nome de uma variável uma palavra reservada; - Não poderão ser utilizados outros caracteres a não ser letras e números, com exceção do caractere underline “_”. Algoritmos e Lógica de Programação 36 Tipos de Dados : • 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. Algoritmos e Lógica de Programação 37 Algoritmos e Lógica de Programação Definição de variáveis Todas as variáveis usadas em um algoritmos devem ser definidas antes de serem utilizadas. Isto se faz necessário para permitir que o compilador reserve espaço na memória para as mesmas. Sintaxe: • VAR <Nome_da_variável> : <Tipo_da_variável> • VAR <Lista_de_variáveis> : <Tipo_das_variáveis> – A palavra-chave VAR deverá estar presente sempre e será utilizada uma única vez na definição de um conjunto de uma ou mais variáveis; Exemplo de declaração: Var x : inteiro; y, soma : inteiro; 38 Atribui o valor da direita à variável da esquerda MEDIA <- (N1+N2) / 2 (Lê-se media recebe N1+...) Neste caso, estamos atribuindo o resultado da fórmula à variável média; Outros Exemplos: a <- 3; a <- x; Algoritmos e Lógica de Programação Atribuição (<-) 39 Algoritmos e Lógica de Programação Exercícios: 1) Faça um fluxograma que mostre na tela a frase “Olá Mundo”. 2) Faça um fluxograma que mostre a palavra “UNIP” na tela. 3) Faça um fluxograma que leia um número do usuário, some 10 a esse número e mostre o resultado na tela. 40 Algoritmos e Lógica de Programação Exercício 1 - Solução 41 Algoritmos e Lógica de Programação Exercício 2 - Solução 42 Algoritmos e Lógica de Programação Exercício 3 - Solução 43 Algoritmos e Lógica de Programação Exercícios: 4) Faça um fluxograma e o algoritmo que mostre o nome do usuário na tela. 5) Faça o fluxograma e o algoritmo que leia dois números do usuário, mostre o resultado da soma dos dois números. 6) Faça um fluxograma que leia um número e mostre na tela o número digitado multiplicado por 2, da seguinte forma: Ex: Supondo que N contém o Nº digitado N = 7 : 7 x 2 = 14 44 Algoritmos e Lógica de Programação Exercício 4 - Solução 45 Algoritmos e Lógica de Programação Exercício 5 - Solução 46 Algoritmos e Lógica de Programação Exercício 6 - Solução 47 Algoritmos e Lógica de Programação Operadores Aritméticos 48 Algoritmos e Lógica de Programação Exemplos: MEDIA = (N1+N2+N3+N4) / 4 Hierarquia dos Operadores Aritméticos 49 Algoritmos e Lógica de Programação Métodos para Construção de Algoritmo: • Ler atentamente o enunciado. • Retirar do enunciado a relação das entradas de dados. • Retirar do enunciado a relação das saídas de dados. • Determinar o que deve ser feito para transformar as entradas determinadas nas saídas especificadas. • Construção do algoritmo. 50 Algoritmos e Lógica de Programação Desvio Condicional Simples (SE…ENTÃO) Um desvio condicional tem por finalidade tomar uma decisão de acordo com o resultado de uma condição (teste lógico), e então executar um bloco de códigos que irá depender do resultado dessa condição. O desvio condicional simples permite executar um bloco de código caso o resultado do teste seja verdadeiro, ignorando um resultado falso. 51 Algoritmos e Lógica de Programação Desvio Condicional Simples (SE…ENTÃO) 52 Algoritmos e Lógica de Programação Exemplo do uso do Desvio Condicional Simples 53 Algoritmos e Lógica de Programação Operadores Relacionais Os operadores relacionais são utilizados para comparar String de caracteres (conjunto de caracteres) e números. Os valores a serem comparados podem ser caracteres, números ou variáveis. Estes operadores sempre retornam valores lógicos (verdadeiro ou falso/ True ou False). 54 Algoritmos e Lógica de Programação Operadores Relacionais Descrição Símbolo Igual a = Diferente de <> ou # Maior que > Menor que < Maior ou igual a >= Menor ou igual a <= 55 Algoritmos e Lógica de Programação Exercícios: 7) Faça o fluxograma e o algoritmo que leia um número inteiro e mostre na tela “Positivo” ou “Negativo” (considere Zero positivo). 8) Faça o fluxograma e o algoritmo que leia dois números, em seguida mostre o maior número lido para o usuário. (se forem iguais mostre um deles) 9) Faça o fluxograma e o algoritmo que leia o sexo: (M – Masculino e F – Feminino) Mostre na tela a descrição do sexo do usuário: Feminino ou Masculino OBS: Lembre que o caractere dever ser comparado entre aspas simples. 10) Faça o fluxograma e o algoritmo que leia dois números inteiros, em seguida os mostre em ordem crescente para o usuário na tela. 56 Algoritmos e Lógica de Programação Exercício 7 - Solução 57 Algoritmos e Lógica de Programação Exercício 8 - Solução 58 Algoritmos e Lógica de Programação Opções de saídas 59 Algoritmos e Lógica de Programação Exercício 9 - Solução 60 Exercício 10 - Solução 61 Algoritmos e Lógica de Programação https://portugol-webstudio.cubos.io/ide PORTUGAL WEBSTUDIO Aula de aplicação prática do uso do Português Estruturado 62 Algoritmos e Lógica de Programação funcao inicio() INÍCIO { VAR inteiro numero, multiplo escreva("Digite um número: ") leia(numero) se (numero % 5 == 0) INÍCIO { escreva("O número ", numero, " é multiplo de 5") } senao { escreva("O número ", numero, " não é multiplo de 5") FIM_SE } escreva("\n") FIM } 63 Algoritmos e Lógica de Programação 1) Faça um fluxograma que mostre na tela a frase “Olá Mundo”. 64 Algoritmos e Lógica de Programação 2) Faça um fluxograma e o algoritmo que mostre o nome do usuário na tela. 65 Algoritmos e Lógica de Programação 66 Algoritmos e Lógica de Programação 3) Faça um fluxograma que leia um número inteiro do usuário, some 10 a esse número e mostre o resultado na tela. 67 Algoritmos e Lógica de Programação 68 Algoritmos e Lógicade Programação 4) Faça o fluxograma e o algoritmo que leia o sexo: (M – Masculino e F – Feminino) Mostre na tela a descrição do sexo do usuário: Feminino ou Masculino OBS: Lembre que o caractere dever ser comparado entre aspas simples. 69 Algoritmos e Lógica de Programação 70 Algoritmos e Lógica de Programação 5) Faça o fluxograma e o algoritmo que leia dois números inteiros, em seguida os mostre em ordem crescente para o usuário na tela. 71 Algoritmos e Lógica de Programação 72 Algoritmos e Lógica de Programação Objetivos • Introduzir o aluno à sintaxe de desenvolvimento da linguagem C; • Apresentar a estrutura básica de um programa em C; • Apresentar regras fundamentais de boa prática de programação; • Tornar o aluno apto a compreender e criar seus próprios códigos em C; LINGUAGEM DE PROGRAMAÇÃO C 73 Algoritmos e Lógica de Programação Sobre a Linguagem C • Surgiu na década de 70, criado por Dennis Ritchie. • Possui características tanto de “alto nível” quanto de “baixo nível”. • É considerada uma linguagem de “Médio Nível” • Muitos programas foram desenvolvidos em C por muito tempo. • O C é uma linguagem ESTRUTURADA! • O C é uma linguagem compilada 74 Algoritmos e Lógica de Programação O C é “case sensitive”! • Isso quer dizer que a linguagem C, diferencia letras maiúsculas e minúsculas, tanto para nome de funções, variáveis e comandos da linguagem; • Ao declararmos as seguintes variáveis: int Soma, SOMA, SoMa, soma; • Todas as variáveis acima serão diferentes para o C. • Isto também se aplica aos comandos de sintaxe do C. • Como, por exemplo, o “for” e “if” que se forem escritos em maiúsculas o compilador não poderá interpretá-las corretamente. 75 Algoritmos e Lógica de Programação Estrutura do Código Devido ao fato do C ser uma linguagem estruturada, ou seja, o compilador segue um fluxo linear de compilação, devemos respeitar uma estrutura de código. Vejamos abaixo: 1ª. Declaração das bibliotecas (cabeçalhos, headers). 2ª. Declaração das variáveis globais. 3ª. Declaração das funções extras. 4ª. Função principal do programa. 76 Algoritmos e Lógica de Programação Palavras Reservadas • Toda linguagem de programação possuí “palavras reservadas”. • Palavras reservadas não podem ser utilizadas a não ser por seus propósitos originais, ou seja, executar uma determinada ação. 77 Algoritmos e Lógica de Programação Quando falamos de “boas práticas” podemos fazer referência as “regras de etiqueta”. Assim como na vida, um código de programação em qualquer linguagem necessita de normas organizacionais. Estas normas, nem sempre são regras, mas são “dicas” para manter seu código legível, que resultará em um código fácil de entender e manter. BOAS PRÁTICAS 78 Algoritmos e Lógica de Programação Comentários Linguagem C Como já falamos de boas práticas, seria impossível não falar de “comentários em C”. Comentários são blocos de texto que são ignorados pelos compiladores. No C teremos duas formas de comentários, são elas: // Comentário de uma linha /* Bloco de comentário */ 79 A linguagem C possuí 5 (cinco) tipos básicos de dados: char, int, float e double. Tipos de Dados Algoritmos e Lógica de Programação Tipo Número de bits Formato de leitura com scanf() char 8 %C int 16 %i long int 32 %li float 32 %f double 64 %lf 80 Declaração de variável: <tipo_da_variável > <nome_da_variável> = <valor_inicial_da_variável>; Exemplo: int Contador = 0; Declaração de variáveis de um mesmo tipo: <tipo_da_variável> <nome_var1> = <valor1>, <nome_var2> = <valor2>; Exemplo: float Sal_Bruto = 0, Sal_Liquido = 0; Algoritmos e Lógica de Programação Boas práticas! Ao nomear uma variável seja objetivo, use nomes fáceis de entender e se necessário faça um comentário acima da variável explicando sua utilidade. Em nomes compostos separe-os utilizando underline. 81 Algoritmos e Lógica de Programação 82 Algoritmos e Lógica de Programação https://repl.it/repls/HalfBleakSdk Link para o compilador C on line : PRÁTICA: 83 Algoritmos e Lógica de Programação PRÁTICA 1) Faça um Programa C que mostre a mensagem na tela para o usuário: “ MEU PRIMEIRO PROGRAMA C.” 84 Algoritmos e Lógica de Programação SOLUÇÃO EXERCÍCIO 1 85 Algoritmos e Lógica de Programação PRÁTICA 2) Faça um Programa C que leia um número inteiro, e mostre a mensagem na tela para o usuário: Ex: “O número foi: 7” 86 Algoritmos e Lógica de Programação SOLUÇÃO EXERCÍCIO 2 87 Algoritmos e Lógica de Programação PRÁTICA 3) Faça um Programa C que leia um número, some 10 a ele, e mostre o resultado para o usuário. 88 Algoritmos e Lógica de Programação SOLUÇÃO EXERCÍCIO 3 89 Algoritmos e Lógica de Programação 4) Faça o fluxograma e o algoritmo que leia o sexo: (M – Masculino e F – Feminino) Mostre na tela a descrição do sexo do usuário: Feminino ou Masculino OBS: Lembre que o caractere dever ser comparado entre aspas simples PRÁTICA 90 Algoritmos e Lógica de Programação #include <stdio.h> int main(void) { char sx; printf("Sexo(F - Feminino M - Masculino): "); scanf("%c",&sx); if(sx=='M') printf("Maculino"); else if(sx=='F') printf("Feminino"); else printf("Opção inválida"); return 0; } SOLUÇÃO EXERCÍCIO 4 91 Algoritmos e Lógica de Programação IF…ELSE ANINHADOS (ENCADEADOS) Seqüências de estruturas If-Else são usadas para o teste de múltiplos casos 92 Algoritmos e Lógica de Programação IF…ELSE ANINHADOS (ENCADEADOS) Algoritmo Média aritmética com conceito início real: N1, N2, N3, N4,//notas bimestrais MA; //média anual leia (N1, N2, N3, N4); //entrada de dados MA (N1 + N2 + N3 + N4)/4; //processamento escreva(“Média anual = ”, MA); se ( MA >= 9) então início escreva (“Conceito A”); fim senão se ( MA >= 7) então início escreva (“Conceito B”); fim 93 Algoritmos e Lógica de Programação IF…ELSE ANINHADOS (ENCADEADOS) senão se ( MA >= 6) então início escreva (“Conceito C”); fim; senão início escreva (“Conceito D”); fim; fimse; fimse; fimse; fimalgoritmo 94 Algoritmos e Lógica de Programação EXERCÍCIO 1) Crie um algoritmo e o fluxograma que leia a nota de um aluno e mostre se ele está aprovado (>= 6), em recuperação (< 6) ou reprovado (< 2). 95 Algoritmos e Lógica de Programação 96 Algoritmo "situacao-aluno“ Var nota : inteiro inicio escreva("Digite uma nota (de 0 a 100): ") leia(nota) se nota >= 60 entao escreva("Aprovado!") senao se nota >= 20 entao escreva("Recuperação!") senao escreva("Reprovado!") fimse fimse fim Algoritmos e Lógica de Programação 97 Algoritmos e Lógica de Programação 2) Escreva um programa que leia a idade de uma pessoa em seguida ele deve mostrar na tela a idade e também as seguintes mensagens, quando for o caso: • Já pode votar (se tiver 16 anos ou mais) • Já pode votar e solicitar a Carteira de Habilitação (se tiver 18 anos ou mais) 98 Algoritmos e Lógica de Programação 99 Algoritmos e Lógica de Programação 3) Escreva um fluxograma que liste na tela o nome e o telefone se o usuário for do sexo feminino com idade acima de 18 anos. 100 Algoritmos e Lógica de Programação 101 Algoritmos e Lógica de Programação https://repl.it/repls/HalfBleakSdk Link para o compilador C on line : PRÁTICA: 102 Algoritmos e Lógica de Programação PRÁTICA: 1) Escreva um programa que leia a idade de uma pessoa em seguida ele deve mostrar na tela a idade e também as seguintes mensagens, quando for o caso: • Já pode votar (se tiver 16 anos ou mais) • Já pode votar e solicitar a Carteira de Habilitação (se tiver 18 anos ou mais) 103 Algoritmos e Lógica de Programação #include <stdio.h> int main(void) { int idade; printf("\nDigite a idade: "); scanf("%i",&idade); if (idade >= 18) printf("\nPode votar e solicitar a Habilitação"); else if (idade >= 16) printf("\nPode votar."); } 104 Algoritmos e Lógica de Programação PRÁTICA: 2) Escreva um programa que leia o sexo (M/F) e a idade de uma pessoa em seguida eledeve mostrar na tela as seguintes mensagens, quando for o caso: • Maior Idade – Mulher • Menor Idade – Homem • Maior Idade – Opção Inválida 105 Algoritmos e Lógica de Programação #include <stdio.h> int main(void) { char sx; int id; printf("\nSexo (M/F): "); scanf("%c",&sx); printf("\nIdade: "); scanf("%i",&id); if (id >= 18) printf("\nMaior Idade "); else printf("\nMenor Idade "); if (sx== 'M') printf("- Homem"); else if (sx == 'F') printf("- Mulher"); else printf(" Opção inválida."); } 106 Algoritmos e Lógica de Programação PRÁTICA: 3) Crie um algoritmo e o fluxograma que leia a nota de um aluno e mostre se ele está aprovado (>= 6), em recuperação (< 6) ou reprovado (< 2). 107 Algoritmos e Lógica de Programação #include <stdio.h> int main(void) { int nota; printf("\nDigite uma nota (de 0 a 10): "); scanf("%i",¬a); if (nota >= 6) printf("\nAprovado!"); else if (nota >= 2) printf("\nRecuperação!"); else printf("\nReprovado!"); } 108 Algoritmos e Lógica de Programação PRÁTICA: 4) Desenvolva um programa em C que calcule a média aritmética de 4 notas fornecidas. Mostre para o usuário a média calculada e o conceito alcançado de acordo com as regras a seguir: - Conceito A – Média maior ou igual a 9 - Conceito B – Média maior ou igual a 7 e menor igual a 8 - Conceito C – Média maior ou igual a 6 e menor igual a 5 - Conceito D - Média menor que 5 109 #include <stdio.h> #include <stdlib.h> int main(void) { float N1, N2, N3, N4; float MA; system("cls"); printf("\nDigite as notas\n"); printf("\nNota 1:"); scanf("%f",&N1); printf("\nNota 2:"); scanf("%f",&N2); printf("\nNota 3:"); scanf("%f",&N3); printf("\nNota 4:"); scanf("%f",&N4); MA = (N1 + N2 + N3 + N4)/4; printf("\nMédia anual = %5.2f ", MA); if ( MA >= 9) printf (" Conceito A"); else if ( MA >= 7) printf(" Conceito B"); else if (MA >= 5) printf("Conceito C"); else printf("conceito D"); return 0; } Algoritmos e Lógica de Programação 110 Algoritmos e Lógica de Programação Condição Composta • Uma Condição composta envolve diversas “condições” conectadas por OPERADORES LÓGICOS. Os símbolos dos OPERADORES LÓGICOS são: • E - O resultado será verdadeiro somente se a avaliação de todas as condições forem verdadeiras • OU - O resultado será falso somente se a avaliação de todas as condições forem falsos • NÃO - Inverte o resultado da “expressão lógica” (ou condição) 111 Algoritmos e Lógica de Programação COND 1 COND 2 COND 1 E COND2 V V V V F F F V F F F F OPERADOR LÓGICO E 112 Algoritmos e Lógica de Programação 113 Algoritmos e Lógica de Programação COND 1 COND 2 COND 1 OU COND2 V V V V F V F V V F F F OPERADOR LÓGICO OU 114 Algoritmos e Lógica de Programação 115 Algoritmos e Lógica de Programação COND 1 NÃO COND 1 V F F V OPER. LÓG. NÃO NEGAÇÃO 116 Algoritmos e Lógica de Programação EXERCÍCIO 1 Escreva um algoritmo que leia três idades, e mostre a maior delas para o usuário. 117 Algoritmos e Lógica de Programação programa { funcao inicio() { inteiro id1,id2,id3 escreva("idade1:") leia(id1) escreva("idade2:") leia(id2) escreva("idade3:") leia(id3) se ((id1 >= id2) e (id1>=id3) ) escreva("\nMaior idade = ",id1,"\n") senao se ((id2 >= id1) e (id2>=id3) ) escreva("\nMaior idade = ",id2,"\n") senao se ((id3 >= id1) e (id3>=id2) ) escreva("\nMaior idade = ",id3,"\n") } } 118 Algoritmos e Lógica de Programação 2) Escreva um algoritmo que leia o sexo (M/F) e a idade de uma pessoa em seguida ele deve mostrar na tela as seguintes mensagens, quando for o caso: • Maior Idade – Mulher • Menor Idade – Homem • Maior Idade – Opção Inválida EXERCÍCIO 2 119 Algoritmos e Lógica de Programação programa { funcao inicio() { caracter sx inteiro id escreva("sexo:") leia(sx) escreva("Idade:") leia(id) se ((sx == 'F') e (id>=18) ) escreva("MULHER - MAIOR") senao se (sx == 'F') escreva("MULHER - MENOR") senao se (id>=18) escreva("HOMEM - MAIOR") senao escreva("HOMEM - MENOR") } } 120 Algoritmos e Lógica de Programação EXERCÍCIO 3 Para receber um certo beneficio, uma pessoa precisa ter ao menos 3 filhos, ou ter mais de 65 anos de idade. Crie um algoritmo que leia a idade e o número de filhos de uma pessoa, e verifique se essa pessoa tem direito ou não ao beneficio. 121 Algoritmos e Lógica de Programação 122 Algoritmos e Lógica de Programação programa { funcao inicio() { inteiro id,fl escreva("idade:") leia(id) escreva("Filhos:") leia(fl) se ((id >= 65) ou (fl>=3) ) escreva("Tem direito ao Benefício") senao escreva("NÃO Tem direito ao Benefício") } } 123 Algoritmos e Lógica de Programação https://repl.it/repls/HalfBleakSdk Link para o compilador C on line : PRÁTICA: 124 Algoritmos e Lógica de Programação Operadores lógicos: PORT. C • E : representado por && • OU : representado por || • NEG : representado por ! 125 Algoritmos e Lógica de Programação %5.2f %5.3f 9.999 99.99 FORMATÇÃO TIPO FLOAT 126 Algoritmos e Lógica de Programação PRÁTICA: 1) Faça um programa em C que encontre o dobro de um número caso ele seja positivo e o seu triplo caso seja negativo, mostre o resultado na tela. 127 Algoritmos e Lógica de Programação #include <stdio.h> int main(void) { int num, r; printf("Digite um número:\n"); scanf("%i",&num); if (num>=0) r=2*num; else r=3*num*(-1); printf("\n\n Resulado: %i",r); return 0; } Resolução Questão 1: 128 Algoritmos e Lógica de Programação 2) Elabore um algoritmo que calcule o que deve ser pago por um produto, considerando o preço normal de etiqueta e a escolha da condição de pagamento. Utilize os códigos da tabela a seguir para ler qual a condição de pagamento escolhida e efetuar o cálculo adequado. 1- À vista em dinheiro ou cheque, recebe 10% de desconto 2- À vista no cartão de crédito, recebe 15% de desconto 3- Em duas vezes, preço normal de etiqueta sem juros 4- Em duas vezes no cartão de crédito, preço normal de etiqueta mais juros de 10% 129 Algoritmos e Lógica de Programação #include <stdio.h> int main(void) { int Fgto,vz; float preco,vlr, par; printf("Preço Etiqueta: R$ "); scanf("%f",&preco); printf("\n\nFORMAS DE PAGAMENTO\n\n"); printf("1- À vista em dinheiro ou cheque, recebe 10%% de desconto\n"); printf("2- À vista no cartão de crédito, recebe 15%% de desconto\n"); printf("3- Em duas vezes, preço normal de etiqueta sem juros\n"); printf("4- Em duas vezes no cartão de crédito, preço normal de etiqueta mais juros de 10%%\n"); printf("\n\nCódigo:"); scanf("%i",&Fgto); vz = 1; par = 0; if (Fgto == 1) vlr=preco-preco*0.10; else if (Fgto == 2) vlr=preco-preco*0.15; else if (Fgto == 3) { vlr=preco; vz = 2; par = vlr / vz; } else if (Fgto == 4) { vlr=preco+preco*0.10; vz = 2; par = vlr / vz; } printf("\n\n Valor: R$ %6.2f \n",vlr); if (vz>1) printf("Parcela: R$ %5.2f em %i vezes.",par,vz); return 0; } 130 Algoritmos e Lógica de Programação 3) Como maçãs custam R$ 0,30 cada se forem compradas menos do que uma dúzia e, R$0,25 cada, se forem compradas por menos uma dúzia. Escreva um programa que leia o número de maçãs compradas, cálculo e escreva o valor total da compra. 131 Algoritmos e Lógica de Programação #include <stdio.h> int main(void) { int qtd; float vlr=0; printf("\n\nValor unitário da laranja \npor quantidade comprada:\n"); printf("\nAcima de 12 unidades --> R$ 0,25\nAté onze unidades --> R$ 0,30"); printf("\n\nQuantidade a comprar: "); scanf("%i",&qtd); if (qtd < 12) vlr = qtd * 0.30; else vlr = qtd * 0.25; printf("\n\n+--------------------------------------+"); printf("\n| Valor total a pagar: R$ %5.2f |",vlr); printf("\n+--------------------------------------+"); } 132 Algoritmos e Lógica de Programação 4) Criar um programa em linguagem C que leia um número inteiro entre 1 e 7 e escreva o dia da semana correspondente. Caso o usuário digite um número fora desse intervalo, deverá aparecer uma mensagem informando que não existe dia da semana com esse número. 133 Algoritmos e Lógica de Programação#include <stdio.h> int main(void) { int dia; float vlr=0; printf("\n\nDia da Semana (1..7)\n"); printf("\nDigite o número do dia da semana: "); scanf("%i",&dia); printf("\n"); if (dia == 1) printf("Domingo"); else if (dia == 2) printf("Segunda"); else if (dia == 3) printf("Terça"); else if (dia == 4) printf("Quarta"); else if (dia == 5) printf("Quinta"); else if (dia == 6) printf("Sexta"); else if (dia == 7) printf("Sábado"); } 134 Algoritmos e Lógica de Programação 5) Um hotel cobra R$ 300,00 por diária e mais uma taxa adicional de serviços. Se a diária for menor que 15 a taxa e de R$ 20,00. Se o número de diárias for igual a 15 a taxa é de R$ 14,00 e se o número for maior que 15 a taxa é de R$ 12,00. Considerando-se que para cada pessoa tenha-se um registro contendo seu nome e o número de diárias. Faça um algoritmo que imprima o nome e o total a pagar do hóspede. 135 Algoritmos e Lógica de Programação O comando caso é utilizado para que seja possível escolher uma opção dentre várias existentes, eliminando a necessidade de se usar diversos Se ... Então encadeados. Isso simplifica a codificação do algoritmo, e facilita sua depuração e atualização. Esse comando testa uma condição, e dependendo do resultado, executará os códigos associados. Comando Caso – Escolhas múltiplas 136 Algoritmos e Lógica de Programação SELEÇÃO ENTRE DUAS OU MAIS SEQUÊNCIAS DE COMANDOS Formas de Representação no Algoritmo caso <valor da expressão> igual <lista de valores 1> então <sequência de comandos 1> igual <lista de valores N> então <sequência de comandos N> senão <sequência de comandos X> fim-caso …… 137 Algoritmos e Lógica de Programação EXEMPLO ( comando case ) : Dado o código da peça, determinar seu peso Algoritmo Determina_Peso Início caractere CODIGO; real PESO; Escreva (“Código da peça (P,M,G)”); leia (CODIGO); caso CODIGO igual 'p' então PESO=23.5; escreva (“Peso é ”, PESO); igual 'm' então PESO=50.7; escreva (“Peso é ”, PESO); igual 'g' então PESO=102.9; escreva (“Peso é ”, PESO); senão escreva (“Código Invalido”); fim-caso Fim. programa { funcao inicio() { caracter CODIGO real PESO escreva("Codigo da peca (P,M,G)\n") leia (CODIGO) escolha (CODIGO) { caso 'p' : PESO=23.5 escreva("\nPeso é ", PESO,"\n\n") pare caso 'm': PESO=50.7 escreva("\nPeso é ", PESO,"\n\n") pare caso 'g': PESO=102.9 escreva("\nPeso é ", PESO,"\n\n") pare caso contrario: escreva("\nCódigo Invalido\n\n") } } } Portugol Padrão Portugol Webstudio 138 Algoritmos e Lógica de Programação Exercícios 1) Crie um programa que classifique a categoria de um atleta de acordo com sua idade, conforme as regras: • De 8 a 10 anos – INFANTIL • De 11 a 13 anos - JUVENIL • De 14 a 16 anos - JUNIOR 139 Algoritmos e Lógica de Programação programa { funcao inicio() { inteiro idade escreva("Idade:") leia(idade) escolha(idade) { caso 8: caso 9: caso 10: escreva("\ninfantil\n") pare caso 11: caso 12: caso 13: escreva("\nJuvenil\n") pare caso 14: caso 15: caso 16: escreva("\nJunior\n“) pare caso contrario: escreva("\nIdade sem cartegoria.\n") } } } 140 Algoritmos e Lógica de Programação 2) Uma empresa concederá um aumento de salário aos seus funcionários, variável de acordo com o cargo, conforme a tabela abaixo. Faça um algoritimo que leia o salário e o código do cargo de um funcionário e calcule o seu novo salário. Se o cargo do funcionário não estiver na tabela, ele deverá, então, receber 15% de aumento. Mostre o salário antigo, o novo salário e a diferença entre ambos. Código % 310 5.0 456 7.5 885 10.0 141 Algoritmos e Lógica de Programação programa { funcao inicio() { inteiro cargo real sal, nv_sal, acrec escreva("\nCargo: ") leia(cargo) escreva("\nSalário: ") leia(sal) escolha(cargo) { caso 310: acrec = sal * 0.05 nv_sal = sal + acrec escreva("\nSal.Ant. = R$ ",sal," Sal.Nov. = R$ ",nv_sal," Aumento = R$ ",acrec,"\n\n") pare caso 456: acrec = sal * 0.075 nv_sal = sal + acrec escreva("\nSal.Ant. = R$ ",sal," Sal.Nov. = R$ ",nv_sal," Aumento = R$ ",acrec,"\n\n") pare caso 885: acrec = sal * 0.1 nv_sal = sal + acrec escreva("\nSal.Ant. = R$ ",sal," Sal.Nov. = R$ ",nv_sal," Aumento = R$ ",acrec,"\n\n") pare caso contrario: acrec = sal * 0.15 nv_sal = sal + acrec escreva("\nSal.Ant. = R$ ",sal," Sal.Nov. = R$ ",nv_sal," Aumento = R$ ",acrec,"\n\n") } } } 142 Algoritmos e Lógica de Programação 3) Faça um algoritmo que leia uma letra e mostre uma das mensagens de acordo com a mesma: Letra = a -> “Vogal (a)” Letra = m -> “Consoante (m)” 143 Algoritmos e Lógica de Programação programa { funcao inicio() { caracter letra escreva("\nLetra: ") leia(letra) escolha(letra) { caso 'a': escreva("\nVogal (a)\n") pare caso 'e': escreva("\nVogal (e)\n") pare caso 'i': escreva("\nVogal (i)\n") pare caso 'o': escreva("\nVogal (o)\n") pare caso 'u': escreva("\nVogal (u)\n") pare caso contrario: escreva("\nConsoante (",letra,")\n") } } } 144 Algoritmos e Lógica de Programação 4) Faça um algoritmo que simule uma calculadora com as operações básicas: Adição, Multiplicação, Divisão, Subtração 145 Algoritmos e Lógica de Programação programa { funcao inicio() { caracter oper real res,x,y escreva("\nCalculadora") escreva("\nOperações: + * / -\n") leia(x,oper,y) escolha(oper) { caso '+':res = x + y escreva("\n",x," ",oper," ",y," = ",res,"\n\n") pare caso '*': res = x * y escreva("\n",x," ",oper," ",y," = ",res,"\n\n") pare caso '/': res = x / y escreva("\n",x," ",oper," ",y," = ",res,"\n\n") pare caso '-': res = x - y escreva("\n",x," ",oper," ",y," = ",res,"\n\n") pare caso contrario: escreva("\nOperação não disponível.\n\n") } } } 146 Algoritmos e Lógica de Programação O comando caso é utilizado para que seja possível escolher uma opção dentre várias existentes, eliminando a necessidade de se usar diversos Se ... Então encadeados. Isso simplifica a codificação do algoritmo, e facilita sua depuração e atualização. Esse comando testa uma condição, e dependendo do resultado, executará os códigos associados. Comando Caso – Escolhas múltiplas 147 Algoritmos e Lógica de Programação switch (variável) { case <constante1> : <sequência de comandos 1> ; break; …. case <constante N> : <sequência de comandos N>; break; default sequência de comandos default; } Aula Prática 148 Algoritmos e Lógica de Programação switch (variável) { case <constante1> : <sequência de comandos 1> ; break; …. case <constante N> : <sequência de comandos N>; break; default sequência de comandos default; } Se o comando break não for utilizado os demais cases continuam sendo avaliados. A expressão é avaliada e então a sequência associada ao seu valor é executada. Se o valor da expressão não se encontra em nenhuma das listas de valores, a sequência default será executada. A opção default é facultativa 149 Algoritmos e Lógica de Programação EXEMPLO ( comando case ) : Dado o código da peça, determinar seu peso programa { funcao inicio() { caracter CODIGO real PESO escreva("Codigo da peca (P,M,G)\n") leia (CODIGO) escolha (CODIGO) { caso 'p' : PESO=23.5 escreva("\nPeso é ", PESO,"\n\n") pare caso 'm': PESO=50.7 escreva("\nPeso é ", PESO,"\n\n") pare caso 'g': PESO=102.9 escreva("\nPeso é ", PESO,"\n\n") pare caso contrario: escreva("\nCódigo Invalido\n\n") } } } Portugol Webstudio Linguagem C #include <stdio.h> #include <stdlib.h> int main() { char cod; float peso; printf("Codigo (p-m-g):"); scanf("%c",&cod); switch(cod){ case 'p': peso = 23.5; break; case 'm': peso = 50.7; break; case 'g': peso = 102.9; break; } printf("\n\nPeso = %5.2f\n\n",peso); return 0; } 150 Algoritmos e Lógica de Programação 1) Uma empresa concederá um aumento de salário aos seus funcionários, variável de acordo com o cargo, conforme a tabela abaixo. Faça um algoritimo que leia o salárioe o código do cargo de um funcionário e calcule o seu novo salário. Se o cargo do funcionário não estiver na tabela, ele deverá, então, receber 15% de aumento. Mostre o salário antigo, o novo salário e a diferença entre ambos. Código % 310 5.0 456 7.5 885 10.0 151 Algoritmos e Lógica de Programação #include <stdio.h> #include <stdlib.h> int main() { int carg; float sal,nv_sal,acre; printf("\nCargo:"); scanf("%i",&carg); printf("\nSalario:"); scanf("%f",&sal); switch(carg){ case 310 : acre = sal * 0.05; nv_sal = sal + acre; break; case 456: acre = sal * 0.075; nv_sal = sal + acre; break; case 885: acre = sal * 0.1; nv_sal = sal + acre; break; default: acre = sal * 0.15; nv_sal = sal + acre; break; } printf("\n\nSalario = R$ %5.2f",sal); printf("\nAumento = R$ %5.2f",acre); printf("\nNovo Salario = R$ %5.2f \n\n",nv_sal); return 0; } 152 Algoritmos e Lógica de Programação 2) Faça um algoritmo que simule uma calculadora com as operações básicas: Adição, Multiplicação, Divisão, Subtração 153 Algoritmos e Lógica de Programação #include <stdio.h> #include <stdlib.h> int main() { char op; float x,y,re; printf("\nCalculadora (+,-,*,/)\n"); printf("====================\n\n"); scanf("%f",&x); scanf("%s",&op); scanf("%f",&y); switch(op){ case '+' : re = x + y; break; case '-' : re = x - y; break; case '*' : re = x * y; break; case '/' : re = x / y; break; default: printf("Operação invalida."); break; } printf("\n\n %5.2f %c %5.2f = %5.2f",x,op,y,re); return 0; } 154 Algoritmos e Lógica de Programação 3) Mostre o menu abaixo para o usuário e o permita escolher um dos produtos de sua escolha. No final mostre o total a pagar. 1 – Hamburguer R$ 18,00 2 – Batata Frita R$ 20,00 3 – Refri 300 ml R$ 12,00 155 Algoritmos e Lógica de Programação #include <stdio.h> #include <stdlib.h> int main() { int op,qt; float tot; printf("\n\n * * * M E N U * * *\n"); printf(" ====================\n\n"); printf("1- Hamburguer R$ 18,00\n"); printf("2- Batata Frita R$ 20,00\n"); printf("3- Refri R$ 12,00\n"); printf("\nFaça seu pedido: "); scanf("%i",&op); if((op>=1) && (op<=3) ) { printf("\nQuantidade: "); scanf("%i",&qt); } tot = 0; switch(op){ case 1 : tot = 18 * qt; break; case 2 : tot = 20 * qt; break; case 3 : tot = 12 * qt; break; default: printf("Opção invalida."); break; } if (tot>0) printf("\nTotal a pagar = R$ %5.2f",tot); return 0; } 156 Algoritmos e Lógica de Programação 4) Em uma loja e CD´s existem apenas quatro tipos de preços que estão associados a cores. Assim os CD´s que ficam na loja não são marcados por preços e sim por cores. Desenvolva o algoritmo que a partir a entrada da cor o software mostre o preço. A loja está atualmente com a seguinte tabela de preços. Cor Preço Verde R$ 10,00 Azul R$ 20,00 Amarelo R$ 30,00 Vermelho R$ 40,00 157 Algoritmos e Lógica de Programação #include <stdio.h> //#include <stdlib.h> int main() { char cor; float pr; printf("\n\n Tabela Preco\n"); printf("=====================\n\n"); printf("E-Verde - R$ 10,00\nZ-Azul - R$”); printf(“ 20,00\nA-Anarelo - R$ 30,00\nO-”); printf(“Vermelho - R$ 40,00\n\n"); printf("Cor: "); scanf("%s",&cor); pr = 0; switch(cor) { case 'e' : case 'E' : pr = 10 ; break; case 'z' : case 'Z' : pr = 20; break; case 'a' : case 'A' : pr = 30; break; case 'o' : case 'O' : pr = 40; break; default: printf("\n\nOpcao invalida."); } if (pr > 0) { printf("\n\nCor %c -Preco = “); printf(“R$ %5.2f\n\n",cor,pr); } return 0; } 158 Algoritmos e Lógica de Programação Utilizamos os comandos de repetição 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 seja alcançado. Comandos de Repetição 159 Algoritmos e Lógica de Programação 160 Algoritmos e Lógica de Programação Laço de Repetição 161 Algoritmos e Lógica de Programação programa { funcao inicio() { inteiro cont, idade cont = 0 enquanto (cont < N) { escreva("\nDigite a idade:") leia(idade) cont = cont + 1 } } } 162 Algoritmos e Lógica de Programação Exemplo: Faça um algoritmo que leia 10 números inteiros, e no final apresente o resultado da soma de todos para usuário. 163 Algoritmos e Lógica de Programação 164 Algoritmos e Lógica de Programação Exercícios: 1) Faça um algoritmo que leia 10 números inteiros, e no final apresente o último número lido para usuário. 165 Algoritmos e Lógica de Programação 166 Algoritmos e Lógica de Programação Exercícios: 2) Faça um algoritmo que leia 10 números inteiros, e no final apresente o maior número lido para usuário. 167 Algoritmos e Lógica de Programação 168 Algoritmos e Lógica de Programação Exercícios: 3) Faça um algoritmo que leia o salário de 25 alunos da sala, e no final apresente o salário médio para o usuário. 169 Algoritmos e Lógica de Programação programa { funcao inicio() { inteiro cont real sal, salM, tot tot = 0.0 cont = 0 salM = 0.0 enquanto (cont < 25) { escreva("\nsalario: ") leia(sal) tot = tot + sal cont = cont + 1 } salM = tot / 25 escreva("\nSalario Medio = ",salM,"\n") } } 170 Algoritmos e Lógica de Programação Exercícios: 4) Faça um algoritmo que leia o sexo de 40 alunos da sala, e no final apresente a quantidade de Mulheres e a quantidade Homens existentes. 171 Algoritmos e Lógica de Programação programa { funcao inicio() { inteiro cont,cm,cf caracter sx cont = 0 cm = 0 cf = 0 enquanto (cont < 3) { escreva("\nSexo(M-Masculino/F-Feminino): ") leia(sx) se (sx=='M' ou sx=='m') cm = cm + 1 se (sx=='F' ou sx=='f') cf = cf + 1 cont = cont + 1 } escreva("\n Mulheres = ",cf," Homens = ",cm) } } 172 Algoritmos e Lógica de Programação Exercícios: 5) Faça um algoritmo que leia um número inteiro e mostre na tela a tabuada do mesmo no formato a seguir: Exemplo: Suponha que N = 5 5 x 1 = 5 5 x 2 = 10 OBS: Usar Laço de Repetição 5 x 3 = 15 5 x 4 = 20 5 x 5 = 25 5 x 6 = 30 5 x 7 = 35 5 x 8 = 40 5 x 9 = 45 5 x 10= 50 173 Algoritmos e Lógica de Programação programa { funcao inicio() { inteiro cont,r,num cont=1 r=0 escreva("\nNúmero: ") leia(num) enquanto (cont<=10) { r = num * cont escreva("\n",num," X ",cont," = ",r) cont = cont + 1 } } } 174 Algoritmos e Lógica de Programação Aula Prática Sintaxe: while (condição) { // comandos a serem repetidos // comandos a serem repetidos } // comandos após o laço 'while' Comandos de Repetição: Laço Enquanto (While) 175 Algoritmos e Lógica de Programação LINGUAGEM C #include <stdio.h> int main(void) { int cont, idade; cont=0; while (cont<10) { printf("Idade:"); scanf("%i",&idade); cont = cont + 1; } return 0; } PORTUGOL programa { funcao inicio() { inteiro cont, idade cont = 0 enquanto (cont < N) { escreva("\nDigite a idade:") leia(idade) cont = cont + 1 } } } 176 Algoritmos e Lógica de Programação Exercícios: 1) Faça um programa C que leia 10 números inteiros, e no final apresente o último número lido para usuário. 177 Algoritmos e Lógica de Programação #include <stdio.h> int main(void) { int cont, num; cont=0; while (cont<10) { printf("Numero:"); scanf("%i",&num); cont = cont + 1; } printf("Ultimo Numero:%i",num); return 0; } 178 Algoritmos e Lógica de Programação Exercícios: 2) Faça um programa C que mostre na tela a sequência de números inteiros de 1 a 20. 179 Algoritmos e Lógica de Programação #include <stdio.h> int main(void) { int cont; cont=1; while (cont<=20) { printf("\n%i",cont); cont = cont + 1; } return 0; } 180 Algoritmos e Lógica de Programação Exercícios: 3) Faça um algoritmo que leia um número inteiro e mostre na tela a tabuada do mesmo no formato a seguir: Exemplo: Suponha que N = 5 5 x 1 = 5 5 x 2 = 10 OBS: Usar Laço de Repetição 5 x 3 = 15 5 x 4 = 20 5 x 5 = 25 5 x 6 = 30 5 x 7 = 35 5 x 8 = 40 5 x 9 = 45 5 x 10= 50 181 Algoritmos e Lógica de Programação #include <stdio.h>int main(void) { int cont,n,r; cont=1; printf("\n\nNumero: "); scanf("%i",&n); while (cont<=10) { r = n * cont; printf("\n%i X %i = %i",n,cont,r); cont = cont + 1; } return 0; } 182 Algoritmos e Lógica de Programação Exercícios: 4) O Prefeito da pacata cidade de Cabrobó do Fundo deseja atualizar o sistema eleitoral da cidade para a próxima eleição, adotando a votação eletrônica. Para a isso sua empresa ganhou a licitação para desenvolver o software da urna eletrônica, e você foi o Programador escolhido para criá- lo. No final do dia de votação, quando a urna for finalizada o programa de verá mostrar os totais de cada candidato, e também as quantidades de Votos em Brancos e Nulos. Candidatos: 1 – João Bafo de Onça 2 – Francisquim do Mercado 3 – Bode Zé 183 Algoritmos e Lógica de Programação #include <stdio.h> #include <stdlib.h> int main(void) { int cont,voto=0,cb=0,cf=0,cz=0,cw=0,cn=0; while (voto!=98765) { system("clear"); printf("\n\n1 - João Bafo de Onça\n2 - Francisquim do Mercado\n3 - Bode Zé\n4 - Banco\n5 - Nulo\n\nVoto: "); scanf("%i",&voto); switch(voto) { case 1: {cb++; break;} case 2: {cf++; break;} case 3: {cz++; break;} case 4: {cw++; break;} case 5: {cn++; break;} default: if (voto!=98765) printf("Opção invalida."); } } printf("\n\nJoão Bafo de Onça ==> %i\nFrancisquim do Mercado==> %i\nBode Zé ==> %i\nBranco ==> %i\nNulo ==> %i",cb,cf,cz,cw,cn); return 0;} 184 Algoritmos e Lógica de Programação Laço de repetição do tipo "para" O laço de repetição com variável de controle facilita a construção de algoritmos com número definido de repetições, pois possui um contador (variável de controle) embutido no comando com o incremento automático. Desta forma, um erro muito comum que se comete ao esquecer de fazer o incremento do contador é evitado. Toda vez que temos um problema cuja solução necessita de um número determinado de repetições utilizamos um contador. O contador deve ser inicializado antes do laço e deve ser incrementado dentro do laço. O laço com variável de controle possui três partes. A inicialização da variável contadora, a definição do valor final do contador e a definição do incremento. Estas três partes são escritas juntas, no início do laço. 185 Algoritmos e Lógica de Programação A sintaxe é respectivamente a palavra reservada para, abre parênteses, a declaração de uma variável de controle, ponto e virgula, a condição a ser testada, ponto e virgula, uma alteração na variável de controle a ser feita a cada iteração, fecha parênteses, e entre chaves as instruções do programa. para (i = 0; i < 8; i++) { // Código executado enquanto a condição // for satisfeita. } Inicializa a variável de controle. Condição que limita o nº de voltas Incremento da variável de controle 186 Algoritmos e Lógica de Programação Laço de repetição do tipo "para" Principais características: • A variável de controle é do tipo inteiro • Por padrão o incremento será uma unidade • É possível utilizar a estrutura com passo diferente de +1 para (contador = 1; contador <= 10; contador+=2) { resultado = numero * contador escreva (numero, " X ", contador, " = ", resultado , "\n") } • Os valores iniciais e finais são controlados pelo laço. 187 Algoritmos e Lógica de Programação Exemplo: Dado um número mostre a tabuada do mesmo na tela no seguinte formato: Supondo: N = 7 7 x 1 = 7 7 x 2 = 14 7 x 3 = 21 7 x 4 = 28 7 x 5 = 35 7 x 6 = 42 7 x 7 = 49 7 x 8 = 56 7 x 9 = 63 7 x 10 = 70 188 Algoritmos e Lógica de Programação programa { funcao inicio() { inteiro numero, resultado, contador escreva("Informe um número para ver sua tabuada: ") leia(numero) para (contador = 1; contador <= 10; contador++) { resultado = numero * contador escreva (numero, " X ", contador, " = ", resultado , "\n") } } } 189 Algoritmos e Lógica de Programação Exercícios: 1) Construa um algoritmo que calcule a nota média alcançada pelos alunos de uma sala. 190 Algoritmos e Lógica de Programação programa { funcao inicio() { inteiro i,alunos real nota, media, soma escreva("\nNumero de alunos:") leia(alunos) soma = 0.0 para( i=1; i<=alunos; i++ ) { escreva("\nnota",i,":") leia(nota) soma = soma + nota } media = soma / alunos escreva("\n\nMédia = ",media,"\n\n") } } 191 Algoritmos e Lógica de Programação 2) Construa um algoritmo que leia um número inteiro e em seguida mostre o resultado do número 2 elevado ao número lido. 4 Ex: N = 4 calcular 2 = 2 x 2 x 2 x 2 = 16 192 Algoritmos e Lógica de Programação programa { funcao inicio() { inteiro ex,r,cv escreva("\nExponenciação base 2") escreva("\n\nExpoente(maior 0):") leia(ex) r = 1 para(cv=1;cv<=ex;cv++) { r = r * 2 } se (ex >= 0) escreva("\n\nResultado = ",r,"\n") senao escreva("\n\nExpoente deve ser maior que zero.\n") } } 193 Algoritmos e Lógica de Programação 3) Faça um algoritmo que leia um par de números, em seguida mostre a sequência de números inteiros existentes entre o menor e o maior, e também a soma de todos eles. 194 Algoritmos e Lógica de Programação programa { funcao inicio() { inteiro me,ma,x,y,i,soma i = 0 soma = 0 escreva("Numero1: ") leia(x) escreva("numero2: ") leia(y) se (x>y) { ma = x me = y } senão { ma = y me = x } se (ma > me) { escreva("\n\nSequência: ") para (i = me; i <= ma-1; i++) { escreva(i,"-") soma = soma + i } escreva("",i) soma = soma + i } se (soma > 0) escreva("\n\nSoma = ",soma,"\n\n") } } 195 Algoritmos e Lógica de Programação 4) Construa um algoritmo que leia dois números inteiros, base e expoente. Em seguida mostre o resultado da base elevada ao expoente lido. 3 Ex: ba = 2 calcular 2 = 2 x 2 x 2 = 8 ex = 3 196 Algoritmos e Lógica de Programação programa { funcao inicio() { inteiro ex,b,r,cv escreva("\nExponenciação") escreva("\n\nExpoente(maior 0): ") leia(ex) escreva("\nBase: ") leia(b) r = 1 para(cv=1;cv<=ex;cv++) { r = r * b } se (ex >= 0) escreva("\nResultado = ",r,"\n") senão escreva("\nExpoente deve ser maior que zero.\n") } } 197 Algoritmos e Lógica de Programação AULA PRÁTICA Laço for() Assim como o while o for é utilizado para criar estruturas de repetição. Sintaxe: for ( inicializacao; condição; incremento ) { bloco_de_comando } 198 Algoritmos e Lógica de Programação Exemplo: int count; for (count = 1; count <= 10; count++ ) { printf(“%d “, count); } 199 Algoritmos e Lógica de Programação Exercício: 1) Faça um programa em C que mostre na tela a sequência de números inteiros de 1 a 50. 200 Algoritmos e Lógica de Programação #include<stdio.h> int main() { int num; printf("\n\t Imprimir os números de 1 até 50 : \n"); for(num=1;num<=50;num++) { printf(" %d\n",num); } return 0; } 201 Algoritmos e Lógica de Programação Exercício: 2) Faça um programa em C que Leia várias idades e calcule a média entre as idades e mostre na tela para o usuário. 202 Algoritmos e Lógica de Programação #include<stdio.h> int main() { int idades, soma_idades=0, qtde_idades, cont; float media; printf("Quantas idades serão utilizadas? "); scanf ("%d", &qtde_idades); for(cont=1;cont<=qtde_idades;cont++) { printf("Entre com a idade %d : ",cont); scanf("%d", &idades); soma_idades = soma_idades + idades; } media = soma_idades/qtde_idades; printf ("\n A media de idades é de : %5.1f", media); return 0; } 203 Algoritmos e Lógica de Programação Exercício: 3) Faça um programa em C utilizando a estrutura de repetição for, que receba 10 números e conte quantos deles estão no intervalo [10,20] e quantos deles estão fora do intervalo, escrevendo estas informações. Intervalo: [10,20] Números maiores ou iguais a10 e menores ou iguais a 20 204 Algoritmos e Lógica de Programação #include<stdio.h> int main() { int i,num,faz_parte,n_faz; faz_parte =0; n_faz = 0; printf(" \n Digite os numeros para verificar \n"); for(i=0;i<10;i++) { scanf("%d",&num); if(num>=10 && num<=20) { faz_parte= faz_parte + 1; } else n_faz= n_faz + 1; } printf(" \n %d numeros fazem partedo intervalo[10,20] \n",faz_parte); printf(" \n %d numeros nao fazem parte do intervalo[10,20]",n_faz); return 0; } 205 Algoritmos e Lógica de Programação Exercício: 4) Faça um programa em C que mostre na tela a sequência de números pares no intervalo de 0 a um número, maior que zero, fornecido pelo usuário. 206 Algoritmos e Lógica de Programação #include<stdio.h> int main() { int i,f; printf(" \n Mostra os nº pares \n\n"); printf("No intervalo de 0 a : "); scanf("%i",&f); printf("\n\n"); for(i=2;i<=f;i+=2) { printf("%i",i); if (i < (f-1)) printf("-"); } return 0; } 207 Algoritmos e Lógica de Programação 5) Construa um programa C que leia dois números inteiros, base e expoente. Em seguida mostre o resultado da base elevada ao expoente lido. 208 Algoritmos e Lógica de Programação #include<stdio.h> int main() { int i,b,e,r; printf(" \n Calcula Expoente de um Nº \n\n"); printf("Base: "); scanf("%i",&b); printf("\nExpoente: "); scanf("%i",&e); r = 1; for(i=1;i<=e;i++) { r = r * b; } printf("\nResultado de %i elevado a %i = %i",b,e,r); return 0; } 209 Algoritmos e Lógica de Programação Até o momento aprendemos a trabalhar com variáveis simples que somente armazenam um valor por vez. Assim corremos o risco de não conseguir resolver alguns tipos de problemas, por exemplo aqueles em que é necessário trabalhar com vários valores ao mesmo tempo. Estrutura de Dados Homogênea Variável Simples NUM 55 NUM = 44 NUM 44 210 Algoritmos e Lógica de Programação Estudaremos agora uma técnica de programação que permitirá trabalhar como o agrupamento de várias informações dentro de uma mesma variável, sendo sempre do mesmo tipo de dado, e por esta razão é chamado de Estrutura de Dados Homogênea. A utilização deste tipo de estrutura de dados recebe diversos nomes, como: variáveis indexadas, variáveis compostas, variáveis subscritas, arranjos, vetores, matrizes, tabelas em memória ou arrays (do inglês). São vários os nomes encontrados, nós iremos tratar por vetores. 211 Algoritmos e Lógica de Programação Matrizes de uma dimensão ou vetores Uma matriz de uma dimensão ou vetor será representada por seu nome e seu tamanho (dimensão) entre colchetes. Desta forma seria um vetor nota[6], sendo seu nome nota, possuindo um tamanho de 6. Isto significa que poderão ser armazenados em nota até 6 elementos. Perceba que na utilização de variáveis simples existe uma regra: uma variável somente pode conter um valor por vez. No caso do vetor, poderão armazenar mais de um valor por vez, pois são dimensionados exatamente para este fim.. 212 Algoritmos e Lógica de Programação Desta forma podemos manipular uma quantidade maior de informação com pouco trabalho de processamento. Devemos apenas considerar que com relação à manipulação dos elementos de um vetor, eles ocorrerão de forma individualizada, pois não é possível efetuar a manipulação de todos os elementos do conjunto ao mesmo tempo. 213 Algoritmos e Lógica de Programação NOTA 0 1 2 3 4 5 Dados de um Vetor Supondo o vetor: REAL: NOTA [6] Índice, indica a posição de cada elemento. Nome – comum para todos os elementos. Valor (conteúdo) de cada elemento do vetor. 214 Algoritmos e Lógica de Programação nota[0] = 4.0 nota[1] = 6.0 nota[2] = 5.0 nota[3] = 3.0 nota[4] = 7.5 nota[5] = 4.0 Atribuição de valores a um vetor NOTA 4,0 6,0 5,0 3,0 7,5 4,0 0 1 2 3 4 5 215 Algoritmos e Lógica de Programação NOTA 4,0 6,0 5,0 3,0 7,5 4,0 0 1 2 3 4 5 Cálculo com valores de um vetor NOTA[0] = NOTA[3] + NOTA[5] NOTA 7,0 6,0 5,0 3,0 7,5 4,0 0 1 2 3 4 5 216 Algoritmos e Lógica de Programação • Observe que o nome é um só. • O que muda é a informação indicada dentro dos colchetes. A esta informação dá-se o nome de índice, sendo este o endereço em que o elemento está armazenado. • É necessário que fique bem claro que o elemento é o conteúdo do vetor, neste caso os valores das notas. • No caso de nota[0] = 7.0, o número 0 é o índice; o endereço onde cujo elemento é 7.0 está armazenado. NOTA 7,0 6,0 5,0 3,0 7,5 4,0 0 1 2 3 4 5 217 Algoritmos e Lógica de Programação Exemplo: Construa um algoritmo que carregue um vetor inteiro com 5 números lidos. Em seguida mostre estes números na tela para o usuário. 218 Algoritmos e Lógica de Programação programa { funcao inicio() { inteiro v[5], i para(i=0;i<5;i++) { escreva("Numero",i,":") leia(v[i]) escreva("\n") } i=0 para(i=0;i<5;i++) { escreva(v[i]," - ") } } } 219 Algoritmos e Lógica de Programação Exercício 1: Construa um algoritmo que carregue um vetor inteiro com 10 números lidos. Em seguida mostre o último e o primeiro para o usuário. 220 Algoritmos e Lógica de Programação programa { funcao inicio() { inteiro vet[5], i para(i=0;i<5;i++) { escreva("Numero",i+1,":") leia(vet[i]) escreva("\n") } escreva(vet[0]," - ",vet[4]) } } 221 Algoritmos e Lógica de Programação Exercício 2: Construa um algoritmo que carregue um vetor inteiro com 5 números lidos. Em seguida mostre a soma de todos para o usuário. 222 Algoritmos e Lógica de Programação programa { funcao inicio() { inteiro vetor[5], j, soma soma = 0 para(j=0; j<5; j++) { escreva("Numero",j+1,":") leia(vetor[j]) escreva("\n") } j = 0 para(j=0; j<5; j++) { soma = soma + vetor[j] } escreva("\nSoma = ",soma,"\n") } } 223 Algoritmos e Lógica de Programação Exercício 3: Construa um algoritmo que carregue um vetor inteiro com 10 números lidos. Em seguida mostre para o usuário os mesmos em ordem inversa a de leitura. 224 Algoritmos e Lógica de Programação programa { funcao inicio() { inteiro vetor[5], j // Laço para carregar o vetor para(j=0;j<5;j++) { escreva("Numero",j+1,":") leia(vetor[j]) escreva("\n") } // Laço mostrar os conteúdos em ordem inversa a leitura para(j=4;j>=0;j--) { escreva(vetor[j],"-") } } } 225 Algoritmos e Lógica de Programação Exercício 4: Construa um algoritmo que carregue um vetor inteiro com 10 números lidos. Depois do vetor carregado, procure no mesmo o maior conteúdo e mostre para o usuário na tela. 226 Algoritmos e Lógica de Programação programa { funcao inicio() { inteiro i,vet[10],ma para(i=0;i<10;i++) { escreva("Numero",i+1,": ") leia(vet[i]) } ma = vet[0] para(i=0;i<10;i++) { se(vet[i]>ma) { ma = vet[i] } } escreva("\nMAIOR = ",ma,"\n") } } 227 Algoritmos e Lógica de Programação AULA PRÁTICA – Linguagem C VETORES Os vetores, também denominados de arrays, são um conjunto de variáveis do mesmo tipo que facilitam a manipulação dos dados, pois permitem o acesso por meio de índices. Ao declarar um vetor, é preciso informar o seu tamanho e o seu tipo, por exemplo, um vetor do tipo int com tamanho 10, indica que este vetor terá uma capacidade de armazenar até 10 valores do tipo inteiro. Se o vetor é do tipo float, então todas as suas posições são do tipo float, assim, os vetores são estruturas homogêneas. 228 Algoritmos e Lógica de Programação tipoDado nomeVetor[tamanho]; Exemplos: Int idade[10]; - Vetor idade do tipo int e tamanho 10. float notas[5]; - Vetor notas do tipo float com tamanho igual a 5 double preco[20]; - Vetor preco do tipo double com tamanho igual a 20 Veja a seguir a sintaxe para a declaração de um vetor: 229 Algoritmos e Lógica de Programação Construa um programa C que carregue um vetor inteiro com 5 números lidos. Em seguida mostre estes números na tela para o usuário. Exercício 1: 230 Algoritmos e Lógica de Programação #include <stdio.h> int main(void) { int j, num[5]; for(j=0;j<5;j++) { printf("Número%i:",j+1); scanf("%i",&num[j]); } for(j=0;j<5;j++) { printf("\nNúmero%i:%i",j+1,num[j]); } return 0; } 231 Algoritmos e Lógica de Programação Construa um programa C que carregue um vetor inteiro com 10 números lidos. Em seguida mostre o último e o primeiro para o usuário. Exercício 2: 232 Algoritmos e Lógica de Programação #include <stdio.h> int main(void) { int j, num[10]; for(j=0;j<10;j++) // laço para carregar o vetor { printf("Número%i:",j+1);scanf("%i",&num[j]); } printf("\nPrimeiro: %i\nUltimo : %i",num[0],num[9]); return 0; } 233 Algoritmos e Lógica de Programação Construa um programa C que carregue um vetor inteiro com 7 números lidos. Em seguida mostre os números na ordem inversa a de leitura para o usuário. Exercício 3: 234 Algoritmos e Lógica de Programação #include <stdio.h> int main(void) { int j, num[7]; for(j=0;j<7;j++) // laço para carregar o vetor { printf("Número%i:",j+1); scanf("%i",&num[j]); } printf("\nORDEM INVERSA:\n"); for(j=6;j>=0;j--) // laço para mostrar nº ordem inversa { printf("%i-",num[j]); } return 0; } 235 Algoritmos e Lógica de Programação Construa um programa C que carregue um vetor inteiro com 10 números lidos. Depois do vetor carregado procure no mesmo o maior número, e mostre para o usuário. Exercício 4: 236 Algoritmos e Lógica de Programação #include <stdio.h> int main(void) { int j, num[10],ma; for(j=0;j<10;j++) // laço para carregar o vetor { printf("Número%i:",j+1); scanf("%i",&num[j]); } ma = num[0]; for(j=1;j<10;j++) // laço para procurar o maior nº { if(num[j]>ma) { ma = num[j]; } } printf("\nMAIOR NÚMERO:%i\n",ma); return 0; } 237 Algoritmos e Lógica de Programação Construa um programa C que carregue um vetor inteiro com 12 números lidos. Depois do vetor carregado percorra o mesmo acumulando a soma total dos números e mostre para o usuário. Exercício 5: 238 Algoritmos e Lógica de Programação #include <stdio.h> int main(void) { int j, num[12],soma; for(j=0;j<12;j++) // laço para carregar o vetor { printf("Número%i:",j+1); scanf("%i",&num[j]); } soma = 0; for(j=0;j<12;j++) // laço para procurar o maior nº { soma = soma + num[j]; } printf("\nSOMA TOTAL:%i\n",soma); return 0; }
Compartilhar