Beruflich Dokumente
Kultur Dokumente
Computao
Profa. MSc. Viviane Guimares Ribeiro
Sumrio
APRESENTAO DA DISCIPLINA ...................................................................................................... 4 EMENTA ................................................................................................................................................... 4 OBJETIVO DA DISCIPLINA ......................................................................................................................... 4 TPICOS DO SEMESTRE ............................................................................................................................ 4 METODOLOGIA ......................................................................................................................................... 4 AVALIAO.............................................................................................................................................. 4 DATAS IMPORTANTES............................................................................................................................... 5 BIBLIOGRAFIA BSICA ............................................................................................................................. 5 BIBLIOGRAFIA COMPLEMENTAR .............................................................................................................. 5 1. INTRODUO LGICA ................................................................................................................ 6 2. ALGORITMOS ...................................................................................................................................... 9 2.1. FORMAS DE REPRESENTAO DE UM ALGORITMO ........................................................................... 10 3. FLUXOGRAMA .................................................................................................................................. 11 4. PSEUDOCDIGO ............................................................................................................................... 16 5. LINGUAGEM C................................................................................................................................... 20 5.1. BREVE HISTRICO ........................................................................................................................... 20 5.2. AMBIENTE DE DESENVOLVIMENTO.................................................................................................. 20 5.3. TIPOS DE DADOS .............................................................................................................................. 22 5.4. DECLARAO DE VARIVEIS .......................................................................................................... 22 5.5. OPERADORES ................................................................................................................................... 23 5.5.1. Atribuio ............................................................................................................................... 23 5.5.2. Aritmticos .............................................................................................................................. 23 5.5.3. Incremento e Decremento ....................................................................................................... 24 5.5.4. Aritmtico de Atribuio ......................................................................................................... 24 5.5.5. Relacionais.............................................................................................................................. 24 5.5.6. Lgicos - && - E..................................................................................................................... 24 5.5.7. Lgicos - || - OU ..................................................................................................................... 25 5.5.8. Lgicos - ! NO ................................................................................................................... 25 5.5.9. Condicional Ternrio.............................................................................................................. 25 5.5.10. Tabela de Precedncia .......................................................................................................... 25 6. ESTRUTURA SEQUENCIAL ............................................................................................................ 26 6.1. SADA DE DADOS ............................................................................................................................. 26 7.1.1. printf() ..................................................................................................................................... 26 6.1.2. puts() ....................................................................................................................................... 30 6.1.3. putchar() ................................................................................................................................. 32 6.2. ENTRADA DE DADOS ....................................................................................................................... 34 6.2.1. scanf() ..................................................................................................................................... 34 6.2.2. gets() ....................................................................................................................................... 36 6.2.3. getchar().................................................................................................................................. 37 6.2.4. getche() ................................................................................................................................... 38 6.2.5. getch() ..................................................................................................................................... 40 7. ESTRUTURA DE DECISO .............................................................................................................. 45 7.1. IF() ................................................................................................................................................... 45 7.2. IF() ELSE .......................................................................................................................................... 47 7.3. ENCADEAMENTO DE IF() .................................................................................................................. 50 7.4. SWITCH() ......................................................................................................................................... 53 8. ESTRUTURA DE REPETIO ........................................................................................................ 67 8.1. FOR() ............................................................................................................................................... 67 8.2. WHILE() ........................................................................................................................................... 73 8.3. DO... WHILE() ................................................................................................................................... 76
8.4. COMANDO BREAK ........................................................................................................................... 78 8.5. COMANDO CONTINUE ...................................................................................................................... 79 APNDICE A BIBLIOTECAS ............................................................................................................ 82 APNDICE B - FUNES MATEMTICAS ..................................................................................... 83 APNDICE C PALAVRAS RESERVADAS NA LING. C ............................................................... 84
Apresentao da Disciplina
Nome da Disciplina: Computao Professora MSc. Viviane Guimares Ribeiro E-mail: viviane_umc@yahoo.com.br
Ementa
Conceitos de algoritmo, programao estruturada utilizando a Linguagem C e tcnicas de programao estruturada.
Objetivo da Disciplina
Ao final do semestre letivo o aluno dever ter as habilidades, os conhecimentos e as competncias em informtica necessrias para que possa utilizar o computador como ferramenta na vida acadmica e profissional. Alm disso, o aluno dever ter conhecimento em conceitos bsicos de programao estruturada.
Tpicos do Semestre
1) 2) 3) 4) 5) 6) 7) 8) 9) 10) 11) 12) 13) 14) 15) 16) 17) 18) Algoritmo e Programao Estruturada: Conceitos Representao de Algoritmos: Descrio Narrativa Representao de Algoritmos: Fluxograma Representao de Algoritmos: Pseudocdigo / Portugus Estruturado / Portugol Estruturas de Controle: Sequencial Estruturas de Controle: Deciso Simples e Composta Estruturas de Controle: Deciso Encadeada e Multipla Escolha Estrutura de Repetio com Varivel de Controle Estrutura de Repetio com Teste no Incio e no Fim Linguagem C: Conceitos Linguagem C: Comandos de Entrada e Sada Linguagem C: Comando de Deciso Simples e Composta - if Linguagem C: Comando de Deciso de Mltipla Escolha - switch Linguagem C: Comando de Repetio - for Linguagem C: Comando de Repetio - while Linguagem C: Comando de Repetio - do.. while Linguagem C: Uso dos comandos break e continue Linguagem C: Vetores e MatrizesIntroduo Lgica
Metodologia
Aulas expositivas e prticas com acompanhamento dos alunos nos computadores. Exerccios de fixao.
Avaliao
M1 = P1(70%) + AP(20%) + Listas(10%) ND = P1(70%) + AP(20%) + Listas(10%) M2 = 0,7*ND + 0,3*PI
Onde: P1 e P2 so provas individuais agendadas. AP so as atividades prticas realizadas em sala (sem a necessidade de agendamento prvio) ou em casa. PI nota da Prova Integrada (conforme instruo normativa UMC 002/2010). Listas exerccios individuais realizados em casa entregues em datas prestabelecidas.
Datas Importantes
P1 02/10 P2 04/12 Recuperao 18/12 OBS1: No ser aplicada prova substitutiva. OBS2: A disciplina tem carter acumulativo, portanto em todas as provas ser cobrado todo o contedo estudado at o momento no semestre.
Bibliografia Bsica
SALIBA, Walter Luiz Caram, Tcnicas de Programao: Uma abordagem estruturada, Makron Books, So Paulo, 1993-2005. GUIMARES, ngelo de Moura; LAGES, Newton Alberto de Castilho, Algoritmos e Estruturas de Dados, Livros Tcnicos e Cientficos, Rio de Janeiro, 1994. BOENTE, Alfredo, Aprendendo a programar em linguagem C do bsico ao avanado, Brasport, Rio de Janeiro, 2003. PEREIRA, Silvio do Lago, Algoritmo e Lgica de Programao em C: uma abordagem didtica, Editora rica, So Paulo, 2010.
Bibliografia Complementar
SCHILDT, Herbert, C completo e total, Pearson Makron Books, So Paulo, 2004. FARRER, H. et all, Algoritmos Estruturados, Livros Tcnicos e Cientficos, Rio de Janeiro, 1999. MANZANO, Jos Augusto Navarro Garcia; OLIVEIRA, Jayr Figueiredo de, Algoritmos: Lgica para desenvolvimento de programao de computadores, Editora rica, So Paulo, 2004. HICKSON, Rosngela, Aprenda a programar em C, C++ e C#, Editora Campus, Rio de Janeiro, 2002. CHILDT, Herbert, Linguagem C: Guia do usurio, McGraw-Hill, So Paulo, 1986.
1. Introduo Lgica
A palavra lgica originria do grego logos, que significa linguagem racional. De acordo com o dicionrio Michaelis, lgica a anlise das formas e leis do pensamento, mas no se preocupa com a produo do pensamento, quer dizer, no se preocupa com o contedo do pensamento, mas sim com a forma deste, isto , com a maneira pela qual um pensamento ou uma ideia so organizados e apresentados, possibilitando que cheguemos a uma concluso por meio do encadeamento dos argumentos. Os argumentos podem ser dedutivos ou indutivos. Os argumentos indutivos so aqueles com que, a partir dos dados, se chega a uma resposta por meio da analogia, ou seja, pela comparao com algo conhecido, porm esse tipo de raciocnio no oferece certeza de que a resposta ser de fato verdadeira. necessrio conhecer os fatos ou as situaes para que se possa fazer a comparao. Por exemplo: ontem no havia nuvens no cu e no choveu. Hoje no h nuvens no cu, portanto no vai chover. J os argumentos dedutivos so aqueles cuja concluso obtida como conseqncia das premissas, isto , por meio da anlise das situaes ou fatos, pode-se obter a resposta. Trabalha-se com a forma das sentenas, sem que haja a necessidade do conhecimento prvio das situaes ou fatos. Por exemplo: Joana uma mulher. As mulheres so seres humanos. Logo, Joana um ser humano. Desde os tempos primitivos o homem utiliza-se do raciocnio lgico para a realizao de suas atividades. Isso comprovado pelo fato de ele ter estabelecido sequncias adequadas para a realizao de suas tarefas com sucesso. Podemos citar alguns exemplos relacionados s suas atividades do dia a dia: Uma pessoa adulta, para tomar banho, primeiro tira a roupa para no molh-la e tambm para estabelecer contato direto entre sua pele e a gua. Uma criana, desde pequena, aprende que, para chupar uma bala, preciso tir-la da embalagem. A lgica aplicada a diversas cincias. Na informtica e na computao, aplica-se a todas as suas reas, para a construo e funcionamento do hardware e do software. Por exemplo, na construo de um circuito integrado para o teclado, trabalha-se com o conceito de portas lgicas para a verificao da passagem ou no de pulsos eltricos, a fim de que seja estabelecida uma comunicao entre os componentes. J na construo de software, por meio do raciocnio lgico que o homem constri algoritmos que podem ser transformados em programas de computador capazes de solucionar problemas cada vez mais complexos. Como foi visto anteriormente, a lgica preocupa-se com a forma da construo de pensamento. Isto permite que se trabalhe com variveis para que se possa aplicar o mesmo raciocnio a diferentes problemas. Por exemplo: Joo cientista. Todo cientista estudioso. Logo, Joo estudioso. Substituindo as palavras Joo e estudioso por A e B: A cientista. Todo cientista B. Logo, A B. O raciocnio lgico nos conduz a uma resposta que pode ser verdadeiro ou falso. Na construo de algoritmos para a soluo de problemas computacionais, trabalha-se com esse tipo de raciocnio. As informaes a serem analisadas so representadas por variveis que posteriormente recebero valores. As variveis, por sua vez, representaro as premissas. Por exemplo: Dados dois valores quaisquer, deseja-se saber qual o maior. Os dois valores so representados pelas variveis A e B. Analisa-se o problema a fim de averiguar qual a melhor maneira de descobrir a soluo, ento se monta a sequncia para
Exerccios
1. Dadas as premissas a seguir, verifique quais so as sentenas que representam a concluso correta: I- Cavalos so animais. Animais possuem patas, Logo: a. Cavalos possuem patas. b. Todos os animais so cavalos. c. Os cavalos possuem quatro patas. II- Retngulos so figuras que tm ngulos. Temos uma figura sem nenhum ngulo. Logo: a. Essa figura pode ser um circulo. b. No possvel tirar concluses. c. Essa figura no um retngulo. III- Se o verde forte, o vermelho suave. Se o amarelo suave, o azul mdio. Mas ou o verde forte ou o amarelo suave. Forte, suave e mdio so as nicas tonalidades possveis. Logo: a. O azul mdio. b. Ou o vermelho suave ou o azul mdio. c. O amarelo e o vermelho so suaves. 2. Sabe-se que existem pessoas desonestas e que existem corruptos. Admitindo-se verdadeira a frase Todos os corruptos so desonestos, correto concluir que: a. quem no corrupto honesto. b. existem corruptos honestos. c. alguns honestos podem ser corruptos. d. existem mais corruptos do que honestos. e. existem desonestos que so corruptos. 3. Se verdade que Alguns A so R e que Nenhum G R, ento necessariamente verdadeiro que: a. algum A no G. b. algum A G. c. nenhum A G. d. algum G A. e. nenhum G A. 4. Em uma comunidade, todo trabalhador responsvel. Todo artista, se no for filsofo, ou trabalhador ou poeta. Ora, no h filsofo e no h poeta que no seja responsvel. Portanto, tem-se que, necessariamente: a. todo responsvel artista. b. todo responsvel filsofo ou poeta.
2. Algoritmos
Um algoritmo uma sequncia de aes finitas encadeadas e lgicas que devem ser seguidas para a resoluo de um problema ou para a execuo de uma tarefa. Os algoritmos so amplamente utilizados nas disciplinas ligadas rea de cincias exatas. No dia a dia, as pessoas utilizam-se de algoritmos de maneira intuitiva, sem que haja a necessidade de planejar previamente a sequncia de passos para a resoluo das tarefas quotidianas. Dentre os inmeros exemplos existentes, podemos citar: 1. Quando uma pessoa prepara um bolo, segue uma receita, que nada mais do que um algoritmo em que casa instruo um passo a ser seguido para que o prato fique pronto com sucesso: Bata 4 claras em neve; Adicione 2 xcaras de acar; Adicione 2 xcaras de farinha de trigo, 4 gemas, 1 colher de fermento e 2 colheres de chocolate; Bata por 3 minutos; Unte uma assadeira com margarina e farinha de trigo; Coloque o bolo para assar durante 20 minutos em temperatura mdia. 2. Um motorista que necessita efetuar a troca de um pneu furado segue uma rotina para realizar esta tarefa: Verifica qual pneu est furado; Posiciona o macaco para levantar o carro; Pega o estepe; Solta os parafusos; Substitui o pneu furado; Recoloca os parafusos; Desce o carro; Guarda o pneu furado e as ferramentas utilizadas. Porm, no contexto da cincia da computao, estamos interessados em definir algoritmos que sero executados por computadores e no por pessoas. Assim, ao definir um algoritmo computacional, precisamos nos restringir a um conjunto bastante limitado de passos (ou operaes) que um computador capaz de executar. Alm disso, precisamos de uma notao que permita descrever precisamente estes passos, sem nenhuma ambiguidade. Ao montar um algoritmo, precisamos primeiro dividir o problema apresentado em trs fases fundamentais: entrada de dados, processamento e sada de dados.
Entrada
Processamento
Sada
Entrada: so os dados necessrios para o inicio do processamento. Processamento: so procedimentos que utilizam os dados de entrada para chegar ao resultado final. Sada: so os dados j processados. A figura a baixo faz uma analogia entre o processamento computacional e o humano.
Imagine o seguinte problema: Calcular a mdia final de um aluno. Pelas provas os alunos recebero 2 notas: N1, N2. Onde: Mdia Final = (nota1 + nota2 * 2 )/3 a) Quais so os dados de entrada? R: Os dados de entrada so nota1 e nota2. b) Qual ser o processamento a ser utilizado? R: O procedimento ser multiplicar a nota2 por dois, somar o resultado com o valor da nota1 e dividir o resultado da soma por 3. c) Quais sero os dados de sada? R: O dado de sada ser a mdia final
10
3. Fluxograma
uma representao grfica de algoritmos onde formas geomtricas diferentes implicam aes (instrues, comandos) distintas. Tal propriedade facilita o entendimento das ideias contidas nos algoritmos e justifica sua popularidade. A seguir so apresentados os principais smbolos e suas descries. importante lembrar que existem pequenas diferenas entre as simbologias utilizadas pelos diferentes autores.
Incio/Fim
Fluxo de Dados
ou Entrada de dados
ou
Sada de dados ou
Atribuio
Conector
11
Se
Escolha
Deciso
12
Para
Enquanto
Repetio
Repita
Em um fluxograma, os passos de um algoritmo so representados por smbolos e a ordem de execuo desses passos representada por setas conectando os smbolos. Cada smbolo pode conter uma anotao indicando sua finalidade especfica.
13
Note que todo dado manipulado pelo computador deve estar armazenado em alguma posio de sua memria. Uma posio de memria contendo um dado que pode ser alterado pelo algoritmo denominada varivel. Basicamente uma varivel possui trs atributos: um nome, um tipo de dado associado mesma e a informao por ela guardada. Toda varivel possui um nome que tem a funo de diferenci-la das demais. Cada linguagem de programao estabelece suas prprias regras de formao de nomes de variveis. Adotaremos as seguintes regras: Um nome de varivel deve necessariamente comear com uma letra; Um nome de varivel no deve conter nenhum smbolo especial, exceto a sublinha ( _ ). Obviamente interessante adotar nomes de variveis relacionados s funes que sero exercidas pelas mesmas dentro de um programa. Outro atributo caracterstico de uma varivel o tipo de dado que ela pode armazenar. Este atributo define a natureza das informaes contidas na varivel. Por ltimo, h o atributo informao, que nada mais do que a informao til contida na varivel. Uma vez definidos, os atributos nome e tipo de dados de uma varivel no podem ser alterados e assim permanecem durante toda a sua existncia, desde que o programa que a utiliza no seja modificado. Por outro lado, o atributo informao est constantemente sujeito a mudanas, de acordo com o fluxo de execuo do programa. Por exemplo, se definirmos que uma determinada varivel chamada salrio e destinada a guardar nmeros reais, possvel que seu contedo seja, num dado instante, igual a 1.500,00 e posteriormente modificado para 3.485,21, de acordo com o programa executado.
14
Exerccios
1. Explique o que uma varivel e escreva a regra para criao de nome de variveis em algoritmos. 2. Dados os identificadores (nomes das variveis) abaixo, sublinhe apenas aqueles nomes que so aceitos em Algoritmos.
3. Escreva um algoritmo em Fluxograma para cada situao abaixo: a) Carlos precisa calcular a rea de uma sala. Sabe-se que a sala retangular. b) O professor de matemtica precisa calcular a mdia de um aluno. Para tanto ele precisa levar em considerao 4 notas do aluno. c) Ler um nmero inteiro e imprimir seu sucessor e seu antecessor. d) Ler o saldo de uma aplicao e imprimir o novo saldo, considerando um reajuste de 1%. e) Ler duas variveis inteiras e trocar o contedo entre elas apresentando o nome de cada varivel com seu respectivo valor ao usurio. f) O preo de um produto ao consumidor a soma do preo de custo e da porcentagem do imposto. Faa um algoritmo que leia o nome do produto, o custo de fbrica e a porcentagem do imposto. Exiba o nome do produto e o preo final ao consumidor.
15
4. Pseudocdigo
O pseudocdigo um tipo de algoritmo que utiliza uma linguagem flexvel, intermediria entre a linguagem natural e a linguagem de programao. Aqui, cada smbolo utilizado no fluxograma possui uma palavra chave equivalente, o que torna o fluxograma livre de ambiguidades. Esta forma de representao de algoritmos mais rica em detalhes, como a definio dos tipos das variveis usadas. Na verdade, esta representao suficiente para permitir que a traduo de um algoritmo nela representado para uma linguagem de programao especfica seja praticamente direta. Forma geral: Algoritmo <nome do algoritmo>; <declarao de variveis>; <subalgoritmos> Incio <corpo do algoritmo>; Fim
Exemplo 1: Algoritmo Media; Var nota1, nota2, mf: real; Inicio Escreva (Entre com a primeira nota: ); Leia (nota1); Escreva (Entre com a segunda nota: ); Leia (nota2); mf (nota1 + nota2 * 2) / 3; Escreva (Mdia final: , mf); Fim Identificao do algoritmo Declarao de variveis
Corpo do algoritmo
Para definir o nome de um algoritmo, deve-se seguir a mesma regra para criao de nomes de variveis, ou seja, o nome do algoritmo deve iniciar com uma letra e no conter caracteres especiais. Todas as variveis utilizadas no algoritmo devem ser declaradas. neste momento que definimos o nome da varivel e o tipo de dado que ser armazenado na mesma. Na confeco de algoritmos, utilizamos os tipos de dados primitivos (literal, lgico, inteiro e real), uma vez que os algoritmos apenas representam a soluo dos problemas. J na confeco de programas existem desdobramentos para esses tipos de dados a fim de adequ-los melhor ao propsito de cada linguagem e resoluo prtica dos problemas. Veja na tabela a seguir os tipos de dados primitivos utilizados em algoritmos. Tipo de Dados inteiro Definio Representa nmeros inteiros (sem casas decimais) positivos ou negativos. Representa nmeros reais (com casas decimais) positivos ou negativos. Poder receber letras, nmeros e smbolos. OBS: Os nmeros armazenados Capacidade de armazenamento 8 8 2 bytes = 2 x 2 = 65.536 possibilidades (-32.768 32.767). 4 bytes = 2 x 2 x 2 x 2 = 4.294.967.296 possibilidades (-3,4E-38 +3,4E+38). 1 byte para cada caracter necessrio.
8 8 8 8
real
literal
16
lgico
em uma varivel cujo tipo de dado literal no podem ser utilizados para clculo. Poder ser verdadeiro (1) ou falso (0)
1 byte
O corpo do algoritmo a rea reservada para a resoluo do problema. Nesta parte, devem-se escrever todos os passos lgicos necessrios para solucionar o problema, tais como: representar a entrada de valores para as variveis; representar as operaes de atribuio, lgicas e aritmticas; representar a abertura e fechamento de arquivos; representar os laos de repetio; representar a exibio dos resultados; representar as estruturas de deciso; entre outros. Incio/Fim
Incio Fim
Entrada de dados
Leia (<varivel>);
Sada de dados
Atribuio
<varivel> <valor>; Se Se (<condio>) Ento <Comando 1>; Seno <Comando 2>; Fim_Se Escolha
Deciso
Escolha (<varivel>) Caso <valor_1>: <Comando 1>; Caso <valor_2>: <Comando 2>; ..... Caso <valor_n>: <Comando n>; Seno <Comando n + 1>; Fim_Escolha
17
Para Para <var> de <incio> at <fim> incr de <inc> faa <comando>; Fim_Para Enquanto Repetio Enquanto (<condio>) faa <comando>; Fim_Enquanto Repita Repita <comando>; at que (<condio>);
Exerccios
1.
Classifique os dados especificados abaixo de acordo com seu tipo (inteiro, real, literal ou lgico).
-0.0 abc .F. -0.0 +36 -1
2. Preencha a Declarao de variveis com o tipo de dados, levando em considerao os dados armazenados em cada uma das variveis da tabela abaixo: Identificadores Contedo (Dados) num1 100 num2 4 sexo F letra .V. Profissao Mdico nome Fernanda media 5.7 peso 67.8
Var num1, num2: ________________________________ sexo: ______________________________________ letra: _______________________________________ Profissao,nome: ______________________________ media, peso: _________________________________
18
3. Escreva um algoritmo em Pseudocdigo para cada situao abaixo: a. O professor de matemtica precisa calcular a mdia de um aluno. Para tanto ele precisa levar em considerao 4 notas do aluno. b. Ler um nmero inteiro e imprimir seu sucessor e seu antecessor. c. Ler duas variveis inteiras e trocar o contedo entre elas apresentando o nome de cada varivel com seu respectivo valor ao usurio.
d. O preo de um produto ao consumidor a soma do preo de custo e da porcentagem do imposto. Faa um algoritmo que leia o nome do produto, o custo de fbrica e a porcentagem do imposto. Exiba o nome do produto e o preo final ao consumidor. e. Dados o tamanho de um arquivo (em bits), bem como a velocidade da conexo (em bits por segundo), informe o tempo necessrio para o download do arquivo. f. Dados um capital C, uma taxa de juros mensal fixa J e um perodo de aplicao em M meses M, informe o montante F no final do perodo (F = C * (1 + J/100) ).
19
5. Linguagem C
Para que um computador possa desempenhar uma tarefa necessrio que esta seja detalha passo a passo, numa forma compreensvel pela mquina, utilizando aquilo que se chama de programa. Neste sentido, um programa nada mais que um algoritmo escrito numa forma compreensvel pelo computador. Um programa pode ser escrito em diversas linguagens de programao, como por exemplo: Pascal, Fortran, COBOL, Clipper, Basic, C, etc. Durante este semestre iremos estudar a linguagem C.
20
21
4 8 1 1
22
5.5. Operadores
Um operador um smbolo usado para criar expresses, a partir de constantes e variveis.
5.5.1. Atribuio
o sinal de igual (=). Atribui a expresso da direita varivel sua esquerda. Em C podem ocorrer atribuies mltiplas. Operao Atribuio Ex.: y = 3; y = x = 3; y = ( x = 3 ); Algoritmo Linguagem C =
5.5.2. Aritmticos
Existem operadores denominados binrios (trabalham com dois operandos) e unrios (funcionam com um operando).
23
Operadores aritmticos unrios Operao Menos unitrio (mult. o valor ou varivel por -1) Algoritmo Linguagem C -
5.5.5. Relacionais
Operao Maior Maior ou igual Menor Menor ou igual Igual Diferente Algoritmo > >= < <= = <> Linguagem C > >= < <= == !=
24
5.5.7. Lgicos - || - OU
Resulta 0 (F) somente se as duas expresses forem falsas. A 0 0 1 1 B 0 1 0 1 Algoritmo A ou B 0 1 1 1 Linguagem C A||B 0 1 1 1
5.5.8. Lgicos - ! NO
Resulta 1 (V) somente se a expresso for falsa. A 0 0 1 1 B 0 1 0 1 Algoritmo no A no B 1 1 1 0 0 1 0 0 Linguagem C !A !B 1 1 1 0 0 1 0 0
Maior
Menor
25
6. Estrutura Sequencial
As operaes de entrada e sada de dados permitem a interao de um programa e/ou algoritmo com o usurio, seja permitindo que o mesmo digite valores (entrada de dados) ou exibindo informaes (sada de dados). Estas operaes so representadas tanto em algoritmos (fluxograma e pseudocdigo) quanto em linguagem C.
Escreva (x);
Em linguagem C, existem 3 funes (comandos) diferentes que permitem a sada de dados: printf(), puts() e putchar().
7.1.1. printf()
O printf() uma funo utilizada para sada de informaes. a funo mais genrica de sada de dados, pois pode ser usado em qualquer situao. A funo printf() requer a utilizao dos cdigos de formatao de tipos de variveis. Cdigo printf() %c %d %e %f %g %o %s %u %x %% Formato Apenas um caracter. Decimal inteiro. Notao cientfica. Ponto flutuante float ou double. %e ou %f (o mais curto). Octal. Cadeia de caracteres String. Decimal sem sinal. Hexadecimal. Coloca na tela um %
Alm dos cdigos de formatao a funo printf() permite a utilizao de cdigos especiais para a exibio de caracteres especficos.
26
Cdigos especiais \n \t \b \ \ \\ \f \0 \x \a
Significado Nova linha. Tab. Retrocesso. Aspas. Apstrofo. Barra invertida. Salta pgina de formulrio. Nulo. Mostra caracter hexadecimal. Produz o som de um beep.
Exemplo 1: Fluxograma Algoritmo Algoritmo Exemplo1; Var x: inteiro; Inicio x 2; Escreva (Tenho ,x, irmos.); Fim
Linguagem C
Tela
27
Linguagem C
Tela
Exemplo 3: Fluxograma Algoritmo Algoritmo Exemplo3; Inicio Escreva (A letra j ); Escreva (pronuncia-se jota); Fim
28
Linguagem C
Tela
29
6.1.2. puts()
Representa a sada de uma nica literal por vez, seguida do caracter de nova linha, ou seja, a funo muda de linha automaticamente sem que haja a necessidade do pressionamento da tecla de entrada de dados, ENTER.
Linguagem C
Tela
Exemplo 5: Fluxograma Algoritmo Algoritmo Exemplo5; Inicio Escreva (Digite seu nome); Fim
30
Linguagem C
Tela
31
6.1.3. putchar()
Representa a sada de apenas um caracter na tela do computador e no acrescenta uma nova linha automaticamente. As duas instrues seguintes so equivalentes. putchar(w); printf(%c, w); Exemplo6: Fluxograma Algoritmo Algoritmo Exemplo6; Inicio Escreva (A primeira letra ); Escreva (do alfabeto ... ); Escreva (a); Fim
Linguagem C
32
Tela
Neste exemplo foi utilizada a biblioteca <conio.h> que permite ao programador usar a funo clrscr() para limpar a tela do computador e a funo gotoxy(COL,LIN) para posicionar o cursor em um ponto de coluna e linha na tela do computador. Note que, segundo a conveno adotada pelo compilador Pelles C, todas as funes que no so padro em C tm seus nomes iniciados com um caracter de sublinha ( _ ).
33
Leia (x);
Leia (nome);
Em linguagem C, existem 5 funes (comandos) diferentes que permitem a entrada de dados: scanf(), gets(), getchar(), getche() e getch().
6.2.1. scanf()
utilizada para permitir ao usurio realizar uma entrada de dados, geralmente atravs do teclado. Assim como a funo printf() requer a utilizao dos cdigos de formatao de tipos de variveis. Cdigo printf() %c %d %e %f %g %o %s %u %x Formato Apenas um caracter. Decimal inteiro. Notao cientfica. Ponto flutuante float ou double. %e ou %f (o mais curto). Octal. Cadeia de caracteres. Decimal sem sinal. Hexadecimal.
34
Linguagem C
Tela
Na funo scanf() utiliza-se o & antes de cada varivel para indicar o endereo de memria no qual o contedo da varivel estar armazenado. Este de uso obrigatrio quando tratamos variveis do tipo numrico (inteira ou real).
35
6.2.2. gets()
Essa funo processa tudo que foi digitado at que a tecla ENTER seja pressionada. O caracter ENTER no acrescentado literal, mas sim identificada como trmino da mesa. Exemplo 8: Fluxograma Algoritmo Algoritmo Nome; Var nome: literal[35]; Inicio Escreva (Digite seu nome: ); Leia (nome); Escreva (Como vai , nome); Fim
Linguagem C
Tela
36
6.2.3. getchar()
Essa funo utilizada quando queremos efetuar a entrada de apenas um caracter, no dispensando a necessidade de se pressionar a tecla ENTER para finalizar. Exemplo 9: Fluxograma Algoritmo Algoritmo Tecla1; Var ch: literal[1]; Inicio Escreva (Digite uma tecla: ); Leia (ch); Escreva (A tecla que voc pressionou foi , ch); Fim
Linguagem C
37
Tela
6.2.4. getche()
Essa funo edita um caracter do teclado e permite que ele seja mostrado na tela do computador. dispensvel o pressionamento da tecla ENTER por parte do usurio. Isso j ocorre de forma automtica. Exemplo 10: Fluxograma Algoritmo Algoritmo Tecla1; Var ch: literal[1]; Inicio Escreva (Digite uma tecla: ); Leia (ch); Escreva (A tecla que voc pressionou foi , ch); Fim
Linguagem C
38
Tela
39
6.2.5. getch()
Essa funo permite que o usurio fornea um caracter atravs do teclado. Este caracter no ser mostrado na tela do computador. Tambm dispensvel o pressionamento da tecla ENTER. Esta funo tambm atende necessidade como recurso de parada temporria da execuo do programa. Exemplo 11: Fluxograma Algoritmo Algoritmo Tecla1; Var ch: literal[1]; Inicio Escreva (Digite uma tecla: ); Leia (ch); Escreva (A tecla que voc pressionou foi , ch); Escreva (A funo getch() causou uma pausa no programa.); Fim
Linguagem C
40
Tela
41
Exerccios
1. Observe o fluxograma abaixo e escreve o pseudocdigo equivalente.
2. Criar um algoritmo (Fluxograma e Pseudocdigo) e o programa em linguagem C para calcular o valor de y como funo de x, segundo a funo y(x)=3x+2, em um domnio real. 3. Criar um algoritmo (Fluxograma e Pseudocdigo) e o programa em linguagem C que calcule o consumo mdio de um automvel (medido em km/l), dado que so conhecidos a distncia total percorrida e o volume de combustvel consumido para percorr-la (medido em litros). 4. Criar um algoritmo (Fluxograma e Pseudocdigo) e o programa em linguagem C para calcular o quadrado de um nmero inteiro. 5. Considerando o programa abaixo execute a simulao (teste de mesa), preenchendo a tabela conforme os valores de entrada lanados em cada linha. X 2 5 1 10 Y 5 8 12 4 F
#include <stdio.h> main() { float X, Y, F; printf ("Entre com o valor de x: "); scanf ("%f", &X); printf ("Entre com o valor de y: "); scanf ("%f", &Y); F = (2 * X) + 3 * (Y * Y); printf ("Funcao = %.2f\n", F); }
42
a) ( ) #include<stdio.h> main(){ float c, l, p, t; printf("Medidas? "); scanf("%d %d", &l, &c); printf("Preco m2? "); scanf("%d",&p); t = c*l*p; printf("Custo total R$ %.2d\n",t); } c) ( ) #include<stdio.h> main(){ float c, l, p, t; printf("Medidas? "); scanf("%f %f", &l, &c); printf("Preco m2? "); scanf("%f",&p); t = c*l*p; printf("Custo total R$ %.2f\n",t); }
b) ( ) #include<stdio.h> main(){ int c, l, p, t; printf("Medidas? "); scanf("%f %f", &l, &c); printf("Preco m2? "); scanf("%f",&p); t = c*l*p; printf("Custo total R$ %.2f\n",t); } d) ( ) #include<stdio.h> main(){ float c, l, p, t; printf("Medidas? "); scanf("%f %f", l, c); printf("Preco m2? "); scanf("%f",&p); t = c*l*p; printf("Custo total R$ %.2d\n",t); }
7. Criar um algoritmo (Fluxograma e Pseudocdigo) e o programa em linguagem C que leia o saldo de uma aplicao e imprimir o novo saldo, considerando um reajuste de 15%. 8. Criar um algoritmo (Fluxograma e Pseudocdigo) e o programa em linguagem C que receba o salrio de um funcionrio e o percentual de aumento, calcule e mostre o valor do aumento e o novo salrio. 9. Criar um algoritmo (Fluxograma e Pseudocdigo) e o programa em linguagem C que calcule 2 e mostre a rea de um circulo. Sabe-se que: R . 10. Criar um algoritmo (Fluxograma e Pseudocdigo) e o programa em linguagem C que receba o ano de nascimento de uma pessoa e o ano atual, calcule e mostre: - A idade desta pessoa hoje; - A idade desta pessoa em 2015. 11. Criar um algoritmo (Fluxograma e Pseudocdigo) e o programa em linguagem C que converta segundos em minutos e segundos. Por exemplo, 252 segundos equivalem a 4 minutos e 12 segundos.
43
A) ( ) #include<stdio.h> main() { float a,b; printf(Digite um nmero: ); scanf(%f, &a); a = a % 100; printf(%f,b); } B) ( ) #include<stdio.h> main() { int a,b; printf(Digite um nmero: ); scanf(%d, a); a = a % 100; printf(%d,b); } C) ( ) #include<stdio.h> main() { int a,b; printf("Digite um numero: "); scanf("%d", &a); b = a % 100; printf("%d",b); }
44
7. Estrutura de Deciso
Neste tipo de estrutura o fluxo de instrues a ser seguido escolhido em funo do resultado da avaliao de uma ou mais condies. Uma condio uma expresso lgica. A classificao das estruturas de deciso feita de acordo com o nmero de condies que devem ser testadas para que se decida qual o caminho a ser seguido. Tm-se 2 tipos de estrutura de deciso: Se; Escolha. Em linguagem C, o equivalente ao Se a funo if() e o equivalente ao Escolha a funo switch().
7.1. if()
Nesta estrutura uma nica condio (expresso lgica) avaliada. Se o resultado desta avaliao for verdadeiro (.V.), ento um determinado conjunto de instrues (comandos compostos) executado. Caso contrrio, ou seja, quando o resultado da avaliao for falso (.F.), nada executado e o fluxo de execuo segue para o primeiro comando aps o fim da estrutura. Fluxograma
45
Linguagem C
Tela
46
Pseudocdigo Se (condio) Ento Comando 1; Seno Comando 2; Fim_Se Linguagem C if (condio) { Comando 1; } else { Comando 2; }
47
Exemplo 2: Fluxograma
Algoritmo Algoritmo Exemplo2; Var salario: real; Inicio Escreva (Entre com o salario: ); Leia (salario); Se (salrio>50000) ento Escreva (Voc ganha bem); seno Escreva (Voc precisa ganhar mais); Fim_Se Fim Linguagem C
Tela
48
49
Pseudocdigo Algoritmo Encadeamento; Var num: inteiro; Inicio Escreva (Entre com um nmero: ); Leia (num); Se (num = 0) Ento Escreva (Nmero zero.); Seno Se ( num < 0) Ento Escreva (Nmero negativo.); Seno Escreva (Nmero positivo.); Fim_Se Fim_Se Fim
50
Linguagem C
Tela
51
Exerccios 1. Criar um algoritmo (Fluxograma e Pseudocdigo) e o programa em linguagem C que pea para o usurio informar dois nmeros inteiros. Ao final do processamento, imprimir qual o maior e o menor desses nmeros. 2. Criar um algoritmo (Fluxograma e Pseudocdigo) e o programa em linguagem C que pea para o usurio informar trs nmeros inteiros. Ordenar estes nmeros de forma crescente e apresentar o resultado na tela. 3. Criar um algoritmo (Fluxograma e Pseudocdigo) e o programa em linguagem C para ler um nmero real, se este nmero for negativo, transforme-o em positivo e exiba o resultado ao operador. 4. Criar um algoritmo (Fluxograma e Pseudocdigo) e o programa em linguagem C para ler um nmero real equivalente ao comprimento de uma pea. Verificar se o valor lido encontra-se dentro da faixa de tolerncia especificada, informando o resultado ao operador (limite especificado: 20 0,000002 cm). 5. Criar um algoritmo (Fluxograma e Pseudocdigo) e o programa em linguagem C que efetue o clculo do reajuste de salrio de um funcionrio. Considere que o funcionrio dever receber um reajuste de 15% caso seu salrio seja menor que 500, se o salrio for maior ou igual a 500 e menor ou igual a 1000, seu reajuste ser de 10%, caso seja ainda maior que 1000, o reajuste dever ser de 5%. 6. Observe o fluxograma abaixo e escreve o programa em Linguagem C equivalente.
52
7. Criar um algoritmo (Fluxograma e Pseudocdigo) e o programa em linguagem C que leia trs nmeros e se o ltimo desses nmeros for menor ou igual a 5 ento ele faz a quarta varivel receber a subtrao das duas primeiras multiplicada pela terceira, se no, receber a soma das duas primeiras multiplicada pela terceira. Apresentar na tela os trs nmeros e o resultado. 8. Criar um algoritmo (Fluxograma e Pseudocdigo) e o programa em linguagem C que leia trs valores para os lados de um tringulo e verifique se eles formam um tringulo. Se formarem, dizer que tipo de tringulo ele : issceles, escaleno ou equiltero. 9. Criar um algoritmo (Fluxograma e Pseudocdigo) e o programa em linguagem C que receba um nmero inteiro e mostre em qual faixa de nmeros inteiros ele aparece: a. Abaixo de 15; b. Entre 15 e 35; c. Acima de 35. 10. Criar um algoritmo (Fluxograma e Pseudocdigo) e o programa em linguagem C que dada a idade de um nadador classifica-o em uma das seguintes categorias: Categoria Infantil A Infantil B Juvenil A Juvenil B Adulto Idade 5 - 7 anos 8 - 10 anos 11-13 anos 14-17 anos Maiores de 18 anos
7.4. switch()
A utilizao do switch oferece inmeras vantagens em relao a utilizao da estrutura ninho de ifs. Um exemplo prtico a facilidade de escrita de uma estrutura composta por mltiplas escolhas, que requer diversas alternativas, a partir de um certo programa de computador. Porm, a estrutura switch s pode ser utilizada quando estamos testando uma situao de igualdade para uma mesma varivel. Fluxograma
53
Pseudocdigo Escolha (varivel) Caso <valor_1> Comando 1; Caso <valor_2> Comando 2; ..... Caso <valor_n> Comando n; Seno Comando n + 1; Fim_escolha Linguagem C switch (varivel) { case valor_1: Comando 1; case valor_2: Comando 2; ....... case valor_n: Comando n; default: Comando n + 1; }
Exemplo 4: Fluxograma
54
Pseudocdigo Algoritmo Exemplo4; Var opcao: literal[1]; Inicio Escreva (Entre com uma letra: ); Leia (opcao); Escolha (opcao) caso A: Escreva (Letra A); caso B: Escreva (Letra B); caso C: Escreva (Letra C); caso D: Escreva (Letra D); seno: Escreva (No A, B, C nem D.); Fim_Escolha Fim Linguagem C
Tela
55
Nesta estrutura opcional a utilizao da clusula default para representar uma alternativa que significa Em nenhum dos casos anteriores. Tambm importante saber que a execuo do comando switch segue os seguintes passos: 1. A expresso avaliada. 2. Se o resultado da expresso for igual a uma constante, ento a execuo comear a partir do comando associado a essa constante e prossegue com a execuo de todos os comandos at o fim do switch, ou at que se encontre uma instruo de parada denominada break. 3. Se o resultado da expresso no for igual a nenhuma das constantes e j estiver sido includa no comando switch a opo default, o comando associado ao default ser executado. Caso contrrio, isto , se a opo default no estiver presente, o processamento continuar a partir do comando seguinte ao switch. Linguagem C
Tela
Os operadores lgicos apresentados no item 6.6.6, 6.6.7 e 6.6.8 so normalmente utilizados em conjuntos com a estrutura de deciso if(). A seguir so apresentados exemplos de programas que fazem uso destes operadores.
56
Exemplo 5: Fluxograma
Algoritmo Algoritmo Exemplo5; Var n1,n2: inteiro; Inicio Escreva (Digite dois nmeros: ); Leia (n1,n2); Se ((n1=0)e(n2=0)) ento Escreva (Voc forneceu apenas o nmero zeros); seno Escreva (Soma= , n1+n2); Fim_Se Fim
57
Linguagem C
Tela
58
Exemplo 6: Fluxograma
Algoritmo Algoritmo Exemplo6; Var n1,n2: inteiro; Inicio Escreva (Digite dois nmeros: ); Leia (n1,n2); Se ((n1<0ou(n2<0)) ento Escreva (Pelo menos um dos nmeros negativo); seno Escreva (Voc informou apenas nmeros positivos); Fim_Se Fim
59
Linguagem C
Tela
60
Exemplo 7: Fluxograma
Algoritmo Algoritmo Exemplo7; Var n: inteiro; Inicio Escreva (Digite um nmero: ); Leia (n); Se (nao(n<>0)) ento Escreva (n, igual de zero); seno Escreva (n, diferente a zero); Fim_Se Fim
61
Linguagem C
Tela
62
Exerccios 11. Criar um algoritmo (Fluxograma e Pseudocdigo) e o programa em linguagem C que pea para o usurio informar uma letra qualquer. No final do processamento, o programa dever informar se a letra vogal ou consoante. 12. Criar um algoritmo (Fluxograma e Pseudocdigo) e o programa em linguagem C que leia dois nmeros fornecidos pelo usurio e uma operao matemtica (soma, subtrao, multiplicao e diviso). Efetuar a operao matemtica escolhida utilizando os nmeros fornecidos e exibir o resultado. 13. Uma agncia bancria possui dois tipos de investimentos, conforme o quadro a seguir. Faa um algoritmo (Fluxograma e Pseudocdigo) e o programa em linguagem C que receba o tipo de investimento e o valor do investimento, calcule e mostre o valor corrigido de acordo com o tipo de investimento de todos os clientes do banco. Tipo 1 2 Descrio Poupana Fundos de renda fixa Rendimento mensal 3% 4%
14. Criar um algoritmo (Fluxograma e Pseudocdigo) e o programa em linguagem C que receba o cdigo correspondente ao cargo de um funcionrio e mostre o cargo: Cdigo 1 2 3 4 5 Cargo Escriturrio Secretria Caixa Gerente Diretor
15. Faa um algoritmo (Fluxograma e Pseudocdigo) e o programa em linguagem C para calcular a conta final de um hspede de um hotel fictcio, contendo: o nome do hspede, o tipo do apartamento, o nmero de dirias utilizadas, o valor unitrio da diria, o valor total das dirias, o valor do consumo interno, o subtotal, o valor da taxa de servio e o total geral. Considere que: a. Sero lidos o nome do hspede, o tipo do apartamento utilizado (A, B, C ou D), o nmero de dirias utilizadas pelo hspede e o valor do consumo interno do hspede; b. O valor da diria determinado pela seguinte tabela: TIPO DO APTO. A B C D VALOR DA DIRIA (R$) 150,00 100,00 75,00 50,00
c. O valor total das dirias calculado pela multiplicao do nmero de dirias utilizadas pelo valor da diria; d. O subtotal calculado pela soma do valor total das dirias e o valor do consumo interno; e. O valor da taxa de servio equivale a 10% do subtotal; f. O total geral resulta da soma do subtotal com a taxa de servio.
63
16. Analise os trechos de fluxogramas abaixo e informe o valor que ser exibido na tela para o usurio. Considere os seguintes valores: A = 2, B = 3, C = 5, D = 9.
.no. (D>5)
(A+B)*D
(A-B) div C
Sada
(A+2)*(B-2)
Sada
64
A+B - 7
D-C
Sada
D*A div C
C div (A - B)
Sada
65
(A = 2) .ou. (B < 7)
(A+2)*D
(A+B) div D
Sada
D*A
(A+B) div 2
Sada
66
8. Estrutura de Repetio
Essas estruturas so utilizadas para que uma parte de seu programa possa ser repetida n vezes sem a necessidade de reescrev-lo. Tambm so conhecidas como LOOP ou laos. Existem 3 estruturas de repetio na linguagem C: for (lao contado), equivalente ao Para; while (lao condicional), equivalente ao Enquanto; do... while (lao condicional), equivalente ao Repita.
8.1. for()
A ideia bsica do comando for que voc execute um conjunto de comandos, um nmero fixo de vezes, enquanto uma varivel de controle incrementada ou decrementada a cada passagem pelo loop. Fluxograma
Pseudocdigo Para <var> de <incio> at <fim> incr de <inc> faa Comando 1; Fim_para Linguagem C for ( <var> = <incio>; <condio sada> ; <inc> ) { Comando 1; }
Observe que dentro dos parnteses existem 3 expresses separadas por ponto-evirgula. A primeira expresso , normalmente, a inicializao da varivel de controle do for. A segunda expresso um teste lgico que, enquanto o resultado for verdadeiro, reflete em continuao do lao. A terceira expresso , normalmente, o incremento ou decremento da varivel de controle do for.
67
Exemplo 1: Fluxograma
Pseudocdigo Algoritmo Exemplo1; Var i: inteiro; Inicio Para i de 1 at 10 com incremento de 1 faa Escreva (i); Fim_Para Fim Linguagem C
68
Tela
Exemplo 2: Fluxograma
Pseudocdigo Algoritmo Exemplo2; Var i,j : inteiro; Inicio Para i de 1 at 10 com incremento de 1 faa Para j de 1 at 10 com incremento de 1 faa Escreva (i, x, j, =, i*j); Fim_Para Fim_Para Fim
69
Linguagem C
Tela
70
Veja, neste exemplo, que o lao externo(i) executa 10 vezes, enquanto o lao interno(j) executa 10 vezes para cada passagem do lao externo, totalizando assim, 10x10 = 100 vezes.
71
Exerccios 1. Considerando o fluxograma abaixo execute a simulao (teste de mesa), preenchendo a tabela conforme os valores de entrada lanados em cada linha. ant atual i prox
2. Criar um algoritmo (Fluxograma e Pseudocdigo) e o programa em linguagem C, que imprima todos os nmeros inteiro existentes entre 1 e 20 em ordem crescente. Utilize a estrutura Para. 3. Criar um algoritmo (Fluxograma e Pseudocdigo) e o programa em linguagem C, que leia um nmero N atravs do teclado e, em seguida, calcule e imprima a soma de 1 at N. Utilize a estrutura for. 4. Criar um algoritmo (Fluxograma e Pseudocdigo) e o programa em linguagem C, para ler 10 nmeros e imprimir o quadrado de cada nmero. Utilize a estrutura for. 5. Criar um algoritmo (Fluxograma e Pseudocdigo) e o programa em linguagem C, para ler o nmero de matrcula e 4 notas de sete alunos, calcular a sua mdia aritmtica e imprimir o nmero de matricula do aluno, as 4 notas, a sua mdia e imprimir Reprovado se a mdia for menor que 3, Exame se 3 <= mdia < 7 e Aprovado se mdia =>7. Utilize a estrutura for. 6. Criar um algoritmo (Fluxograma e Pseudocdigo) e o programa em linguagem C, para calcular o imposto de renda de 10 contribuintes considerando: a)os dados do contribuinte, n do CPF, n de dependentes e renda anual. b)desconto de R$ 100,00 por dependente. c) at R$ 1000,00 contribuinte isento, de R$ 1000,01 a R$ 5000,00 pagar 5% e acima de R$ 5000,00 pagar 10%. Utilize a estrutura for.
72
8.2. while()
o mais genrico dos 3 e pode ser usado para substituir os outros 2; em outras palavras, o lao while supre todas as necessidades. J os outros dois so usados por uma questo de comodidade. Fluxograma
Pseudocdigo Enquanto (condio) faa Comando 1; Fim_enquanto Linguagem C while (condio) { Comando 1; }
73
Exemplo 3: Fluxograma
Pseudocdigo Algoritmo Exemplo3; Var x,y: inteiro; Inicio x 0; y 0; Enquanto(y<10) y y + 1; x y + x; Fim_Enquanto Escreva(x= , x, y= ,y); Fim
74
Linguagem C
Tela
Exerccios 7. Criar um algoritmo (Fluxograma e Pseudocdigo) e o programa em linguagem C, que imprima todos os nmeros inteiro existentes entre 1 e 20 em ordem decrescente. Utilize a estrutura Enquanto. 8. Criar um algoritmo (Fluxograma e Pseudocdigo) e o programa em linguagem C, que leia vrios nmeros positivos fornecidos pelo usurio e imprima o produto dos nmeros mpares digitados e a soma dos pares. Utilize a estrutura while. 9. Em uma fbrica h dois alarmes: um deles dispara a cada x horas e o outro, a cada y horas. Crie um algoritmo (Fluxograma e Pseudocdigo) e o programa em linguagem C que, dados os valores de x e y, informe qual o tempo mnimo necessrio para que os dois alarmes disparem simultaneamente. Considere que x e y so nmeros inteiros positivos. 10. Em um banco, as contas so identificadas por um nmero de conta com um dgito verificador. Esse dgito verificador calculado do seguinte modo: primeiramente somamos todos os dgitos, depois dividimos a somo por 10 e tomamos o resto. Por exemplo, se o nmero da conta for 5713, temos a soma 5+7+1+3=16, dividindo 16 por 10, temos o resto 6, que seu dgito verificador. Crie um algoritmo (Fluxograma e Pseudocdigo) e o programa em linguagem C que, dado um nmero de conta, informe o digito verificador correspondente.
75
76
Exemplo 4: Fluxograma
Pseudocdigo Algoritmo Exemplo4; Var i: inteiro; Inicio i 1; Repita Escreva(i); i i + 1; At que (i>10); Fim
Linguagem C
77
Tela
78
79
Exerccios 11. Criar um algoritmo (Fluxograma e Pseudocdigo) e o programa em linguagem C, que imprima a soma de todos os nmeros inteiros existentes entre 10 e 35 em ordem crescente. Utilize a estrutura Repita. 12. Criar um algoritmo (Fluxograma e Pseudocdigo) e o programa em linguagem C, para calcular e imprimir a mdia aritmtica de N valores lidos. Utilize a estrutura do.. while.
80
81
Apndice A Bibliotecas
Quando queremos usar uma funo da API, ou uma funo prpria da linguagem C, no escrevemos a funo no nosso programa. muito mais prtico pedir ao pr-processador que inclua o cdigo da funo desejada. Para isto, precisamos fornecer ao pr-processador um "mapa da mina", para que ele possa localizar e incluir a funo desejada. O turbo C possui vrios "mapas" prontinhos para serem utilizados, arquivos com a extenso .h chamados de cabealhos(bibliotecas) e que se encontram no diretrio /tcwin45/include. Os principais so: Cabealho stdio.h Uso Standard Input Output (entradas e sadas padro): este cabealho contm a definio da estrutura FILE, usada para todas as entradas (input) e sadas (output), alm das definies de todas as funes que lidam com a abertura, fechamento, etc de arquivos. A famosa funo printf tambm definida aqui, juntamente com sprintf, fprintf e toda a famlia de funes relacionadas. Funes Matemticas: sin, cos, atan, log, exp, etc. Aqui encontramos trigonometria (sin, cos, tan, atan, etc), arredondamentos (ceil, floor), logaritmos (log, exp, log10, etc), raiz quadrada e cbica (sqrt, cbrt) e constantes como pi, e, etc. Standard library functions (funes da biblioteca padro): Contm abort (trmino anormal do programa), exit (trmino normal), atoi, itoa (converso de texto para inteiro), malloc, calloc, free (mdulo de memria dinmica), rand, srand (nmeros randmicos), putenv, getenv (administrao do ambiente), qsort (ordenao), strtod, strtol (converso de string para double/long), sleep (suspender a execuo por um certo perodo de tempo). Este arquivo define macros e tipos de uso geral em programas: NULL, offsetof, ptrdiff_t, size_t e muitos outros. Manipulao de strings: aqui so definidas todas as funes que lidam com a representao padro de como as strings so usadas em C. Temos strcmp (comparao de strings), strlen (obteno do comprimento de uma string), strcpy (cpia de uma string para outra), strcat (concatenao de strings), strstr (substring numa string), memset (atribuio de uma regio RAM para um caracter), memcpy (copiar memria), memmove (copiar memria cuidando da regio de sobreposio). Todas as definies de janelas: criar, abrir, etc. um arquivo cabealho grande com cerca de 500 mega de definies. Saiba que o lcc-win32 incorpora neste arquivo muitos dos arquivos que normalmente so individualizados em outras distribuies (como o winbase.h, por exemplo).
math.h
stdlib.h
stddef.h
string.h
windows.h
Se voc tiver curiosidade de saber como so montados estes arquivos de cabealho, basta abri-los em qualquer editor de texto.
82
cos()
tan()
log()
log10()
pow()
sqrt()
ceil()
floor()
83
84