Baixe o app para aproveitar ainda mais
Prévia do material em texto
CCF 110 ALGORITMO E ESTRUTURA ALGORITMO E ESTRUTURA DE DADOS IDE DADOS I Universidade Federal de Itajubá Prof. Roberto Affonso da Costa Junior AULA 03 – 1/2AULA 03 – 1/2 – Comandos Sequenciais – Português Estruturado (PORTUGOL) – Linguagem de Programação C Estrutura SequenciaisEstrutura Sequenciais ➢Definimos Estruturas Sequenciais como sendo a sequência de passos feito da forma Top-Down, isto é, de cima para baixo. ➢Por exemplo: ➢Qual o valor de B e de A e B? A ← 10 B ← 20 imprima(B) B ← 5 imprima(A, B) A ← 10 B ← 20 imprima(B) B ← 5 imprima(A, B) Estrutura SequenciaisEstrutura Sequenciais ➢ Uma estrutura sequencial realiza um conjunto predeterminado de comandos de forma sequencial, na ordem em que foram declarados no código fonte. A cada instrução, o contador de programa é incrementada (PORTUGOL). ➢ Uma estrutura sequencial é delimitada pelas palavras- reservadas Início e Fim e contém basicamente comandos de atribuição, comandos de entrada e comandos de saída. Os algoritmos do capítulo anterior são algoritmos que utilizam uma única estrutura sequêncial. Estrutura SequenciaisEstrutura Sequenciais ➢ Um algoritmo puramente seqüencial é aquele cuja execução é efetuada em ordem ascendente dos números que identificam cada passo. A passagem de um passo ao seguinte é natural e automática, e cada passo é executado uma única vez. 1. início 2. A ← 10 3. B ← 20 4. imprima(B) 5. B ← 5 6. imprima(A, B) 7. fim 1. início 2. A ← 10 3. B ← 20 4. imprima(B) 5. B ← 5 6. imprima(A, B) 7. fim Estrutura SequenciaisEstrutura Sequenciais ● Esquema Genérico de Algoritmos em Portugol Declaração de Variáveis/Constantes INICIO inicialização de variáveis/constantes {comentários} bloco de comandos de entrada de dados {comentários} bloco de comandos de atribuição {comentários} bloco de comandos de saída de dados FIM ● Esquema Genérico de Algoritmos em Fluxograma INICIO FIM Leia Imprima Atribuição Exemplo 1Exemplo 1 ➢ Dados 4 números, calcule a média aritmética deles. Algoritmo:Algoritmo: real n1, n2, n3, n4, soma, media imprima ( “entre com o valor de n1 “ ) leia ( n1 ) imprima ( “entre com o valor de n2 “ ) leia ( n2 ) imprima ( “entre com o valor de n3“ ) leia ( n3 ) imprima ( “entre com o valor de n4 “ ) leia ( n4 ) Exemplo 1Exemplo 1 Algoritmo:Algoritmo: soma ← n1 + n2 + n3 + n4 media ← soma / 4 imprima ( “ A média dos 4 números é: “, media ) Exemplo 1Exemplo 1 ➢ Dados 4 números, calcule a média aritmética deles. Portugol:Portugol: real n1, n2, n3, n4, soma, media Início imprima ( “entre com o valor de n1 “ ) leia ( n1 ) imprima ( “entre com o valor de n2 “ ) leia ( n2 ) imprima ( “entre com o valor de n3“ ) leia ( n3 ) imprima ( “entre com o valor de n4 “ ) leia ( n4 ) Exemplo 1Exemplo 1 Portugol:Portugol: soma ← n1 + n2 + n3 + n4 media ← soma / 4 imprima ( “ A média dos 4 números é: “, media ) Fim Exemplo 1Exemplo 1 ➢ Dados 4 números, calcule a média aritmética deles. Fluxograma:Fluxograma: INICIO n1, n2, n3, n4 Soma ← n1 + n2 + n3 + n4 Media ← soma / 4 ‘ Media = ’, Media FIM Exemplo 1Exemplo 1 Testando o Algoritmo anteriorTestando o Algoritmo anterior n1 = 10.0 n2 = 5.0 n3 = 7.0 n4 = 8.0 soma ← 10.0 + 5.0 + 7.0 + 8.0 media ← 30 / 4 media = 7.5 Exemplo 2Exemplo 2 ➢ Elabore um programa que leia um valor de temperatura em graus Celsius, calcule e exiba a temperatura equivalente em graus Kelvin, sabendo que K = C + 273. Algoritmo:Algoritmo: real K, C imprima ( “entre com a temperatura em Celsius: “ ) leia ( C ) K ← C + 273 imprima ( “ A temperatura em Kelvin é: “, K) Exemplo 2Exemplo 2 Portugol:Portugol: real K, C Início imprima ( “entre com a temperatura em Celsius: “ ) leia ( C ) K ← C + 273 imprima ( “ A temperatura em Kelvin é: “, K) Fim Exemplo 2Exemplo 2 Fluxograma:Fluxograma: INICIO C K ← C + 273 ‘ Kelvin = ’, K FIM Exemplo 2Exemplo 2 Testando o Algoritmo anteriorTestando o Algoritmo anterior C = 10.0 k ← 10.0 * 25.4 Kelvin = 254.0 Exemplo 3Exemplo 3 ➢ Ler o nome de um cliente de fast food e a quantidade de cada item do menu que ele vai pedir. Exiba o nome do cliente e o total da compra. MENU Hot dog R$ 2,50 Hambúrguer R$ 4,00 Cheeseburguer R$ 4,50 Refrigerante R$ 2,00 Batatas fritas R$ 3,50 Exemplo 3Exemplo 3 Algoritmo:Algoritmo: cadeia nome inteiro qhd, qha, qch, qre, qbf real pthd, ptha, ptch, ptre, ptbf, ptf imprima ( “entre com o nome do cliente: “ ) leia ( nome ) imprima ( “entre com a quantidade de hot dog: “ ) leia ( qhd ) imprima ( “entre com a quantidade de hambúrguer: “ ) leia ( qha ) imprima ( “entre com a quantidade de cheeseburguer: “ ) leia ( qch ) Exemplo 3Exemplo 3 Algoritmo:Algoritmo: imprima ( “entre com a quantidade de refrigerante: “ ) leia ( qre ) imprima ( “entre com a quantidade de batatas fritas: “ ) leia ( qbf ) pthd← qhd * 2.5 ptha← qha * 4.0 ptch← qch * 4.5 ptre ← qre * 2.0 ptbf ← qbf * 3.5 ptf ← phd + pha + pch + pre + pbf imprima ( “ Cliente: “, nome) imprima ( “ O valor devido é: R$“, ptf) Exemplo 3Exemplo 3 Portugol:Portugol: cadeia nome inteiro qhd, qha, qch, qre, qbf real pthd, ptha, ptch, ptre, ptbf, ptf Início imprima ( “entre com o nome do cliente: “ ) leia ( nome ) imprima ( “entre com a quantidade de hot dog: “ ) leia ( qhd ) imprima ( “entre com a quantidade de hambúrguer: “ ) leia ( qha ) imprima ( “entre com a quantidade de cheeseburguer: “ ) leia ( qch ) Exemplo 3Exemplo 3 Portugol:Portugol: imprima ( “entre com a quantidade de refrigerante: “ ) leia ( qre ) imprima ( “entre com a quantidade de batatas fritas: “ ) leia ( qbf ) pthd← qhd * 2.5 ptha← qha * 4.0 ptch← qch * 4.5 ptre ← qre * 2.0 ptbf ← qbf * 3.5 ptf ← qhd + qha + qch + qre + qbf imprima ( “ Cliente: “, nome) imprima ( “ O valor devido é: R$ “, ptf) FIM Exemplo 3Exemplo 3 Portugol:Portugol: imprima ( “entre com a quantidade de refrigerante: “ ) leia ( qre ) imprima ( “entre com a quantidade de batatas fritas: “ ) leia ( qbf ) pthd← qhd * 2.5 ptha← qha * 4.0 ptch← qch * 4.5 ptre ← qre * 2.0 ptbf ← qbf * 3.5 ptf ← phd + pha + pch + pre + pbf imprima ( “ Cliente: “, nome) imprima ( “ O valor devido é: R$ “, ptf) FIM Exemplo 3Exemplo 3 Fluxograma:Fluxograma: INICIO nome, qhd, qha, qch, qre, qbf pthd ← qhd * 2.5 ptha ← qha * 4.0 ptch ← qch * 4.5 ptre ← qre * 2.0 ptbf ← qbf * 3.5 ptf ← pthd + ptha + ptch + ptre + ptbf 1 Exemplo 3Exemplo 3 Fluxograma:Fluxograma: “ Cliente: “, nome FIM 1 “ O valor devido é: R$ “, ptf Exemplo 3Exemplo 3 Testando o Algoritmo anteriorTestando o Algoritmo anterior nome = “Roberto Costa” qhd = 0 qha = 0 qch = 1 qre = 2 qbf = 1 pthd = 0 * 2.5 ptha = 0 * 4.0 ptch = 1 * 4.5 ptre = 2 * 2.0 ptbf = 1 * 3.5 Exemplo 3Exemplo 3 Testando o Algoritmo anteriorTestando o Algoritmo anterior ptf = 0.0 + 0.0 + 4.5 + 4.0 + 3.5 Cliente : Roberto Costa O valor devido é: R$ 12.00 TreinamentoTreinamento 1) Elabore um programa que leia um comprimento em polegadas, calcule e exiba o comprimento em milímetros, considerando que 1 polegada equivale a 25,4 milímetros. 2) Elabore um programa que leia a massa de uma amostra de carbono, calcule e exiba o número de moles de carbono na amostra. Considere que o mol C é igual a 12 e a fórmula éno de moles = massa da amostra / 12 3) Elabore um programa que leia a força F aplicada sobre um corpo e a velocidade V do corpo, calcule e exiba a potência P. Considere P = F*V. TreinamentoTreinamento 4) Ler uma determinada hora, seus minutos e segundos. Quantos segundos existem nessa hora, minuto e segundo lidos? 5) O preço de um produto ao consumidor é a soma do preço de custo mais as porcentagens de impostos e a do distribuidor. Ler o nome do produto, seu custo de fabrica e as taxas de impostos e do distribuidor. Exiba o nome do produto e o preço final ao consumidor. 6) Escreva o algoritmo que calcule a razão r de uma progressão aritmética de n termos, cujo primeiro termo é a1 e o último termo an, dada a equação: r = (an - a1) / (n – 1) HistóricoHistórico 1972 – primeira versão de C criada por Dennis Ritchie nos laboratórios Bell. 1960 – surgimento da linguagem ALGOL 60, que gerou a linguagem C. 1967 – surgiu CPL (Combined Programming Language) nas universidades de Londres e Cambridge com o objetivo, segundo a equipe do projeto, de "trazer ALGOL à terra", ou "manter contato com a realidade de um computador real". Ainda em 1967, em Cambridge, Martin Richards criou o BCPL (Basic CPL), uma simplificação do CPL, tentando manter apenas as "boas coisas do CPL". HistóricoHistórico 1970 – Ken Thompson, chefe da equipe que projetou o UNIX para o PDP11 do Bell Labs, implementou um compilador para uma versão mais reduzida do CPL. Batizou a linguagem de B. Tanto BCPL quanto B mostravam-se muito limitadas, prestando-se apenas para certas classes de problemas. Por muitos anos (aproximadamente 10) a sintaxe (formato) tida como padrão da linguagem C foi aquela fornecida com o UNIX versão 5.0 do Bell Labs. Em 1985, ANSI (American National Standards Institute) estabeleceu um padrão oficial de C o chamado "C ANSI". Características da Linguagem CCaracterísticas da Linguagem C Portalibilade Modularidade Recursos de baixo nível Geração de código eficiente Simplicidade Facilidade de uso Pode ser usada para os mais variados propósitos Indicada para escrever compiladores, editores de textos, bancos de dados, etc. Etapas da Geração de um Etapas da Geração de um Programa em CPrograma em C Escrita do módulo fonte C através de um editor de texto: vi, emacs, pico, gedit, bloco de notas, etc. Os programas devem sempre ter a extensão .c Pré-processamento (fonte expandido) Compilador (gera objeto) Lincagem (gera executável) Programa inicialPrograma inicial #include <stdio.h> int main ( void ) { // saida do programa printf ( “ Fiz meu primeiro programa em C\n “ ); return 0; } Detalhes a serem observadosDetalhes a serem observados ● includes ● Comentários ● Inicio e fim do programa ( chaves ) ● Fim das instruções ( ponto e virgula ) Definição de variáveisDefinição de variáveis ● Inteiro int ● Flutuante float ● Caracter char ● Cadeia char [ nn ] Tipo inteiroTipo inteiro #include <stdio.h> int main ( void ) { // definicao das variaveis int x, soma_valores; return 0; } Tipo flutuanteTipo flutuante #include <stdio.h> int main ( void ) { // definicao das variaveis float x, soma_valores; return 0; } Tipo caracterTipo caracter #include <stdio.h> void main ( void ) { // definicao das variaveis char x, primeira_letra; return 0; } Tipo cadeiaTipo cadeia #include <stdio.h> int main ( void ) { // definicao das variaveis char x[10], nome_pessoa[30]; return 0; } Atribuição de valores à variáveisAtribuição de valores à variáveis ● Algoritmo variável ← valor ● Linguagem C variável = valor; Exemplo inteiroExemplo inteiro #include <stdio.h> int main ( void ) { // definicao das variaveis int x; // atribuicao dos dados x = 569; return 0; } Exemplo flutuanteExemplo flutuante #include <stdio.h> int main ( void ) { // definicao das variaveis float x; // atribuicao dos dados x = 569.87; return 0; } Exemplo caracterExemplo caracter #include <stdio.h> int main ( void ) { // definicao das variaveis char x; // atribuicao dos dados x = ‘g’; return 0; } Exemplo cadeiaExemplo cadeia ● Diferentemente dos outros tipos, o tipo ca-deia não pode ter atribuição direta; ● Esta atribuição somente poderá ser realizada através de funções da biblioteca da lingua-gem C; ● Todas as vezes que esta biblioteca é usada, a seguinte declaração é necessária: #include <string.h> Funções de cadeiaFunções de cadeia ● A seguir algumas das funções que poderão ser usadas com o tipo cadeia: – strcpy ( a, b ) copia a cadeia b na cadeia a – strcmp ( a, b ) compara a cadeia a com a cadeia b ( se forem iguais o resultado é igual a zero ) – strcat ( a, b ) concatena a cadeia b com a cadeia a guardando o resultado na cadeia a Exemplo 1Exemplo 1 #include <stdio.h> #include <string.h> int main ( void ) { // definicao das variaveis char x[10], y[5], t[20]; // atribuicao dos dados strcpy ( x, “Maria” ); strcpy ( y, “sol” ); strcpy ( t, x ); strcat ( x, y ); return 0; } Formato dos dadosFormato dos dados ● Tanto para saída quanto para a entrada de dados, é necessário definir-se a forma como os dados serão manuseados; ● Isto é feito utilizando-se a declaração de formato dos dados; ● Em linguagem C esta formatação deve estar inclusa nas declarações de entrada e de saída dos dados; Códigos de formatosCódigos de formatos ● Para cada variável do programa é necessá-rio que se defina o formato correspondente ao tipo definido para ela; ● Este formato das variáveis é definido com os códigos de formato ● Tipo inteiro: %[n]d n significa o tamanho do campo, ou seja, quantos dígitos tem o numero incluindo o sinal ( positivo ou negativo ) o sinal [ ] significa que a informação é opcional ● Tipo flutuante: %[n.t]f t significa o tamanho do campo decimal n significa o tamanho do campo, ou seja, quantos dígitos tem o numero incluindo o ponto decimal , o campo t e o sinal do numero ● Tipo caracter: %c ● Tipo cadeia : %s Tabela de códigos de formato (%) Código Formato %c %d %i O mesmo que %d %e %E %f Ponto flutuante decimal %g %G Um caracter (char) Um número inteiro decimal (int) Número em notação científica com o "e"minúsculo Número em notação científica com o "e"maiúsculo Escolhe automaticamente o melhor entre %f e %e Escolhe automaticamente o melhor entre %f e %E Tabela de códigos de formato (%) Código Formato %o Número octal %s %u %x Hexadecimal com letras minúsculas %X Hexadecimal com letras maiúsculas %% Imprime um % %p Ponteiro String Decimal "unsigned" (sem sinal) Controle da impressãoControle da impressão ● Todas as linhas de saída necessitam do controle da impressão ● Isto é feito utilizando-se o caractere especial: \n Observar que isto só é válido para a impressão de dados e não para a entrada. • Este caractere pode ser colocado: – No inicio do comando de saída; – No meio – No fim ; • A colocação do caractere de controle de saída na instrução de impressão indica que a informação será impressa e em seguida o computador fica disponível para imprimir nova informação na linha seguinte à que acabou de ser impressa; ● A não colocação do caractere de controle de impressão na instrução de saída indica que a próxima informação será impressa na mesma linha daimpressão anterior; ● Numa instrução de saída, pode-se colocar quantos \n forem necessários; ● Quando colocado no inicio da instrução de saída, cada \n indica uma linha em branco, antes da impressão da informação; ● Quando colocado no fim da instrução de saída, cada \n indica uma linha em branco, após a impressão da informação; ● Quando colocado no meio da instrução de saída, [q] \n indica ( q – 1) linhas em branco, entre as informações impressas; Saída de dados 1Saída de dados 1 ● Saída simples algoritmo: imprima ( x ) em linguagem C: printf ( “%d\n”, x ); Visualização da saídaVisualização da saída ● Suponha que na variável inteira x esteja armazenado o valor 569 ● A saída terá a seguinte aparência: 569 Saída de dados 2Saída de dados 2 algoritmo: x ← 569 imprima ( “x = “, x ) em linguagem C: x = 569; printf ( “x = %5d\n“, x ); Visualização da saídaVisualização da saída A saída terá a seguinte aparência: ( a linha tracejada não aparece na saída, é só para guiá-la ) = = = = = = = x = 5 6 9 Saída de dados 3Saída de dados 3 #include <stdio.h> int main ( void ) { // definicao das variaveis int x, soma_valores; // atribuicao dos dados x = 569; soma_valores = -5409; // saida dos dados printf ( “ valor de x\n “ ); printf ( “x = %5d\n”, x ); printf ( “valor da soma dos valores\n” ); printf ( “soma dos valores = %10d\n” , soma_valores ); return 0; } Visualização da saídaVisualização da saída A saída terá a seguinte aparência: valor de x x = 569 ( 2 espaços em branco antes do numero ) valor da soma dos valores soma dos valores = -5409 ( 5 espaços em branco antes do numero ) Outra alternativaOutra alternativa // saida dos dados printf ( “ valor de x\n\n “ ); printf ( “x = %5d\n”, x ); printf ( “\n\n\nvalor da soma dos valores\n” ); printf ( “\n\nsoma dos valores = %10d” , soma_valores ); Visualização da saídaVisualização da saída Os valores numéricos nos inícios das linhas não fazem parte da saída, são apenas para guiar o leitor: 1) valor de x 2) 3) x = 569 4) 5) 6) 7) valor da soma dos valores 8) 9) 10) soma dos valores = -5409 Outra alternativaOutra alternativa // saida dos dados printf ( “ valor de x\n\nx = %5d\n”, x ); printf ( “\n\n\nvalor da soma dos valores\n\n\nsoma dos valores = %10d”, soma_valores ); Tipo FlutuanteTipo Flutuante ● Saída simples algoritmo: x ← 569.26 imprima ( x ) em linguagem C: x = 569.26; printf ( “%f\n”, x ); Visualização da saídaVisualização da saída ● A saída terá a seguinte aparência: 569.260000 Outra alternativaOutra alternativa printf ( “ valor de x = %10.4f\n”, x ); Visualização da saídaVisualização da saída ● A saída terá a seguinte aparência: = = = = = = = = = = ( linha de referencia ) valor de x = 5 6 9 . 2 6 0 0 Tipo caracterTipo caracter ● Saída simples algoritmo: x ← ‘g’ imprima ( x ) em linguagem C: x = ‘g’; printf ( “%c\n”, x ); Visualização da saídaVisualização da saída ● A saída terá a seguinte aparência: g Outra alternativaOutra alternativa // definicao das variaveis char letra_1, letra_2; // atribuicao dos valores letra_1 = ‘g’ ; letra_2 = ‘h’ ; // saida dos resultados printf ( “ letra 1 = %c\n”, letra_1 ); printf ( “ letra 2 = %c\n”, letra_2 ); Visualização da saídaVisualização da saída ● A saída terá a seguinte aparência: letra 1 = g letra 2 = h Outra alternativaOutra alternativa A mesma saída poderia ser obtida através da seguinte declaração: printf ( “ letra 1 = %c\n letra 2 = %c\n”, letra_1 , letra_2 ); Tipo cadeiaTipo cadeia ● Saída simples algoritmo: x ← “Unifei” imprima ( x ) em linguagem C: strcpy ( x, “Unifei” ); printf ( “%s\n”, x ); Visualização da saídaVisualização da saída ● A saída terá a seguinte aparência: Unifei Outra alternativaOutra alternativa #include <stdio.h> #include <string.h> int main ( void ) { // definicao das variaveis char nome_1[20], nome_2[5], nome_3[30]; // atribuicao dos dados strcpy ( nome_1, “Universidade” ); strcpy ( nome_2, “EFEI” ); strcpy ( nome_3, nome_1 ); strcat ( nome_3, nome_2 ); // saida dos dados printf ( “ nome 1 = %s\n”, nome_1 ); printf ( “ nome 2 = %s\n”, nome_2 ); printf ( “ nome 3 = %s\n”, nome_3 ); return 0; } Visualização da saídaVisualização da saída ● A saída terá a seguinte aparência: nome 1 = Universidade nome 2 = EFEI nome 3 = UniversidadeEFEI Estrutura básica de um programa em C Estrutura básica de um programa em C Observando o programa acima podemos perceber que existem duas formas de comenta-lo. O primeiro é utilizando duas barras “//” que comenta todo o código contido naquela linha e não há necessidade de fecha-la. O segundo é usando os caracteres /* e */ que comentam todas as instruções localizadas entre eles. Quando comentamos uma instrução estamos na realidade impedindo que elas sejam compiladas. Constantes de barra invertidaConstantes de barra invertida Constante Significado \n Nova Linha \” Aspas \’ Apóstofro \0 Nulo (0 decimal) \\ Barra Invertida \t Tabulação Horizontal (tab) \a Alerta (beep) \b Retorno do Cursor Entrada de DadosEntrada de Dados ● A entrada de dados pode ser feita de duas formas: – via teclado do computador • Neste caso o usuário do programa digita os dados ne-cessários ao programa no momento em que este os solicita ( programa interativo ); - assunto desta aula – via arquivo de dados • Neste caso o usuário monta, através de editor de texto, um arquivo contendo os dados necessários ao programa, que os lê diretamente sem a intervenção do usuário; - assunto de uma próxima aula Entrada de dados via tecladoEntrada de dados via teclado ● entrada simples algoritmo: leia ( x ) em linguagem C: scanf ( “%d”, &x ); ConsideraçõesConsiderações ● Aqui não é usado o caractere especial \n como na saída de dados; ● Observar a utilização dos códigos de forma-tos; ● É obrigatório para todos os tipos, exceto ca-deia, a utilização do sinal & antes do nome da variável de entrada; Execução da entrada de dadosExecução da entrada de dados scanf ( “%d”, &x ); Esta declaração indica ao programa que este deve esperar pela digitação pelo usuário, de um valor numérico inteiro que irá ser arma-zenado na variável x, logo após o usuário digitar o comando Enter do teclado, indican-do assim o envio da informação ao computador; Exemplo 1Exemplo 1 # include <stdio.h> int main ( void ) { // definicao das variaveis int x; // entrada dos dados printf ( “entre com um valor numerico\n” ); scanf ( “%d”, &x ); // saida dos resultados printf ( “valor lido para x = %5d\n”, x ); return 0; } ConsideraçõesConsiderações ● Observar a necessidade de uma instrução que indica a interação entre o usuário e o programa: printf ( “entre com um valor numerico\n” ); ● Sem ela, o usuário não saberia o que fazer quando o programa estivesse sendo executado; ● O usuário é responsável pelo conhecimento antecipado do tipo da variável que está sendo inserida, caso contrário, a inserção de variáveis diferentes dos tipos definidos para elas, causam erros na execução do programa; ● Deve-se formatar de forma mais simples possível os dados de entrada, caso contrário, o usuário terá muito trabalho digitando os dados num formato complexo. ● Uma vez armazenado na memóriaa informação é tratada normalmente como já visto anteriormente, quando foi apresentado a atribuição de valores; ● Desta forma, a impressão da variável pode ser feita conforme a necessidade do programa, independente-mente da forma da entrada da mesma. ● Observe no exemplo anterior, que a variável x tem o formato %d na entrada e %5d na saída. Exemplo 2Exemplo 2 int x, y; float a, b, c; char p; scanf ( “%d %f %d %c”, &y, &b, &x, &p ); Antes do %c, sempre tem espaço em branco ConsideraçõesConsiderações 1. Neste caso, são esperados 4 valores na entrada de dados; 2. Portanto, o usuário deve digitar os dados na ordem em que eles são solicitados; 3. Observar que as variáveis devem corresponder aos respectivos formatos; 4. Os dados podem ser digitados na mesma linha, separados por um ou mais espaços em branco, e após a digitação dos mesmos, digita-se o coman-do Enter do teclado; 5. Os dados podem ser também fornecidos, na ordem solicitada, digitando-se separadamente cada um deles, seguidos do comando Enter do teclado; AlternativaAlternativa int x, y; float a, b, c; char p; scanf ( “%d”, &y ); scanf ( “%f”, &b ); scanf ( “%d”, &x ); scanf ( “ %c”, &p ); Lembre-se de colocar o espaço em branco ConsideraçõesConsiderações ● Aqui são válidas todas as considerações do exemplo anterior, exceto a quarta, pois co-mo se tem 4 comandos de scanf, obrigatoriamente tem-se 4 entradas separadas. ● Ou seja, neste exemplo, obrigatoriamente a forma de entrada tem que ser aquela especificada na quinta consideração anterior. Entrada de dados para CadeiaEntrada de dados para Cadeia char titulo[30]; scanf ( “%s”, titulo ); Observar que neste caso, o nome da variável não é antecedido pelo símbolo & como nos casos anteriores. todas as observações anteriores são válidas para este caso; ● Neste caso é esperado que o usuário digite uma cadeia ( alfanumérica ) e após isto digite o comando Enter do teclado; ● Se tiver mais de uma variável no comando de entrada, os valores devem ser digitados da mesma forma que os casos anteriores, ou seja: – Se na mesma linha, os dados deverão ser separados por um ou mais espaços em branco; no final do comando digitar Enter – Se em linhas diferentes, cada dado é digitado na sua respectiva linha, e após o término da mesma, digitar o comando Enter ● Observar também que o código de formato %s na entrada de dados indica que o valor alfanumérico a ser digitado não tem espaços em branco. ● Portanto, no programa anterior são válidos os seguintes valores para a variável titulo: Efei Casa Universidade ● No entanto, se for necessário o armazena-mento de um valor alfanumérico que tenha espaços em branco em seu conteúdo, como por exemplo: Universidade Federal de Itajuba é necessário trocar-se o código de formato %s, na entrada de dados, pelo código %[^\n] ● na saída, independentemente da forma de entrada, uma cadeia só pode ser impressa, com o formato %s. Exemplo 3Exemplo 3 char primeiro_nome[15], sobrenome[30]; printf ( “entre com seu primeiro nome\n”); scanf ( “%s”, primeiro_nome ); printf ( “entre com seu sobrenome completo \n “ ); scanf ( “ %[^\n]”, sobrenome ); ( observar um espaço em branco antes do sinal de % ) printf ( “nome completo: %s %s\n”, primeiro_nome, sobrenome ); Exemplo de dadosExemplo de dados ● Suponha que o usuário entre com os seguintes valores respectivamente para as variáveis primeiro_nome e nome: RONALDO BUENO MARCONDES PORTELA ● Neste caso, a impressão teria o seguinte aspecto: nome completo: RONALDO BUENO MARCONDES PORTELA Operações AritméticasOperações Aritméticas ● Adição + ● Subtração - ● Multiplicação * ● Divisão / ● Resto da divisão % Exemplos de expressões Exemplos de expressões aritméticasaritméticas int x, y; float a, b, c; x = 3 * 2 + 5; y = x % 2; a = 45.67; b = 3.45 + a; c = b / a – 10.567; Hierarquia dos operadoresHierarquia dos operadores Qual é o resultado da seguinte operação: X = 5 + 2 * 3 ; 21 ou 11 ? Hierarquia dos operadoresHierarquia dos operadores ● A hierarquia dos operadores define a ordem em que uma expressão é calculada; ● Define-se a seguinte tabela de prioridade para os operadores: – Parênteses ( mais alta ) – Multiplicação e divisão – Adição e subtração ● Operadores com mesma prioridade, a ordem de resolução é da esquerda para a direita. ● No exemplo anterior: X = 5 + 2 * 3 ; tem-se uma adição e uma multiplicação; teste caso a multiplicação é realizada em primeiro lugar e em seguida, o resultado é adicionado ao valor 5 portanto, o resultado da expressão será: 2 * 3 = 6 6 + 5 = 11 ● Se for desejado trocar a prioridade de um operador, utiliza-se parênteses. ● Exemplo: X = ( 5 + 2 ) * 3 ; ● Neste caso, como o parênteses tem a maior prioridade, ele é resolvido na frente; Desta forma, tem-se: 5 + 2 = 7 7 * 3 = 21 Exemplo 4Exemplo 4 ● A expressão algébrica: ]3[*]3[ ]3*[ b ba baa a ba ba +− − +− − + − • É representada em linguagem C como: ( (a – b) / (a + b) - (a * 3) ) / ( (3 – a) + a * b / (a – b) – (3 + b) ) • ordem da execução dos operadores ( (a – b) / (a + b) - (a * 3) ) / ( (3 – a) + a * b / (a – b) – (3 + b) ) B 1 2 3 A 4 5 6 9 7 8 10 11 12 Operação finalOperação final A / B 13 Expressões inteirasExpressões inteiras ● Constituídas de variáveis e constantes intei-ras ● Resultado é sempre inteiro ● Exemplo: a expressão: 5 * 2 / 3 Resulta no valor 3 ● Já a expressão: 2 / 3 * 5 Resulta no valor 0 ● E a expressão: 3 / 2 * 5 Resulta no valor 5 Expressões flutuantesExpressões flutuantes ● Constituídas de variáveis e constantes flutu-antes ● Resultado é sempre flutuante ● Exemplo: a expressão: 5.0 * 2.0 / 3.0 Resulta no valor 3.33 Expressões mistasExpressões mistas ● Constituídas de variáveis e constantes flutuantes e inteiras ● Resultado é sempre flutuante ● Exemplo: a expressão: 5.0 * 2 / 3.0 Resulta no valor 3.33 ● Já a expressão: 2.0 / 5 * 3 Resulta no valor 1.20 ● E a expressão: 5 / 2 * 3.0 Resulta no valor 6.0 CUIDADO!!! Casting tiposCasting tipos ● Pode-se forçar temporariamente, a mudança do tipo de uma variável, através do casting do tipo, que consiste em se anteceder o nome da variável com o novo tipo, entre parênteses. Exemplo 5Exemplo 5 int a, b; float c; c = 2.5; a = 3; b = (int)c * a; Que resulta em 6 o valor armazenado em b Exemplo 6Exemplo 6 int a, b; float c; c = 2.5; a = 3; b = (int)(c * a); Que resulta em 7 o valor armazenado em b Atribuições inteirasAtribuições inteiras int a, b; a = 34; b = a * 2; Em b estará armazenado o valor 68 Atribuição FlutuanteAtribuição Flutuante float a, b; a = 34.56; b = a * 2; Em b estará armazenado o valor : 69.12 Atribuição mistaAtribuição mista int a, b; float c, d; a = 10; c = 20.20; b = 2 * c; // inteiro recebendo flutuante d = a * 2; // flutuante recebendo inteiro b tem valor 40 d tem valor 20.0 Operadores EspeciaisOperadores Especiais ● Adição ++ ● Subtração -- ● Atribuição com operação += -= /= *= AdiçãoAdição ● Sejam as operações: x = 35; x = x + 10; Como mostrado anteriormente, na variávelx é armazenado o valor atual dela ( 35 ) adicionado à constante 10, o que resulta no valor 45. ● Uma outra forma de se escrever as mesmas instruções é utilizando-se o operador especial +=, da seguinte forma: x = 35; x += 10; Ou seja, a expressão do lado direito ao sinal de igual é operada com a variável do lado esquerdo e o resultado é armazenado nesta mesma variável. ● Isto é também válido para os outros opera-dores, como mostrado no exemplo: a = 23; a *= 2; significa que na variável a vai estar arma-zenado o valor 46, pois corresponde à operação: a = a * 2 Exemplo 7Exemplo 7 int a, b; a = 10; b = 2; a += b + 3; printf ( “ a = %d\n”, a ); resultadoresultado Neste caso, a saída seria: a = 15 Exemplo 8Exemplo 8 int a, b; a = 10; b = 2; a += a* (b + 3); printf ( “ a = %d\n”, a ); resultadoresultado Neste caso, a saída seria: a = 60 ● Para as operações de adição e subtração, existem mais dois operadores especiais. ● São eles: ++ e -- respectivamente. ● Sejam por exemplo, as seguintes operações: x = 30; x = x + 1; como mostrado anteriormente, a ultima ope-ração pode ser também escrita como: x += 1; ou ainda: x++; o que resulta no valor 31 armazenado na variável x , em todos os exemplos. ● O operador ++ é utilizado quando o conteúdo de uma variável é adicionado de uma unidade, e da mesma forma, o operador -- é utilizado quando o conteúdo de uma variável é subtraído de uma unidade. ● Sejam por exemplo, as seguintes operações: x = 30; x = x - 1; como mostrado anteriormente, a ultima ope-ração pode ser também escrita como: x -= 1; ou ainda: x--; o que resulta no valor 29 armazenado na variável x, em todos os exemplos. Exemplo 1Exemplo 1 ➢ Dados 4 números, calcule a média aritmética deles. Programa em C:Programa em C: ##includeinclude <stdio.h> <stdio.h> int mainint main()() {{ // declaração das variáveis// declaração das variáveis float n1, n2, n3, n4, soma, media; // entrada de dados// entrada de dados printf ( “entre com o valor de n1 = “ ); scanf ( “%f”,&n1 ); printf ( “entre com o valor de n2 = “ ); scanf ( “%f”,&n2 ); Exemplo 1Exemplo 1 Programa em C:Programa em C: // entrada de dados// entrada de dados printf ( “entre com o valor de n3 = “ ); scanf ( “%f”,&n3 ); printf ( “entre com o valor de n4 = “ ); scanf ( “%f”,&n4 ); // Somando todos os valores// Somando todos os valores soma = n1 + n2 + n3 + n4; // Calculando a média// Calculando a média media = soma / 4; // saída de dados// saída de dados printf ( “A média dos 4 números é: %.2f “, media ); }} Exemplo 2Exemplo 2 ➢ Elabore um programa que leia um valor de temperatura em graus Celsius, calcule e exiba a temperatura equivalente em graus Kelvin, sabendo que K = C + 273. Programa em C:Programa em C: ##includeinclude <stdio.h> <stdio.h> int mainint main()() {{ // declaração das variáveis// declaração das variáveis float K, C; // entrada de dados// entrada de dados printf ( “entre com a temperatura em Celsius = “ ); scanf ( “%f”,&C ); Exemplo 2Exemplo 2 Programa em C:Programa em C: // Calculando a temperatura em Kelvin// Calculando a temperatura em Kelvin K = C + 273; // saída de dados// saída de dados printf ( “A temperatura em Kelvin é: %.2f “, K ); }} Exemplo 3Exemplo 3 ➢ Ler o nome de um cliente de fast food e a quantidade de cada item do menu que ele vai pedir. Exiba o nome do cliente e o total da compra. MENU Hot dog R$ 2,50 Hambúrguer R$ 4,00 Cheeseburguer R$ 4,50 Refrigerante R$ 2,00 Batatas fritas R$ 3,50 Exemplo 3Exemplo 3 Programa em C:Programa em C: ##includeinclude <stdio.h> <stdio.h> int mainint main()() {{ // declaração das variáveis// declaração das variáveis char nome[30]; int qhd, qha, qch, qre, qbf; float pthd, ptha, ptch, ptre, ptbf, ptf; // entrada de dados// entrada de dados printf ( “entre com o nome do cliente: “ ) scanf ( “ %[^\n]”, nome) Exemplo 3Exemplo 3 printfprintf ( “entre com a quantidade de hot dog: “ ) ( “entre com a quantidade de hot dog: “ ) scanf ( “%d”,&qhd ); printfprintf ( “entre com a quantidade de hambúrguer: “ ) ( “entre com a quantidade de hambúrguer: “ ) scanf ( “%d”,&qha ); printfprintf ( “entre com a quantidade de cheeseburguer: “ ) scanf ( “%d”,&qch ); printfprintf ( “entre com a quantidade de refrigerante: “ ) scanf ( “%d”,&qre ); printfprintf ( “entre com a quantidade de batatas fritas: “ ) scanf ( “%d”,&qbf ); Exemplo 3Exemplo 3 // Calculando o total a pagar// Calculando o total a pagar pthd = qhd * 2.5; ptha = qha * 4.0; ptch = qch * 4.5; ptre = qre * 2.0; ptbf = qbf * 3.5; ptf = qhd + qha + qch + qre + qbf; // saída de dados// saída de dados printf ( “ Cliente: %s\n“, nome); printf ( “ O valor devido é: R$ %.2f\n“, ptf); } Slide 1 Slide 2 Slide 3 Slide 4 Slide 5 Slide 6 Slide 7 Slide 8 Slide 9 Slide 10 Slide 11 Slide 12 Slide 13 Slide 14 Slide 15 Slide 16 Slide 17 Slide 18 Slide 19 Slide 20 Slide 21 Slide 22 Slide 23 Slide 24 Slide 25 Slide 26 Slide 27 Slide 28 Slide 29 Slide 30 Slide 31 Slide 32 Slide 33 Slide 34 Slide 35 Slide 36 Slide 37 Slide 38 Slide 39 Slide 40 Slide 41 Slide 42 Slide 43 Slide 44 Slide 45 Slide 46 Slide 47 Slide 48 Slide 49 Slide 50 Slide 51 Slide 52 Slide 53 Slide 54 Slide 55 Slide 56 Slide 57 Slide 58 Slide 59 Slide 60 Slide 61 Slide 62 Slide 63 Slide 64 Slide 65 Slide 66 Slide 67 Slide 68 Slide 69 Slide 70 Slide 71 Slide 72 Slide 73 Slide 74 Slide 75 Slide 76 Slide 77 Slide 78 Slide 79 Slide 80 Slide 81 Slide 82 Slide 83 Slide 84 Slide 85 Slide 86 Slide 87 Slide 88 Slide 89 Slide 90 Slide 91 Slide 92 Slide 93 Slide 94 Slide 95 Slide 96 Slide 97 Slide 98 Slide 99 Slide 100 Slide 101 Slide 102 Slide 103 Slide 104 Slide 105 Slide 106 Slide 107 Slide 108 Slide 109 Slide 110 Slide 111 Slide 112 Slide 113 Slide 114 Slide 115 Slide 116 Slide 117 Slide 118 Slide 119 Slide 120 Slide 121 Slide 122 Slide 123 Slide 124 Slide 125 Slide 126 Slide 127 Slide 128 Slide 129 Slide 130 Slide 131 Slide 132 Slide 133 Slide 134 Slide 135 Slide 136 Slide 137 Slide 138 Slide 139
Compartilhar