Baixe o app para aproveitar ainda mais
Prévia do material em texto
Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação Universidade Universidade de de BrasíliaBrasília Computação BásicaComputação Básica COMPUTAÇÃO BÁSICA Algoritmos Computacionais e Estrutura Seqüencial Prof. Bruno Macchiavello (bruno@cic.unb.br)Prof. Bruno Macchiavello (bruno@cic.unb.br) Universidade de Brasília – UnB Instituto de Ciências Exatas – IE Departamento de Ciência da Computação – CIC Prof. Bruno Macchiavello 1 Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação Universidade Universidade de de BrasíliaBrasília Computação BásicaComputação Básica Algoritmos Computacionais • Um algoritmo computacional é uma seqüência de instruções que sejam capaz de ser compreendidas por um computador para manipular certos dados. – Instruções: comandos que determinam a forma pela qual – Instruções: comandos que determinam a forma pela qual os dados devem ser tratados. Comandos que indicam ou computador realizar uma determinada tarefa básica. – Dados: elementos recolhidos/fornecidos por diversos meios e que serão processadas pelo computador através das instruções. Prof. Bruno Macchiavello 2 Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação Universidade Universidade de de BrasíliaBrasília Computação BásicaComputação Básica Dados em Algoritmos Computacionais • Os dados de um algoritmo computacionais podem ser de diferentes tipos, a classificação deles é a seguinte: – Dados Numéricos – Dados Literais – Dados Lógicos Prof. Bruno Macchiavello 3 Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação Universidade Universidade de de BrasíliaBrasília Computação BásicaComputação Básica Tipos de Dados – Dados Numéricos • Numéricos inteiros – Os números inteiros são aqueles que não possuem componentes decimais ou fracionários, podendo ser positivos ou negativos Prof. Bruno Macchiavello 4 36 número inteiro positivo; 0 número inteiro; -18 número inteiro negativo. Exemplos de números inteiros: Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação Universidade Universidade de de BrasíliaBrasília Computação BásicaComputação Básica Tipos de Dados – Dados Numéricos • Numéricos reais – Os dados de tipo real são aqueles que podem possuir componentes decimais ou fracionários, e podem também ser positivos ou negativos. Prof. Bruno Macchiavello 5 36.01 número real positivo com duas casas decimais; 166. número real positivo com zero (nenhuma) casa decimal; -18.8 número real negativo com uma casa decimal; 0.0 número real com uma casa decimal; 0. Número real com zero (nenhuma) casa decimal. Exemplos de números reais: Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação Universidade Universidade de de BrasíliaBrasília Computação BásicaComputação Básica Tipos de Dados – Dados Literais • Dados Literais: – Uma seqüência de caracteres contendo letras, dígitos e/ou símbolos especiais. – Também chamados de alfanumérico, cadeia de caracteres ou, ainda, String. – Usualmente são representados nos algoritmos pela coleção de– Usualmente são representados nos algoritmos pela coleção de caracteres delimitada em seu início e fim com aspas (“ ”). Prof. Bruno Macchiavello 6 “QUEM?” Literal de comprimento 5; “ ” Literal de comprimento 1; “cOmO!?#” Literal de comprimento 7; “AbcDEFghi” Literal de comprimento 9; “4+5-1=” Literal de comprimento 6; “1” Literal de comprimento 1; “ANA MARIA” Literal de comprimento 9; Exemplos de dados literais: É comum em algumas linguagens a diferenciação entre um caracter (‘A’) e um conjunto de caracteres (“Olá Mundo”). Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação Universidade Universidade de de BrasíliaBrasília Computação BásicaComputação Básica Tipos de Dados – Dados Lógicos • Dados Lógicos – São caracterizados como tipos lógicos, os dados com valores verdadeiro e falso, sendo que este tipo de dados poderá representar apenas um dos valores. – É chamado por alguns de tipo booleano (matemático George Boole). – Se definimos que Verdadeiro = 1, e Falso = 0, então um dado booleano = 1 BIT. Prof. Bruno Macchiavello 7 Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação Universidade Universidade de de BrasíliaBrasília Computação BásicaComputação Básica Tipos de Dados - Binários • Numéricos Binários – Normalmente as linguagens de programação de alto nível não proporcionam a possibilidade de criar um dado numérico do tipo binário de mais de um BIT. – Dado binário de um BIT é conhecido como dado booleano. Verificar em casa: Como trabalhar com números binários de mais de um bit? Dica: Verificar a função de Deslocamento (shift) Prof. Bruno Macchiavello 8 Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação Universidade Universidade de de BrasíliaBrasília Computação BásicaComputação Básica Conceitos Básicos de Algoritmos Computacionais • Os conceitos básicos de um algoritmo computacional são os seguintes: – Constante – Variáveis – Palavras Reservadas – Expressões Aritméticas – Expressões Lógicas – Comando de Atribuição e Entrada/Saída Prof. Bruno Macchiavello 9 Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação Universidade Universidade de de BrasíliaBrasília Computação BásicaComputação Básica Constantes • Entendemos que um dado é uma constante quando não sofre nenhuma variação no decorrer do tempo. • Em relação à informática, é um espaço em memória identificado por um nome conhecido comoidentificado por um nome conhecido como identificador que pode conter dados de algum dos tipos anteriormente mencionados. • Os dados armazenados são o conteúdo, o conteúdo não varia durante a execução de um programa, ou seja, o valor é o mesmo do inicio ao fim da execução do algoritmo. Prof. Bruno Macchiavello 10 Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação Universidade Universidade de de BrasíliaBrasília Computação BásicaComputação Básica Constantes 0x00000000 0x00000001 0x00000002 0x00000003 0x00000004 0x00000005 10110....011 10110....011 10110....011 10110....011 10110....011 10110....011 Prof. Bruno Macchiavello 11 BLOCO DE MEMORIA • • • 0x00000005 0x00000006 0x00000007 0x00000009 0xFFFFFFFF 10110....011 10110....011 10110....011 10110....011 10110....011 • • • Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação Universidade Universidade de de BrasíliaBrasília Computação BásicaComputação Básica Constantes 0x00000000 0x00000001 0x00000002 0x00000003 0x00000004 0x00000005 10110011 10110011 10110011 10110011 10110011 10110011 Conteúdo Prof. Bruno Macchiavello 12 BLOCO DE MEMORIA • • • 0x00000005 0x00000006 0x00000007 0x00000009 0xFFFFFFFF 10110011 10110011 10110011 10110011 10110011 • • • Endereços Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação Universidade Universidade de de BrasíliaBrasília Computação BásicaComputação Básica Constantes Identificador: Nome da constante, é uma palavra que ao compilar o programa é vinculado a um determinado endereço de memória. O identificador NÃO pode mudar durante a execução de uma programa. Conteúdo: Bits que representam um dado de um determinado tipo. Esse conjunto de bits NÃOmuda durante a execução do programa. Prof. Bruno Macchiavello 13 identificador Conteúdo não modificável Tipo: É o tipo de dados que o conteúdo da variável representa. O tipo de uma constante NÃOmuda durante a execução de um programa. CONSTANTE Tipo Departamentode Ciência da ComputaçãoDepartamento de Ciência da Computação Universidade Universidade de de BrasíliaBrasília Computação BásicaComputação Básica Variável • Um dado é classificado como variável quando tem a possibilidade de ser alterado em algum instante no decorrer do tempo. • Em relação à informática, variável é um espaço na• Em relação à informática, variável é um espaço na memória, identificado por um nome conhecido como identificador, que pode conter dados de algum determinado tipo. • Os dados armazenados em uma variável são o seu conteúdo. O conteúdo pode variar durante a execução do programa à qual ele pertença. Prof. Bruno Macchiavello 14 Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação Universidade Universidade de de BrasíliaBrasília Computação BásicaComputação Básica Variável Identificador: Nome da variável, é uma palavra que ao compilar o programa é vinculado a um determinado endereço de memória. O identificador NÃO pode mudar durante a execução de uma programa. Conteúdo: Bits que representam um dado de um determinado tipo. Esse conjunto de bits PODE MIUDAR em qualquer instante de tempo durante a execução do programa. Prof. Bruno Macchiavello 15 identificador Conteúdo modificável Tipo: É o tipo de dados que o conteúdo da variável representa. O tipo de uma variável NÂOmuda durante a execução de um programa. VARIÁVEL Tipo Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação Universidade Universidade de de BrasíliaBrasília Computação BásicaComputação Básica Variável • ESCOPO – O escopo de uma variável de programa é a faixa de instruções na qual a variável é visível – Uma variável é visível em uma instrução se puder ser– Uma variável é visível em uma instrução se puder ser referenciada nesta instrução – Ex: O escopo de uma variável pode ser uma determinada função dentro de um programa (variável local), ou pode ser vista em todo o programa (variável local). Prof. Bruno Macchiavello 16 Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação Universidade Universidade de de BrasíliaBrasília Computação BásicaComputação Básica Escopo Prof. Bruno Macchiavello 17 Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação Universidade Universidade de de BrasíliaBrasília Computação BásicaComputação Básica Identificador • Identificadores são conjuntos de caracteres, regido por determinadas leis, que representam constantes, variáveis, tipos, procedimentos, unidades, programas e campos de um registro (estes itens serão analisados mais adiante no curso). • Regras: – O primeiro caractere deve ser uma letra; – No conteúdo do identificador não pode conter caracteres especiais – No conteúdo do identificador não pode conter caracteres especiais (!@#$%&*/-+<>?), ou seja no identificador só podemos ter, após o primeiro caráter, letras, números e sublinhada ( _ ); – Nomes de variáveis escritas com letras maiúsculas serão diferentes de letras minúsculas (case sensitive); – Nenhuma palavra reservada à ferramenta (linguagem de programação) poderá ser usada como nome de uma variável; – Procure dar nomes significativos para a variável (mnemônicos), mas não muito longos. – Não podem ter identificadores com o mesmo nome para dois objetos diferentes. Prof. Bruno Macchiavello 18 Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação Universidade Universidade de de BrasíliaBrasília Computação BásicaComputação Básica Identificador • Existe uma tamanho máximo para um identificador? – Depende da Linguagem da Programação: • FORTRAN I (Máx. 6) • COBOL (Máx. 30) • C/C ++ (sem limite, depende do compilador) • Java (sem limite) Prof. Bruno Macchiavello 19 Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação Universidade Universidade de de BrasíliaBrasília Computação BásicaComputação Básica Palavras Reservadas • Palavras reservadas, são identificadores que já foram usados pelo programa, ou seja se caso utilizarmos uma destas palavras iremos infringir a regra de que não se pode haver identificadores repetidos.repetidos. • Em ANSI C algumas das palavras reservadas são: – auto, double, int, struct, break, else, long, switch, case, enum, register, typedef, char, extern, return, union, const, float, short, unsigned, continue, for, signed, void, default, goto, sizeof, volatile, do, if, static, while. Prof. Bruno Macchiavello 20 Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação Universidade Universidade de de BrasíliaBrasília Computação BásicaComputação Básica Exemplos de Nomes de Identificadores • Identificadores validos: – Alpha, X, BJ153, K7, Notas, Media, ABC, INPS, FGTS, i, j, nome_1. • Identificadores inválidos: – 5X, E(13), A:B, X-Y, Nota/2, AWQ*, P&AA, nome 2. Prof. Bruno Macchiavello 21 Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação Universidade Universidade de de BrasíliaBrasília Computação BásicaComputação Básica Nomes Mnemônicos • É sempre melhor usar nomes significativos (mnemônicos) para a variáveis e constantes, mas não muito longos. • Exemplo: para identificar 3 provas, identificadores significativos são: • “p1,p2,p3”• “p1,p2,p3” • “prova1, prova2, prova3” • “prova_1, prova_2, prova_3”. • Não são significativos: • “e1,p2,t3” • “a,b,c”. • Significativos, porém longos: • “variavel_da_prova_um”,”variavel_com_o_valor_da_prova2”. Prof. Bruno Macchiavello 22 Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação Universidade Universidade de de BrasíliaBrasília Computação BásicaComputação Básica Declaração de Variáveis • Declaração de Variáveis – São declaradas no início (alocação de memória) • Podem ser dos tipos: inteiro, real, literal, ou lógico • Permite que o algoritmo saiba os tipos de operações que cada variável pode realizar Prof. Bruno Macchiavello 23 identificador DECLARAÇÃO DE VARIÁVEL Tipo: Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação Universidade Universidade de de BrasíliaBrasília Computação BásicaComputação Básica Ao serem fornecidos um valor a ser pago e uma taxa para multa, pois o pagamento está sendo feito após o vencimento, calcule o Exemplo 2: Dada uma lista de compras com o código, quantidade, e preço de oito produtos, crie um algoritmo que escreva o valor total da compra. codigo : literal (ou string) quantidade : inteiro preço, valortotal : real Exemplo 1: Prof. Bruno Macchiavello 24 pois o pagamento está sendo feito após o vencimento, calcule o valor da multa e o valor total a ser pago. vlrconta, taxamulta, vlrmulta, vlrtotal : real quilômetros : real metros : inteiro É solicitada a um motorista recém chegado de uma viagem a quantidade de quilômetros por ele percorrida. O motorista informa o solicitado e você deverá informar a ele a quantos metros se refere à quantidade de quilômetros. Exemplo 3: Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação Universidade Universidade de de BrasíliaBrasília Computação BásicaComputação Básica Expressões Aritméticas • São aquelas cujo resultado da avaliação é do tipo numérico, seja ele inteiro ou real. Somente o uso de operadores aritméticos e variáveis numéricas (inteiras ou reais) é permitido em expressões deste tipo. Operador Operação Prioridade Exemplo Prof. Bruno Macchiavello 25 Operador Operação Prioridade Exemplo - Inversão de Sinal 1 -(-1) = 1 + Manutenção de Sinal 1 +1 = 1 ^ Exponenciação 2 9^2 = 81 * Multiplicação 3 6 * 7 = 42 / Divisão 3 8 / 2 = 4 + Adição 4 1 + 2 = 3 - Subtração 4 4 - 5 = -1 Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação UniversidadeUniversidade de de BrasíliaBrasília Computação BásicaComputação Básica Expressões Aritméticas • Prioridade: • 1 + 4 * 3 / 6 - 3 ^ 2 • 1 + 4 * 3 / 6 - 9 • 1 + 12 / 6 - 9 • 1 + 2 - 9• 1 + 2 - 9 • -6 • Prioridade: • 1 + (4 * 3 / (6 – 3)) ^ 2 • 1 + (4 * 3 / 3) ^ 2 • 1 + (4) ^ 2 • 1 + 16 • 17 Prof. Bruno Macchiavello 26 Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação Universidade Universidade de de BrasíliaBrasília Computação BásicaComputação Básica Expressões Lógicas • São aquelas cujo resultado da avaliação é um valor lógico (VERDADEIRO ou FALSO) CONJUNÇÃO DISJUNÇÃO NEGAÇÃO x y x E y x OU y NÃO(x) V V V V F Prof. Bruno Macchiavello 27 V F F V F F V F V V F F F F V Operador Operação Prioridade Linguagem C OU Disjunção 3 || E Conjunção 2 && NÃO Negação 1 ! Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação Universidade Universidade de de BrasíliaBrasília Computação BásicaComputação Básica Expressões Lógicas • Operadores relacionais: – Operadores utilizados para realizar comparações. – Comparações só podem ser feitas entre variáveis do mesmo tipo. – O resultado de uma comparação é sempre um valor lógico. Operador Comparação Linguagem C Prof. Bruno Macchiavello 28 Operador Comparação Linguagem C = Igual == ≠ Diferente != < Menor < <= Menor ou Igual <= > Maior > >= Maior ou Igual >= Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação Universidade Universidade de de BrasíliaBrasília Computação BásicaComputação Básica Expressões Lógicas • Exemplos (V = Verdadeiro, F = Falso): Expressão Resultado 2 * 4 = 24 / 3 V 15 mod 4 < 19 mod 6 F (2 < 5) e (15 / 3 = 5) V • Notar que um número booleano é um bit onde V=1 e F=0. Prof. Bruno Macchiavello 29 (2 < 5) ou (15 / 3 = 5) V (3 >= 2) ou (8 < 7) V (3 >= 2) e (8 < 7) F (V) e (10 + 2 = 4 * 3) V (0) e (5 = 5 + 0) F (F) ou (1) V Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação Universidade Universidade de de BrasíliaBrasília Computação BásicaComputação Básica Comando de Atribuição • Um comando de atribuição permite fornecer um determinado valor a uma variável • O tipo do dado deve ser compatível com o tipo da variável. • Exemplos: • nota ← 10 • nome← “Joao” Prof. Bruno Macchiavello 30 identificador valor ou expressão← Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação Universidade Universidade de de BrasíliaBrasília Computação BásicaComputação Básica Comandos de Entrada e Saída • Comandos que permitem a interação do usuário com o programa. (Entrada por teclado e saída por monitor de vídeo.) • Comando de entrada leia (lista de variáveis) leia (lista de variáveis) � Ex: leia (nome, idade) • Comando de saída escreva (lista de variáveis ou expressão literal) � Ex: escreva (nota_final) , escreva(“A nota final é:”, nota_final) Prof. Bruno Macchiavello 31 Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação Universidade Universidade de de BrasíliaBrasília Computação BásicaComputação Básica Estrutura Seqüencial • A estrutura seqüencial de um algoritmo corresponde ao fato que um conjunto de instruções será executado em uma seqüência linear de cima para abaixo e dauma seqüência linear de cima para abaixo e da esquerda para a direita, ou seja, na mesma ordem em que foi escrito. Prof. Bruno Macchiavello 32 Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação Universidade Universidade de de BrasíliaBrasília Computação BásicaComputação Básica Pseudocódigo • O pseudocódigo é a escrita, por meio de regra predefinida, dos passos a serem seguidos para a resolução de um problema. É o resultado da análise e resolução de um problema exposto em um enunciado. • É uma forma para representação de algoritmos rica em detalhes. Assemelha-se bastante à forma em que programas são escritos. Prof. Bruno Macchiavello 33 Estrutura Básica de um Pseudocódigo Algoritmo <nome> Variáveis <lista de variáveis> Início <bloco de comandos> Fim Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação Universidade Universidade de de BrasíliaBrasília Computação BásicaComputação Básica Pseudocódigo – Declaração de Variáveis Declaração de Variáveis em Pseudocódigo Algoritmo DeclaraVariáveis Variáveis a : inteiro Prof. Bruno Macchiavello 34 b : real c : caractere d : literal Início … Fim Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação Universidade Universidade de de BrasíliaBrasília Computação BásicaComputação Básica Pseudocódigo – Comando de Atribuição Atribuição de Variáveis em Pseudocódigo Algoritmo AtribVariáveis Variáveis a : inteiro Prof. Bruno Macchiavello 35 a : inteiro Início a ← 1 Fim Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação Universidade Universidade de de BrasíliaBrasília Computação BásicaComputação Básica Pseudocódigo – Entrada e Saída de Dados Entrada e Saída de Dados em Pseudocódigo Algoritmo EntradaDeValores Variáveis idade : inteiro salario : real nome : literal Prof. Bruno Macchiavello 36 Início Escreva (“Digite seu nome:”) Leia (nome) Escreva (“Digite sua idade:”) Leia (idade) Escreva (“Digite seu salário:”) Leia (salario) Escreva (“Olá ”, nome, “ você tem ”, idade, “ e recebe ”, salario) Fim Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação Universidade Universidade de de BrasíliaBrasília Computação BásicaComputação Básica Estrutura Seqüencial - Exemplo A distribuidora MOTOSA, vende motos para consumidores. O custo ao consumidor de uma moto nova é a soma do custo de fábrica com a porcentagem da distribuidora e dos impostos (aplicados ao custo de fábrica), e a porcentagem do vendedor (aplicado no custa da distribuidora) A distribuidora esta de promoção, da um desconto de R$100 reais no valor Prof. Bruno Macchiavello 37 A distribuidora esta de promoção, da um desconto de R$100 reais no valor final por cada cupom de desconto que o consumidor levar na loja. Supondo que a porcentagem do distribuidor seja de 28%, os impostos de 57% e do vendedor 5%, escreva um algoritmo que leia o custo de fábrica da moto, a quantidade de cupons e imprima o valor da moto para o consumidor antes dos descontos, o total de descontos e o valor final. Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação Universidade Universidade de de BrasíliaBrasília Computação BásicaComputação Básica Estrutura Seqüencial - Exemplo Prof. Bruno Macchiavello 38 Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação Universidade Universidade de de BrasíliaBrasília Computação BásicaComputação Básica Algoritmo MOTOSA Variáveis valor_fabrica, imposto, taxa_dist, taxa_vendedor, valor_consumidor, valor_final : real no_cupons, descontos : inteiro Início Escreva (“Informe o valor de fábrica: ”) Leia (valor_fabrica) Escreva (“Informe o número de cupons: ”) Leia (no_cupons) impostos← valor_fabrica * 0.57 Prof. Bruno Macchiavello 39 impostos← valor_fabrica * 0.57 taxa_dist← valor_fabrica * 0.28 taxa_vendedor← (valor_fabrica + impostos + taxa_dist) * 0.05 descontos← 100 * no_cupons valor_consumidor← valor_fabrica + impostos + taxa_dist + taxa_vendendedor valor_final← valor_consumidor – descontos Escreva (“O valor da moto é: ”, valor_consumidor) Escreva (“O total de descontos é: ”, descontos) Escreva (“O valor final é: ”, valor_final) Fim Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação Universidade Universidade de de BrasíliaBrasília Computação BásicaComputaçãoBásica Estrutura Seqüencial - Exemplo Algoritmo MOTOSA Variáveis valor_fabrica : real no_cupons : inteiro Início Escreva (“Informe o valor de fabrica: ”) Leia (valor_fabrica) Prof. Bruno Macchiavello 40 Leia (valor_fabrica) Escreva (“Informe o número de cupons: ”) Leia (no_cupons) Escreva (“O valor da moto é: ”, valor_fabrica * (1 + 0.57 + 0.28) + 0.05 * valor_fabrica * (1 + 0.57 + 0.28)) Escreva (“O total de descontos é: ”, 100 * no_cupons) Escreva (“O valor final é: ”, valor_fabrica * (1 + 0.57 + 0.28) + 0.05 * valor_fabrica * (1 + 0.57 + 0.28) - 100 * no_cupons) Fim Sem variáveis auxiliares O algoritmo fica “poluído” e de dificil compreensão! Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação Universidade Universidade de de BrasíliaBrasília Computação BásicaComputação Básica Estrutura Seqüencial - Exercícios 2. Faça um algoritmo que leia a idade da pessoa expressa em anos, meses e dias e mostre-a expressa em horas. 1. Faça um algoritmo que leia um número inteiro e mostre seu sucessor e antecessor, e suas respectivas versões negadas. Prof. Bruno Macchiavello 41 4. Sobre o salário bruto de um funcionário, são descontados 8% de INSS, 10% de IR (imposto de renda) e, sobre o restante, 0,5% referente à filiação sindical. Para cada dependente (filhos), o funcionário ganhar R$ 50,00. Ao ser fornecido o valor do salário bruto do funcionário, e a quantidade de dependentes, calcule e mostre o total de descontos, o total de acréscimo, e o salário líquido. 5. Faça um algoritmo que leia as dos 5 trabalhos e das 3 provas de um aluno de Computação Básica e calcule e mostre na tela o media final. Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação Universidade Universidade de de BrasíliaBrasília Computação BásicaComputação Básica Programação em C Estrutura Básica de um Programa em C #include <bibliotecas> int main () { <declaração de variáveis> Prof. Bruno Macchiavello 42 <declaração de variáveis> <instruções> } Uma biblioteca que normalmente sempre é inclusa é a biblitoeca “stdio.h”. Incluir a biblioteca “stdio.h”, que significa Standard Input/Output e serve para ler dados do teclado (standard input) e escrever na tela (standard output). (Outra é a “stdib.h” que possue o comando system(“pause”) no WINDOWS). Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação Universidade Universidade de de BrasíliaBrasília Computação BásicaComputação Básica Programação em C Estrutura Básica de um Programa em C #include <stdio.h> #include <stdlib.h> int main () { <declaração de variáveis> <instruções> • Todo programa em C precisa da função principal (MAIN). • A função MAIN é a primeira a ser execuada quando o programa corre. • As chaves “{“ e “}” corresponden ao Inicio e Fim de uma função. Prof. Bruno Macchiavello 43 <instruções> } Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação Universidade Universidade de de BrasíliaBrasília Computação BásicaComputação Básica Operador Operação Linguagem C = Igual/Igualdade == ≠ Diferente/Desigualdade != < Menor < <= Menor ou Igual <= > Maior > >= Maior ou Igual >= OU Disjunção || Prof. Bruno Macchiavello 44 E Conjunção && NÃO Negação ! * Multiplicação * / Divisão / + Adição + - Subtração - mod Resto da Divisão % ← Atribuição = Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação Universidade Universidade de de BrasíliaBrasília Computação BásicaComputação Básica Tipo Linguagem C Bytes Faixa de valores Literal Caracter, inteiro char 1 -128 a 127 Literal Caracter, inteiro unsigned char 1 0 a 255 Literal Caracter, inteiro signed char 1 -128 a 127 Inteiro int 4 -2.147.483.648 a 2.147.483.647 Inteiro unsigned int 4 0 a 4.294.967.295 Inteiro signed int 4 -2.147.483.648 a 2.147.483.647 Inteiro short int 2 -32.768 a 32.767 Inteiro unsigned short int 2 0 a 65.535 Prof. Bruno Macchiavello 45 Inteiro unsigned short int 2 0 a 65.535 Inteiro signed short int 2 -32.768 a 32.767 Inteiro long int 4 -2.147.483.648 a 2.147.483.647 Interio signed long int 4 -2.147.483.648 a 2.147.483.647 Inteiro unsigned long int 4 0 a 4.294.967.295 Real float 4 ±3.4028234e±38 Real double 8 ±1.79769313486223157 e±308 Real long double 10 Limites máximos da linguagem (INF) Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação Universidade Universidade de de BrasíliaBrasília Computação BásicaComputação Básica Programação C – Tipos de Variáveis (resumo) Tipo Linguagem C Inteiro int Real float Literal caracter char Prof. Bruno Macchiavello 46 Literal caracter char Literal string char nome[tamanho] ex: char endereco[30] lógico Definir como int, que será “falso” quando for zero, e “verdadeiro” quando não for zero. Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação Universidade Universidade de de BrasíliaBrasília Computação BásicaComputação Básica Programação C – Declaração de Variáveis e Constantes Declaração de Variáveis: <tipo> <indetificador1>,. . . ,<identificadorN>; – Exemplo: • int num,val; • float media, p1,p2; • char sexo, est_civ; Uma constante pode ser declarada ou definida. Declaração: const <tipo> <identificador1> = <valor ou expressão>; emplo: • const int valor = 10; • const float taxa = 1.5; • const char letra = ‘S’; Prof. Bruno Macchiavello 47 Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação Universidade Universidade de de BrasíliaBrasília Computação BásicaComputação Básica Programação C - Define • A diretiva #define associa um identificador a um valor. É utilizado para definir constantes, vincular uma informação determinada à um identificador, ou criar macros. #define <nome_macro> <valor ou expressão>#define <nome_macro> <valor ou expressão> • É usual definir o nome das macros com letras maiúsculas. – Exemplos: • #define UM 1 • #define MSG “Digite S para sair” Prof. Bruno Macchiavello 48 Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação Universidade Universidade de de BrasíliaBrasília Computação BásicaComputação Básica Programação em C – Atribuição e Fim de comando • Em ANSI C o comando de atribuição é o símbolo “=“ Variável = Expressão ou Valor – Exemplo: letra = “A”; a = 10; num = val = 20; num = num +1; media = 7.5; • Utiliza-se um ponto-e-vírgula (;) para indicar a separação de uma ação da a outra (ou seja entre uma instrução e outra). Prof. Bruno Macchiavello 49 Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação Universidade Universidade de de BrasíliaBrasília Computação BásicaComputação Básica O comando Printf • O comando printf é similar ao “Escreva” dos pseudocódigos, servindo para mostrar mensagens ao usuário, assim como o conteúdo de variáveis. • Pode mostrar mensagens constantes, variáveis ou ainda uma mistura desses dois. • Para mostrar uma mensagem constante: – Ex: printf(“Olá mundo!\n”);– Ex: printf(“Olá mundo!\n”); • O caractere '\n' faz o programa saltar uma linha ao final da frase. • Para mostrar o conteúdo de variáveis, é necessária a inserção de modificadores de formato na string do printf: – Ex: printf(“Idade do funcionário: %d\n”,idade); • Note que após a string segue uma lista das variáveis a serem mostradas, que deve ser na ordem em que seus modificadores foram inseridos, e que o tipo da variável deve ser consistente com o tipo indicado pelo modificador. Prof. Bruno Macchiavello 50 Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação Universidade Universidade de de BrasíliaBrasília Computação BásicaComputação Básica Modificadorde Formato do Printf Modificador de Formato Tipo %d (or %i) Signed int %u unsigned int %c unsigned char %f float %lf double %s string %x hexadecimal Prof. Bruno Macchiavello 51 • Para dados com ponto flutuante (%f, %lf) existe a opção %n.mf ou %n.mlf, onde m é a quantidade de caixas décimas e n e a quantidade mínima de dígitos (considerando decimais inclusive). • Se o número possui mais dígitos que os indicados por n, então esse valor será ignorado • É possível indicar somente o valor de m (%.mf) Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação Universidade Universidade de de BrasíliaBrasília Computação BásicaComputação Básica O Comando Scanf • O comando scanf é um equivalente em C ao “Leia” do pseudocódigo. • Ele armazena o que o usuário digitou em uma variável no programa. • Segue a mesma lógica de modificadores que o printf (usando os mesmos modificadores), mas exige que para todos os tipos exceto string seja passado o ENDEREÇO da variável, ou seja, colocando um & antes do nome da variável. – Ex: printf(“Digite sua idade\n”); scanf(“%d”,&idade); Prof. Bruno Macchiavello 52 Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação Universidade Universidade de de BrasíliaBrasília Computação BásicaComputação Básica Programa C - Exemplo #include <stdio.h> #include <stdlib.h> int main () { float valor_fabrica, taxa_dist, taxa_vendedor, valor_consumidor, valor_final, impostos; int no_cupons, descontos; printf("1. Informe o valor de fabrica:\n "); scanf("%f",&valor_fabrica); printf("\n2. Informe o numero de cupons:\n "); Prof. Bruno Macchiavello 53 printf("\n2. Informe o numero de cupons:\n "); scanf("%d",&no_cupons); impostos = valor_fabrica * 0.57; taxa_dist = valor_fabrica * 0.28; taxa_vendedor = (valor_fabrica + impostos + taxa_dist) * 0.05; descontos = 100 * no_cupons; valor_consumidor = valor_fabrica + impostos + taxa_dist + taxa_vendedor; valor_final = valor_consumidor - descontos; printf("\nO valor da moto: %.2f\n", valor_consumidor); printf ("O total de descontos: %d\n", descontos); printf("O valor final: %4.2f\n", valor_final); system("pause"); return(1); } Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação Universidade Universidade de de BrasíliaBrasília Computação BásicaComputação Básica Programa C - Exemplo #include <stdio.h> #include <stdlib.h> int main () { float valor_fabrica, taxa_dist, taxa_vendedor, valor_consumidor, valor_final, impostos; int no_cupons, descontos; printf("1. Informe o valor de fabrica:\n "); scanf("%f",&valor_fabrica); printf("\n2. Informe o numero de cupons:\n "); Prof. Bruno Macchiavello 54 printf("\n2. Informe o numero de cupons:\n "); scanf("%d",&no_cupons); impostos = valor_fabrica * 0.57; taxa_dist = valor_fabrica * 0.28; taxa_vendedor = (valor_fabrica + impostos + taxa_dist) * 0.05; descontos = 100 * no_cupons; valor_consumidor = valor_fabrica + impostos + taxa_dist + taxa_vendedor; valor_final = valor_consumidor - descontos; printf("\nO valor da moto: %.2f\n", valor_consumidor); printf ("O total de descontos: %d\n", descontos); printf("O valor final: %4.2f\n", valor_final); system("pause"); return(1); } Só funciona no Windows no Linux utilizar getchar() (não precisa da stdlib) Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação Universidade Universidade de de BrasíliaBrasília Computação BásicaComputação Básica Algumas outras funções de C • abs(num) – prototype: int abs(int num); – biblioteca: stdlib.h – exemplos: • abs(-3) resulta em 3• abs(-3) resulta em 3 • abs(3) resulta em 3 • fabs(num) – prototype: double fabs(double num); – biblioteca: math.h – exemplos: • fabs(-3.5) resulta em 3.5 • fabs(3.5) resulta em 3.5 Prof. Bruno Macchiavello 55 Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação Universidade Universidade de de BrasíliaBrasília Computação BásicaComputação Básica Algumas outras funções de C • pow(x,y) = xy – prototype:double pow(double x, double y); – biblioteca: math.h – exemplos: • pow(2,3) resulta em 8.0• pow(2,3) resulta em 8.0 • pow(2+3,2) resulta em 25 • sqrt(num) = num2 • prototype: double sqrt(double num); – biblioteca: math.h – exemplos: • sqrt(25) resulta em 5 • sqrt(16.0) resulta em 4.0 Prof. Bruno Macchiavello 56 Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação Universidade Universidade de de BrasíliaBrasília Computação BásicaComputação Básica Exercícios em C • Escrever em código ANSI C os exercícios de pseudocódigo . • Verificar o funcionamento das funções• Verificar o funcionamento das funções BINARIAS: (i) deslocamento (“<<“ e “>>”) (ii) e binário (“&”) (iii) ou binário (“|”) Prof. Bruno Macchiavello 57
Compartilhar