Baixe o app para aproveitar ainda mais
Prévia do material em texto
INF01202INF01202INF01202INF01202 Algoritmos e ProgramaçãoAlgoritmos e ProgramaçãoAlgoritmos e ProgramaçãoAlgoritmos e Programação Prof. Anderson Maciel amaciel@inf.ufrgs.br Aula 2 – Algoritmos sequenciais Elaboração de um ProgramaElaboração de um ProgramaElaboração de um ProgramaElaboração de um Programa Problema Análise AlgoritmoPrograma Algoritmo 2 Operações sobreDados de Saídas P bl os dadosEntrada Problema é uma relação entre entradas para saídas aceitáveis. Exemplo: ENTRADA j t d l i t iENTRADA: um conjunto de valores inteiros, todos diferentes entre si SAÍDA: o menor dos valores de entrada U Al ritm l bl SAÍDA: o menor dos valores de entrada Um Algoritmo resolve um problema se produz uma saída aceitável para QUALQUER entrada. 3 Otimização: quando a saída é a melhor solução Programas Programas sequenciaissequenciaisProgramas Programas sequenciaissequenciais • conceito de programa• conceito de programa t t d l it• estrutura de um algoritmo l it i l• algoritmo sequencial • estrutura de programa sequencial • programa C sequencial 4 E1 E4E3E2 E5 E6 E9E8E7 E10 E11 E14E13E12 E15 E16 E19E18E17 E20 Escaninhos Asd45ert6 876 gjgpoij 876trrtyrfg mn, ffgh45 Qweqweq wewerwr tyutu6 hjhk567 x x x x x x x x x x x x x x 5 123456 E1 E4E3E2 E5 E6 E9E8E7 E10 E11 E14E13E12 E15 E16 E19E18E17 E20E16 E19E18E17 E20 Escaninhos 1 Pegue uma folha e coloque no escaninho E11. Pegue uma folha e coloque no escaninho E1 2. Pegue a próxima folha e coloque no escaninho E2 3. Faça a soma dos valores das folhas nos escaninhos3. Faça a soma dos valores das folhas nos escaninhos E1 e E2 e coloque o resultado no escaninho E3 4. Escreva o valor contido no escaninho E3 5. Terminar 6 Asd45ert6 876 gjgpoij 876trrtyrfg mn, ffgh45 Qweqweq wewerwr tyutu6 hjhk567 x x x x x x x x x x x x x x 123456 ALGORITMOALGORITMOALGORITMOALGORITMO um conjunto finito de ações que, quando executadas na ordem estabelecida, atingem um objetivo determinado, em um tempo finito. Um algoritmo é construído para resolver UM ú i bl ( ã d l )único problema (programação modular). 1. Pegue uma folha e coloque no escaninho E1 2. Pegue a próxima folha e coloque no escaninho E2 3. Faça a soma dos valores das folhas nos escaninhos E1 e E2 e coloque o resultado no escaninho E3 4. Escreva o valor contido no escaninho E3 7 5. Terminar Partes principais do computadorPartes principais do computador M ó i Memória Memória Memória secundária Unidade Central UnidadeUnidade Unidade Central de Processamento Unidade de Saída Unidade de Entrada Processamento SaídaEntrada Unidade Aritmética e 8 Aritmética e Lógica E1 E4E3E2 E5 E6 E9E8E7 E10 Memória E6 E9E8E7 E10 E11 E14E13E12 E15 E16 E19E18E17 E20E16 E19E18E17 E20 Escaninhos Unidade d Unidade l d de Saída Unidade de central de processamento entrada 876 gjgpoij 876trrtyrfg mn, ffgh45 wewerwr tyutu6 hjhk567 x x x x x x x x x x x x xUnidade aritmética Unidade de 9 Asd45ert6Qweqweq x 123456e lógica entrada E1 E4E3E2PseudoPseudo--linguagemlinguagem E6 E9E8E7 E11 E14E13E121. Pegue uma folha e coloque no escaninho E1 g gg g E16 E19E18E17 Escaninhos 2. Pegue a próxima folha e coloque no escaninho E2 3. Faça a soma dos valores das folhas nos escaninhos E1 e E2 e coloque o resultado no escaninho E3 4. Escreva o valor contido no escaninho E3 5. Terminar { 1. Ler E1 2 L E2 Algoritmo {... scanf ("%d",&E1); scanf ("%d" &E2);2. Ler E2 3. E3 ← E1 + E2 4 Escrever E3 scanf ( %d ,&E2); E3 = E1 + E2; printf(“%d”, E3); 10 4. Escrever E3 5. Terminar. printf( %d , E3); }C 1. início Variável Variável -- DadosDados 2. ler val1 3. ler val2 4 soma ← val1 + Valor informado: 4. soma ← val1 + val2 5. escrever soma 6 fi Valor informado 5 6. fim. Memória: Escaninhos Dados: NOME identificador E1 E4E3E2 E5 E6 E9E8E7 E10 val1 somaval2 Associa nome a espaço de 5 E11 E14E13E12 E15 E16 E19E18E17 E20 espaço de memória 1. início 2 l l1 Variável Variável -- DadosDados 2. ler val1 3. ler val2 4. soma ← val1 + Valor informado: val2 5. escrever soma 6 fim 13 6. fim. Memória: Escaninhos D d s: NOME E1 E4E3E2 E5 E6 E9E8E7 E10 Dados: NOME identificador 5 13 E11 E14E13E12 E15 E16 E19E18E17 E20 Associa nome a espaço de espaço de memória 1. início 2 l l1 Variável Variável -- DadosDados 2. ler val1 3. ler val2 4. soma ← val1 + val2 5. escrever soma 6 fim6. fim. Valor resultante: 18 Escaninhos D d s: NOME Memória: Escaninhos Dados: NOME identificador val1 E4somaval2 E55 13 18 Memória: Associa nome a espaço de vE6 E9E8E7 E10 E11 E14E13E12 E15 espaço de memóriaE16 E19E18E17 E20 1. início 2 l l1 Variável Variável -- DadosDados 2. ler val1 3. ler val2 4. soma ← val1 + val2 5. escrever soma 6. fim. Valor mostrado: 18 Memória: Escaninhos D d s: NOME E1 E4E3E2 E5 Memória: Escaninhos val1 E4somaval2 E5 Dados: NOME identificador5 13 18 E6 E9E8E7 E10 E11 E14E13E12 E15 vE6 E9E8E7 E10 E11 E14E13E12 E15 Associa nome a espaço de E16 E19E18E17 E20E16 E19E18E17 E20 espaço de memória Variáveis e ConstantesVariáveis e Constantes N1 + N2 + (N3 X 2)N1 + N2 + (N3 X 2) 4 Constante: valor não se modifica Variável: conteúdo se modifica não se mod f ca Variáveis: Tipos de dadosVariáveis: Tipos de dados • Componente da linguagem de programação, determina o tipo de conteúdo e tamanho de área de memória pp tipo de conteúdo e tamanho de área de memória reservada para um dado. • No C, os tipos básicos de dados são: Tipo Tamanho Valores Válidos h 1 b d ód No C, os tipos básicos de dados são char 1 byte Caracteres do Código ASCII int 2 bytes * -32768 a +32767 float 4 bytes -3.4e38 a +3.4e38 double 8 bytes -1.7e308 a +1.7e308 * No C: ocupa 4 bytes. AlgoritmoAlgoritmoAlgoritmoAlgoritmo Algoritmo Soma2 { Calcula e informa a soma de 2 valores lidos do teclado }{ Calcula e informa a soma de 2 valores lidos do teclado } entradas: dois valores saídas: a soma dos 2 valores lidossaídas: a soma dos 2 valores lidos 1. Ler o primeiro valor 2. Ler o segundo valorg 3. Efetuar a soma 4. Informar a soma 5. Terminar. 17 Algoritmo Algoritmo -- Algoritmo Soma2 { Calcula e informa a soma de 2 valores lidos do teclado } refinamentosrefinamentos } entradas: dois valores saídas: a soma dos 2 valores lidos 1. Ler o primeiro valor1. Ler o primeiro valor 2. Ler o segundo valor 3. Efetuar a soma 4 Informar a soma Algoritmo Soma2() 4. Informar a soma 5. Terminar. { Calcula e informa a soma de 2 valores lidos do teclado } entradas: E1, E2 (valores lidos ) {especifica os valores} íd E3 ( )saídas: E3 (soma ) 1. Ler E1 2 Ler E22. Ler E2 3. E3 ← E1 + E2 4 Escrever E3 18 4. Escrever E3 5. Terminar. Variáveis Variáveis -- Algoritmo Soma2()Variáveis Variáveis -- nomes adequadosnomes adequados { Calcula e informa a soma de 2 valores entradas: E1, E2 (valores lidos ) saídas: E3 (soma )nomes adequadosnomes adequados 1. Ler E1 2. Ler E2 3. E3 ← E1 + E2 Algoritmo Soma2() { C l l i f d 2 l lid d t l d } 4. Escrever E3 5. Terminar. { Calcula e informa a soma de 2 valores lidos do teclado } entradas: Valor1, Valor2 {atribui nomes significativos} saídas: Somasaídas: Soma 1. Ler Valor1 2 Ler Valor22. Ler Valor2 3. Soma ← Valor1 + Valor2 4 Escrever Soma 19 4. Escrever Soma 5. Terminar. /*calcula a soma de 2 valores inteiros lidos Algoritmo Soma2{ Calcula e informa a som valores lidos do teclado CodificaçãoCodificação / calcula a soma de 2 valores inteiros lidos no teclado*/ #include <stdio.h> // biblioteca com operações de I/O valores lidos do teclado entradas: val1, val2 saídas: soma 1. início 2 ler val1p ç int main() { 2. ler val1 3. ler val2 4. soma ← val1 + val2 5. escrever soma 6 fim{ int val1, val2; // declaração tipo das variáveis informadas int soma; // declaração tipo da variável resultante 6. fim. printf("Valor 1: "); // mensagem impressa na tela scanf("%d", &val1); // leitura da informação digitada printf("Valor 2: "); scanf("%d", &val2); soma al1 + al2 // arma ena res ltado em somasoma = val1 + val2; // armazena resultado em soma printf("Resultado da soma: %d\n", soma); // mostra return 0; // encerra o programa e retorna zero ao Sist Opreturn 0; // encerra o programa e retorna zero ao Sist Op } Mostrar exemplo no Code::Blocks Æ Normas Normas importantesimportantes para algoritmospara algoritmosNormas Normas importantesimportantes para algoritmospara algoritmos • identificar claramente a FINALIDADE do algoritmo, e suas ENTRADAS e SAÍDASg • a execução do algoritmo deve sempre, em g p algum momento, terminar • o fluxo de execução deve seguir os passos sequencialmente, sem NUNCA voltar atrás ou saltar passos, através de algum comando do tipo ´Vá para passo X´ - PROGRAMAÇÃO 21 p p p ESTRUTURADA Problema Dado o preço de um produto em reais, converter este valor para o equivalente em dólares. O p q programa deverá ler do teclado o preço do produto e a taxa de conversão para o dólar. Algoritmo ConversãoParaDolar p p { Calcula e conversão de um valor de Real para Dolar } entradas: Preço, Taxa de conversão saídas: Preço em Dolar 1. Obtém valor do preço O é2. Obtém valor da taxa de conversão 3. Calcula o preço em dolar 4 I f d l 22 4. Informa o preço em dolar 5. Terminar. Algoritmo ConversãoParaDolar { Calcula e conversão de um valor de Real para Dolar } entradas: Preço, Taxa de conversão saídas: Preço em Dolar 1. Obtém valor do preço 2. Obtém valor da taxa de conversão 3. Calcula o preço em dolar 4. Informa o preço em dolar 5. Terminar. Algoritmo ConversãoParaDolar()g () { Calcula e conversão de um valor de Real para Dolar } entradas: Preço, Taxa saídas: PreçoEmDolar 1. Ler Preço 2. Ler Taxa 3. PreçoEmDolar← Preço ∗ Taxa 4 E P E D l 23 4. Escrever PreçoEmDolar 5. Terminar. Conversão ao Dolar Conversão ao Dolar Algoritmo ConversãoParaDo { Calcula e conversão de um val /* Calcula e conversão de Real para Dolar */ #include <stdio.h> // biblioteca com operações de I/O { Real para Dolar } entradas: Preço, Taxa saídas: PreçoEmDolar 1. Ler Preço int main() { 1. Ler Preço 2. Ler Taxa 3. PreçoEmDolar← Preço ∗ Taxa 4. Escrever PreçoEmDolar 5 T ifloat Preco, Taxa; // Valores em real declarados float float PrecoEmDolar; // tipo da variável resultante 5. Terminar. printf("Valor em real: "); // mensagem impressa na tela scanf("%f", &Preco); // leitura da informação digitada printf(“Taxa conversao: ");printf(“Taxa conversao: "); scanf("%f", &Taxa); PrecoEmDolar = Preco *Taxa;PrecoEmDolar Preco Taxa; printf(“Preco em dolar: %f\n", PrecoEmDolar); // mostra return 0; // encerra o programa e retorna zero ao Sist Op } Mostrar exemplo no Code::Blocks Æ Problema C l l i ã btid d dCalcular a comissão obtida por um vendedor em uma venda efetuada. Escrever um algoritmo que lê o número de um vendedor, o valor da venda efetuada e o percentual sobre a venda. Fornecer número do vendedor e sua comissão. Algoritmo Comissão()g () { Calcula a comissão de um vendedor } entradas: NumVendedor, ValorVenda, Percentual saídas: Comissao 1. Ler NumVendedor, ValorVenda 2. Ler Percentual 3. Comissão ← ValorVenda ∗ Percentual ∗ 0,01 25 4. Escrever NumVendedor, Comissão 5. Terminar. Exercícios propostos Fazer algoritmo e programa C para g p g p resolver os seguintes problemas: 1. Fornecer a soma e o produto de três valores lidos do tecladovalores lidos do teclado l l 2. Calcular o preço a ser pago em uma loja, sendo informado o preço do produto j , p ç p comprado e o número de unidades adquiridas (1 só produto - várias unidades 26 adquiridas (1 só produto várias unidades deste produto)
Compartilhar