curso_C-2011

92
 Kesede R Julio [email protected] Apostila de Linguagem C versão: 2011

Transcript of curso_C-2011

Kesede R [email protected]

Apostila de Linguagem

Cverso: 2011

Prof. Kesede R Julio

ndice1 - Introduo.....................................................................................................................4 1.1 Recomendaes ao Aluno...........................................................................................4 1.2 Ferramenta de programao: Linguagem C..............................................................4 1.3 Estrutura de um Programa.........................................................................................6 1.4 Insero de Arquivos de Funo...............................................................................7 1.5 Tipos e Variveis......................................................................................................8 1.6 Operadores Bsicos...................................................................................................9 1.7 Exerccios Propostos...............................................................................................10 2 - Comandos de Deciso..................................................................................................13 2.1 Comando if/else........................................................................................................13 2.2 Switch........................................................................................................................14 2.3 Exerccios..................................................................................................................16 3 - Comandos de Repetio..............................................................................................19 3.1 Comando while.........................................................................................................19 3.2 Comando do-while....................................................................................................21 3.3 Teste de mesa............................................................................................................22 3.4 Exerccios..................................................................................................................26 4 - Vetor.............................................................................................................................29 4.1 Comando For.............................................................................................................30 4.2 Exerccios..................................................................................................................31 5 - String............................................................................................................................36 5.1 Exerccios..................................................................................................................39 6 - Matriz...........................................................................................................................42 6.1 Exerccios..................................................................................................................43 7 - Estruturas Heterogneas............................................................................................46 7.1 Exerccios.................................................................................................................48 8 - Funes.........................................................................................................................50 8.1 Passagem de Parmetros por Valor e Retorno de Valor...........................................51 8.2 Passagem de Parmetros por Referncia................................................................53 8.3 Exerccios................................................................................................................54 9 - Arquivo.........................................................................................................................56 9.1 Armazenamento em disco.........................................................................................56 9.2 Exerccios..................................................................................................................68 10 - Allegro.......................................................................................................................70 10.1 Exerccios ..............................................................................................................71 Linguagem de Programao C verso 2011

2

Prof. Kesede R Julio Apndices A Algoritmos e Fluxogramas......................................................................74 Apndices B Resumo de comandos e funes..............................................................81 Apndices C Acesso a Porta Paralela...........................................................................82 Apndices D Exerccios Resolvidos..............................................................................87 Seo 2.3........................................................................................................................87 Seo 3.3........................................................................................................................89 Seo 7.6........................................................................................................................89 Seo 9.3........................................................................................................................90 Bibliografia........................................................................................................................91

Linguagem de Programao C -

verso 2011

3

Prof. Kesede R Julio

1 - Introduo1.1Recomendaes ao AlunoO estudo de programao requer uma boa dose de concentrao na teoria e dedicao na execuo dos exerccios prticos. Por isso, de fundamental importncia a digitao de todos os exemplos e o desenvolvimento de todos os exerccios propostos. Suas dvidas devem ser resolvidas assim que surgirem, no as adie, pois isto se tornar uma "bola de neve", fatal para a compreenso e motivao da continuidade do aprendizado. NO ESTUDE PARA A PROVA, estude sempre. O estudo deve ser feito periodicamente. Seja disciplinado em seus estudos para que voc possa colher bons frutos. Leia a teoria, digite os exemplos, releia a teoria e encare os exerccios propostos. No desanime nunca, persevere.

1.2 Ferramenta de programao: Linguagem CPara fazer nossos programas, usaremos a linguagem C. Para isso precisamos de um compilador (programa que interpretar nossas instrues) e de um IDE (Interface Development Environment, ou seja, um programa que permita escrever nossas instrues, corrig-las e execut-las). Existe uma certa influncia do compilador escolhido nas funes oferecidas pela linguagem. Por isso, esta apostila estar sendo direcionada para o C-Padro ANSI (American National Standards Institute), pois suas funes so aceitas por todos os compiladores que seguem este padro. O compilador escolhido pelo curso o gcc, este compilador j est embutido no IDE que usaremos chamado Dev-c++ (ou Dev-cpp), o qual pode ser baixado gratuitamente atravs do sitehttp://kent.dl.sourceforge.net/sourceforge/dev-cpp/devcpp-4.9.9.2_setup.exe

Atravs da digitao dos exemplos deste captulo, voc poder praticar os recursos do ambiente de programao que voc utilizar durante o curso, alm de aprender alguns conceitos bsicos da prpria linguagem, como: estrutura de um programa, insero de bibliotecas de funo, tipo de variveis, entrada e sada de dados em tela, operadores aritmticos bsicos. Para comear a digitar um exemplo, abra o Dev que voc acabou de instalar, selecione Arquivo/Novo/Arquivo Fonte. Digite o programa linha-a-linha. Salve-o com a extenso .c (Arquivo/Salvar Como...). Agora voc precisa compilar (verificar erros de escrita) o programa. Clique em Executar/Compilar. Caso o programa apresente algum erro, ele Linguagem de Programao C verso 2011

4

Prof. Kesede R Julio indicar a linha do erro atravs de um destaque colorido. Na aba Compilador (parte inferior do IDE) aparecero a linha e a descrio do erro ocorrido. Tente corrigi-lo e compile novamente. O programa s poder ser executado se todos os erros de compilao forem retirados do programa. Aps a compilao sem erros, voc poder executar o programa. Clique em Executar/Executar. Aparecer um console (janelinha preta) com a execuo do programa em andamento. Aps conferir que o programa est correto, ou seja, fez exatamente o que voc pediu que fizesse, voc poder abrir uma nova aba (Arquivo/Novo/Arquivo fonte) para digitar o prximo exemplo. Segue abaixo 3 exemplos para serem digitados, compilados e executados. Nossos exemplos sempre seguiro este padro: um enunciado dizendo o que deve ser feito, uma coluna com o nmero da linha (ou do bloco) do cdigo, outra coluna para o cdigo que deve ser digitado e outra com a descrio do que ele faz. Exercite digitando os exemplos abaixo.Digite o Exemplo 1.1:- Faa um programa que escreva seu nome na tela. 1 2 3 4 5 6 } #include #include int main(){ printf("Kesede R Julio"); getch(); Permite o uso das funes printf().No precisam ser includos para arquivos .c. Permite o uso da funo getch(). Abre a funo principal do programa Imprime a mensagem na tela Pra a execuo do programa Fecha a funo principal No precisam ser includos para arquivos .c

Digite o Exemplo 1.2:- Faa um programa que mostre uma mensagem de Ol personalizada. Permita que o usurio digite seu nome. 1 #include Permite o uso das funes printf() e scanf().No precisam ser includos para arquivos .c. 2 3 #include int main(){ char nome[30]; 4 5 scanf(%s,nome); printf("Ola, %s, nome); Permite o uso da funo conio(). Abre a funo principal do programa Reserva um espao na memria para guardar at 29 caracteres. Recebe o nome do usurio e guarda na varivel nome Imprime a o mensagem formato na (%s) tela pelo substituindo No precisam ser includos para arquivos .c

Linguagem de Programao C -

verso 2011

5

Prof. Kesede R Juliocontedo da varivel nome 6 7 } getch(); Pra a execuo do programa Fecha a funo principal

Digite o Exemplo 1.3:- Um empregado da empresa Alfa tem dois vencimentos: salrio e gratificao. Faa um programa que receba os vencimentos do empregado, e mostre o salrio que ele ir receber. 1 #include Permite o uso das funes printf() e scanf().No precisam ser includos para arquivos .c. 2 3 4 5 6 7 8 9 10 11 12 #include int main(){ float salario; float grat; float soma; printf(Digite o salario: "); scanf(%f,&salario); printf("\nDigite a gratificacao: "); scanf(%f,&grat); soma = salario + grat; printf("\n\nO resultado eh: %f", soma); Permite o uso da funo conio(). Abre a funo principal do programa Define salario Define espao de memria chamado grat Define soma Imprime uma mensagem na tela Recebe o que o usurio digitou e guarda em salario Imprime uma mensagem na tela Recebe o que o usurio digitou e guarda em salario Soma o contedo de salrio e grat e guarda em soma Imprime de soma 13 14 } getch(); Pra a execuo do programa Fecha a funo principal a mensagem na tela substituindo o formato %f pelo contedo espao de memria chamado espao de memria chamado No precisam ser includos para arquivos .c

1.3 Estrutura de um ProgramaA estrutura de um programa C , basicamente, realizada em funes. A princpio, no se escreve nenhum comando que no esteja dentro de uma funo. No exemplo 1.1, a funo comea na linha int Linguagem de Programao C verso 2011

6

Prof. Kesede R Julio main(){ e termina em }. Por isso, a estrutura de programa apresentada a prpria estrutura da funo main(). (,...){ } Onde: Tipo de retorno: o tipo da informao que uma funo pode retornar. Em nosso exemplo o retorno int. Voce poder encontrar o tipo de retorno da main() como void. Nome da funo: o que identificar a funo. Se houver apenas uma funo (como no exemplo 1.1) no programa, esta dever se chamar, obrigatoriamente, main (principal). Argumentos: so entradas de informaes recebidas por outras funes. No exemplo 1.1, no h entrada de argumentos. Comandos e funes: a prpria lgica do programa. Comandos, chamada de funes pr-definidas, chamada de funes escritas pelo programador, colocadas em uma seqncia lgica para ser obedecida pelo compilador.

1.4 Insero de Arquivos de FunoSo arquivos texto contendo os cabealhos das funes fornecidas pelo prprio compilador. Para usar qualquer funo prdefinida, voc deve declarar o nome do arquivo entre aspas, atravs da declarao include precedida pelo caractere #. No Apndice A, listamos o nome de alguns desses arquivos e suas respectivas funes. Em nosso exemplo utilizamos apenas o arquivo stdio.h, que contem as funes de entrada e sada de dados: printf() e scanf(). Devido a importncia destas funes replicamos aqui uma explicao de como usar estas funes. printf():- funo que permite a sada de dados para o usurio. Sintaxe simplificada: printf(, ,...); Onde: formatao da sada tudo que queremos escrever na tela para o usurio. Quando quisermos mostrar contedo de variveis no meio do texto, colocamos os formatos dos tipos (vide tabela abaixo), que sero substitudos pelas variveis. varivel o nome da varivel que queremos mostrar ao usurio. Seu contedo ser substitudo nos formatos de tipo colocados na formatao da sada. Linguagem de Programao C verso 2011

7

Prof. Kesede R Julio Exemplo: printf(Resultado da soma: %d., soma); Caso a varivel soma seja 10, a mensagem mostrada para o usurio ser: Resultado da soma: 10. (sem aspas). scanf():- funo que permite a digitao de dados pelo usurio. Sintaxe simplificada: scanf(); Onde: formatao da entrada apenas o formato do tipo (vide tabela abaixo) da varivel onde ser alocada a informao digitada pelo usurio. endereo da varivel o endereo de onde ser alocada a informao. Para informar o endereo de uma varivel, basta colocar o caractere & antes do nome da varivel. Exemplo: scanf(%f, &valor); Neste exemplo, o programa ser interrompido para que o usurio digite uma informao, que dever ser um nmero real. Este nmero ser alocado em um espao de memria chamado valor, declarado previamente como float (conjunto dos nmeros reais). Tanto para o printf() como para o scanf(), temos que usar formatos para as variveis que desejamos digitar (entrada) ou mostrar (sada). Estes formatos correspondem ao tipo de cada varivel. A tabela abaixo mostra os tipos mais comuns. da entrada>, = && || & | Lgico Condicional Condicional Bit-a-bit Bit-a-bit Maior ou igual E Ou E Ou

1.7 Exerccios Propostos1.7.1 Faa um programa que imprima Ola na tela. 1.7.2 Faa um programa que imprima seu nome na tela. 1.7.3 Faa um programa que imprima um nome, escolhido pelo usurio, na tela. Voc dever permitir que o usurio digite (funo scanf()) este nome, definindo uma varivel para guardar este nome na memria. 1.7.4 Faa um programa que receba o nome e a idade do usurio e depois mostre-os na tela. Devem ser definidas duas variveis para guardar nome e idade na memria. 1.7.5 Faa um programa que receba o nome do usurio, quantas horas ele trabalhou no ms e o valor da sua hora trabalhada. Mostre seu nome e o valor do seu salrio. Neste caso, voc deve reservar variveis para o nome, quant. de horas trabalhadas, valor da hora e para o salario (que ser calculado). 1.7.6 Os funcionrios da empresa ABC Xtal, recebem para cada hora extra, 50% a mais do valor da hora normal. Faa um programa que receba o nome de um funcionrio, quantas horas normais e quantas horas extras ele trabalhou, assim como o valor da hora normal. Mostre, no final do programa, o salario lquido deste funcionrio. 1.7.7 Faa um programa que receba do usurio um numero qualquer e mostre o quadrado deste nmero. 1.7.8 Faa um programa que permita que o usurio digite dois valores inteiros. Multiplique estes valores guardando o produto em uma terceira varivel. Mostre o resultado da multiplicao. 1.7.9 Faa um programa de uma calculadora simples que permita que o usurio digite dois valores inteiros. A calculadora, logo aps a digitao dos nmeros, dever mostrar o valor da soma, da subtrao, da multiplicao e da diviso dos valores digitados. 1.7.10 Faa um programa que calcule a media da temperatura ocorrida em um dia. O usurio dever digitar 5 temperaturas e o programa dever mostrar em tela a mdia das temperaturas.Linguagem de Programao C verso 2011

10

Prof. Kesede R Julio

1.7.11 A tabela abaixo mostra o valor do cmbio de moedas estrangeiras para cada real. Faa um programa onde o usurio entre com uma quantia em real e o programa mostre este valor em outras moedas.Moeda 1 Dolar 1 Euro Valor (R$) 1,9 3,1

1.7.10 Faa um programa que calcule e mostre o salrio lquido de um funcionrio. O programa deve receber o salrio bruto e considerar que todo funcionrio tem um desconto de 10% de IR no salrio bruto. 1.7.11Para calcular a rea de um retngulo, podemos multiplicar sua largura pelo seu comprimento. Permita que o usurio entre com a largura e comprimento de um retngulo qualquer e mostre sua rea. 1.7.12Supondo que um engenheiro deseja saber qual a distncia entre 2 pontos em um terreno. Porm ele sabe apenas as coordenadas (x,y) de cada ponto. Faa um programa que resolva este problema para o engenheiro, sabendo que o clculo da distncia dado por:d = x 2 x 12 y 2 y 1 2

Dica: Use sqrt() (math.h) para calcular a raiz quadrada. 1.7.13 Uma empresa de engenharia vai lotear uma fazenda e deseja dividi-la em 3 categorias (A, B e C) de acordo com o tamanho do lote. Toda a fazenda ser dividido da seguinte forma: 20% para a Categoria A, 30% para a Categoria B e 50% para a Categoria C. A Categoria A ter 4 lotes, a Categoria B ter 10 lotes e a Categoria C ter 20 lotes. Voc foi designado para desenvolver um programa que mostre a rea de cada lote, das categorias A, B e C.. Receba do usurio a rea total da fazenda, e para um bom entendimento do problema, considere a fazenda com formato retangular. 1.7.14 Uma empresa de transporte rodovirio precisa saber o tempo exato que um nibus demorou para sair da sua cidade origem e chegar na sua cidade destino. Para isso, pediu que voce fizesse um programa (faa primeiro o algoritmo e o fluxograma) que recebesse o horrio de sada (HH:MM:SS) e o horrio de chegada (HH:MM:SS), e mostrasse o tempo exato gasto naLinguagem de Programao C verso 2011

11

Prof. Kesede R Julio

viagem. Exemplo: Horrio de Sada : 14:28:32 Horrio de Chegada: 17:47:52 Tempo de Viagem : 03:19:20 Dica: Receba as entradas em variveis inteiras separadas. Converta todas para segundos, execute a diferena e converta o resultado para horas, minutos e segundos.

Linguagem de Programao C -

verso 2011

12

Prof. Kesede R Julio

2 - Comandos de Deciso

2.1Comando if/elseDefinio: Usado para executar um ou mais comandos dependentes de condies. Sintaxe simplificada: if ( &&/|| ...){ } else{ } A palavra if obrigatria. Tudo que estiver entre deve ser substitudo pela informao pertinente, neste caso, uma condio. O else usado quando queremos executar algum comando caso a condio do if seja falsa. Ele opcional. O { e } pode ser dispensado quando temos apenas uma linha de cdigo dentro da estrutura de deciso, porm caso voc sempre use, nunca errar, ter uma regra a menos para guardar e ter seu programa mais organizado (esta apenas minha opinio).Digite o Exemplo 2.1:- Entre com o valor da nota de uma determinada disciplina de um aluno e mostre a mensagem de Aprovado, se sua nota for maior ou igual a 6, ou Reprovado, se sua nota for menor que 6.

1 2 3 4 5 6 7

#include #include int main(){ float nota; scanf(%f, &nota); if (nota>=6){ printf(Aprovado);

Permite o uso das funes printf() e scanf() Permite o uso da funo getch() Abre a funo principal do programa Define espao de memria chamado nota Recebe a nota do usurio Verifica se nota maior ou igual a 6 Caso seja, imprime mensagem na tela

Linguagem de Programao C -

verso 2011

13

Prof. Kesede R Julio 8 9 10 11 12 13 }} getch(); } else{ printf(Reprovado); Fecha o if Verifica se nota menor que 6 (caso contrrio do if) Caso seja menor que 6. imprime mensagem Fecha else Pra a execuo do programa Fecha funo principal

No exemplo 2.1, o programa recebe do usurio um valor e atribui este valor varivel nota, depois disso, testa se o valor digitado maior ou igual a 6, se for verdadeira esta condio, o programa mostra Aprovado na tela, caso contrrio, mostra Reprovado. Note que apenas uma das mensagens ser mostrada, pois o else a negao da condio.

2.2SwitchDefinio: Usado para executar um ou mais comandos caso o contedo da varivel testada seja igual ao valor de algum dos casos. Sintaxe simplificada: switch (){ case : break; case : break; default: } Como ltima funo para cada caso, utilizamos a funo "break" para que o programa no precise testar o restante das condies. O default (similar ao else do if) usado quando queremos executar algum comando, caso o valor da varivel seja diferente de todos os valores testados. Ele opcional. Podemos substituir qualquer switch por ifs, porm nem todo if pode ser substitudo por switchs. Isto acontece porque o switch no verifica intervalos de valores, apenas igualdade. O switch organiza melhor o programa quando temos uma determinada varivel para ser verificada sua igualdade com diversos valores. Linguagem de Programao C 14

verso 2011

Prof. Kesede R JulioDigite o exemplo 2.1: Faa um programa que permite que o usurio entre com o cdigo do produto e o programa mostre o nome deste produto. Os produtos so: cod. 1 cd, cod. 2 livro, cod. 3 revista, cod. 4 jornal.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24

#include #include int main(){ int codigo; printf(Digite o codigo: ); scanf(%i,&codigo); switch (codigo){ case 1: printf(CD); break; case 2: printf(Livro); break; case 3: printf(Revista); break; case 4: printf(Jornal); break; default: printf(Opo Invlida); } getch(); }

Permite o uso das funes printf() e scanf() Permite o uso da funo getch() Abre a funo principal do programa Define espao de memria chamado salario Mostra mensagem na tela Recebe o valor do cdigo do usurio Abre o comando switch para verificao do cdigo Verifica se o cdigo igual a 1 Caso seja, mostra mensagem Sai o switch Verifica se o cdigo igual a 2 Caso seja, mostra mensagem Sai o switch Verifica se o cdigo igual a 3 Caso seja, mostra mensagem Sai o switch Verifica se o cdigo igual a 4 Caso seja, mostra mensagem Sai o switch Verifica se diferente de todos os cases Caso seja, mostra mensagem Fecha switch() Pra execuo do programa Fecha funo principal

Linguagem de Programao C -

verso 2011

15

Prof. Kesede R Julio

2.3ExercciosSwitch 2.3.1Faa um programa que permita que o usurio entre com um numero num intervalo de 0 a 6, equivalendo cada um deles a um dia da semana (domingo = 0). Imprima o dia da semana equivalente ao numero digitado pelo usurio. Caso o usurio digite um numero invalido, d uma mensagem informando-o. Use o comando "switch" para os testes. 2.3.2 Em uma empresa de saneamento bsico os servios recebem uma numerao de acordo com sua natureza: 1 para troca de tubulao, 2 para verificao de problemas de vazamento, 3 para ligao de gua e esgoto. De acordo com o problema, o servio agendado para um determinado horrio do dia. 8h da manh so agendados os servios 1, para s 11h so agendados os servios 2 e para s 15h so agendados os servios 3. Voc, como programador de sistemas da empresa, foi designado para fazer um programa que agende os servios em seus respectivos horrios. O programa deve receber o numero do servio e mostrar o seu horrio de agendamento. Use o comando switch, com mensagem de erro caso o usurio digite um numero invalido. Faa o algoritmo e o fluxograma antes do programa. If-else 2.3.3Permita que o usurio digite um valor inteiro, teste se este valor maior que 10, caso seja, imprima Maior que 10; caso contrrio, imprima Menor ou igual a 10. 2.3.4Uma empresa no pretende contratar candidatos com mais de 40 anos. Faa um programa que receba a idade do candidato e mostre uma mensagem se ele est apto ou no para a vaga. 2.3.5Um restaurante oferece um desconto de 7% para todos os clientes que gastarem mais que R$ 250,00 no fechamento da conta. Faa um programa que pergunte ao usurio qual o valor da conta e mostre o valor real a ser pago. 2.3.1Uma empresa deseja bonificar seus funcionrios de acordo com a quantidade de vendas do ms. O gerente lhe entregou uma tabela para que voc faa um programa que mostre o valor das bonificaes.

Linguagem de Programao C -

verso 2011

16

Prof. Kesede R JulioValor Vendido (R$) < 1.500,00 Entre 1.500,00 e 3.500,00 > 3.500,00 Bonificao (%) 5 7 10

2.3.7 O IMC (ndice de Massa Corprea) um bom sinalizador para o controle do nosso peso. A frmula simples: IMC = peso / (altura2) atravs da tabela abaixo podemos saber emagrecer, engordar ou manter o nosso peso.IMC Abaixo de 20 (exclusive) Entre 20 e 24,9 (inclusive) Entre 25 e 35 (inclusive) Acima de 35 (exclusive) Situao Abaixo do peso normal Peso normal Acima do peso normal Obeso

se

precisamos

Faa um programa que receba a altura e o peso do usurio. De acordo com a frmula do IMC, mostre a situao do usurio. 2.3.9 Dados 3 valores representando os lados de um tringulo, verifique se este tringulo escaleno (3 lados diferentes), issceles (2 lados iguais) ou eqiltero (3 lados iguais). 2.3.10 Faa um programa que receba 3 valores correspondentes aos lados de um tringulo. Verifique e d mensagens para as seguintes condies, sendo A o maior lado: Se A >= B + C Nenhum triangulo formado Se A2 = B2 + C2 Um triangulo retangulo formado Se A2 > B2 + C2 Um triangulo obtusangulo formado Se A2 < B2 + C2 Um triangulo acutangulo formado Faa o algoritmo e o fluxograma antes do programa. 2.3.11 Dados 3 valores quaisquer, verifique se eles podem ser lados de um tringulo. Lembre que, em um tringulo, a soma de dois lados deve ser maior que o maior lado. 2.3.12 Receba 3 nmeros inteiros e distintos, a partir do usurio, e mostre-os em ordem crescente. 2.3.13 Faa um programa que, leia os 3 nmeros, a partir doLinguagem de Programao C verso 2011

17

Prof. Kesede R Julio

usurio, correspondentes aos coeficientes de uma equao do 2o grau. Atravs de Bascara, calcule, se possvel, as razes da equao, realizando todas as consistncias necessrias. Faa o algoritmo e o fluxograma antes do programa.

Linguagem de Programao C -

verso 2011

18

Prof. Kesede R Julio

3 - Comandos de Repetio3.1Comando whileSintaxe simplificada: while (){ } Este comando executa os comandos e funes internos a ele enquanto a condio for verdadeira. Diferente do if que, caso a condio seja verdadeira, executa os comandos internos e segue adiante, o while volta a executar a primeira linha do lao, ou seja, o teste da condio. Ele continua testando e executando os comandos internos at que a condio seja falsa. Existem outros comandos de looping (for e do-while) , porm se voc souber bem o while poder uslo em qualquer situao.

Digite o Exemplo 3.1:- Mostre os nmeros inteiros de 1 a 100. 1 2 3 4 #include #include int main(){ int i=1; Permite o uso das funes printf() e scanf() Permite o uso da funo getch() Abre a funo principal do programa (declarao e inicializao da varivel i) Define espao de memria chamado i e atribui 1 p/ este espao 5 6 7 8 9 } printf(Imprimindo os nmeros de 1 a 100); while (i 0){ printf("buffer 2 eh maior que buffer 1\n"); } else{ if (ptr == 0){ printf("buffer 2 eh igual ao ou buf2 menor que buf1, respectivamente. Verifica se ptr maior que 0 (buf2 maior que buf1) Caso seja, mostra mensagem Fecha if Abre else Verifica se ptr igual a 0 (buf2 igual buf1) Caso seja, mostra mensagem

Linguagem de Programao C -

verso 2011

37

Prof. Kesede R Julio14 15 16 buffer 1\n"); } else{ Fecha if Abre else porque negou as duas condies acima (com certeza buf2 menor que buf1) 17 18 19 } ptr = strcmp(buf2, buf3); } Fecha else Fecha else Compara contedo de buf2 com contedo de buf3. Atribui para ptr 0, 1 ou -1,caso sejam iguais, buf2 maior que buf1 20 21 22 23 24 25 26 27 28 buffer 3\n"); if (ptr > 0){ printf("buffer 2 eh maior que buffer 3\n"); } else{ if (ptr == 0){ printf("buffer 2 eh igual ao ou buf2 menor que buf1, respectivamente. Verifica se ptr maior que 0 (buf2 maior que buf3) Caso seja, mostra mensagem Fecha if Abre else Verifica se ptr igual a 0 (buf2 igual buf3) buffer 3\n"); } else{ Caso seja, mostra mensagem Fecha if Abre else porque negou as duas condies acima (com certeza buf2 menor que buf3) 29 30 31 32 } } getch(); } Fecha else Fecha else Par a execuo do programa Fecha funo principal printf("buffer 2 eh menor que o Mostra mensagem, pois se entrou aqui printf("buffer 2 eh menor que o Mostra mensagem, pois se entrou aqui

Digite o Exemplo 5.3- Faa um programa que mostre a quantidade de caracteres de uma string. 1 2 3 4 #include #include #include #include Permite incluso de funes de i/o Permite incluso de funes para manipulao de string Permite incluso da funo getch() Permite incluso de funes de i/o

Linguagem de Programao C -

verso 2011

38

Prof. Kesede R Julio5 6 7 8 #include int main(){ char string[25] = "Kesede Rodrigues Julio"; printf(%d,strlen(string)); Permite incluso de funes para manipulao de string Abre funo principal Declara e inicializa variavelstring de 25 posies Strlen() retorna a quantidade de caracteres tela 9 10 } getch(); Pra a execuo do programa Fecha funo principal que a varivel string contm. O resultado mostrado na

Digite o Exemplo 5.4:- Faa um programa que concatene duas strings e mostre o resultado da concatenao na tela. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 } #include #include #include #include #include int main(){ char destino[25]; char espaco[2] = " ", sobrenome[10] = "Rodrigues", nome[10] = "Kesede"; strcpy(destino, nome); strcat(destino, espaco); strcat(destino, sobrenome); printf(%s, destino); getch(); Permite incluso de funes de i/o Permite incluso de funes para manipulao de string Permite incluso da funo getch() Permite incluso de funes para manipulao de strings Permite incluso de funes de i/o Abre funo principal Declara e inicializa variavel destino de 25 posies Declara variveis strings Copia nome para destino Concatena (junta) espao com destino Concatena destino Imprime destino Par a execuo do programa Fecha funo principal (junta) sobrenome com

5.1Exerccios

Linguagem de Programao C -

verso 2011

39

Prof. Kesede R Julio

5.1.1Faa um programa que receba uma frase do usurio e mostre quantas vogais a frase contem. 5.1.2Faa um programa que mostre o nmero de palavras contidas em um string. O string deve ser fornecido pelo usurio. 5.1.3 Um programa de criptografia codifica as vogais a, e, i, o, u como 1, 2 ,3, 4, 5, respectivamente. Faa um programa que receba uma frase codificada do usurio e mostre-a decodificada. 5.1.4 Faa um programa que receba o nome completo do usurio e mostre a abreviatura do seu nome. 5.1.5 Faa uma funo que receba um string como parmetro e devolva o contedo da string em ordem alfabtica. Um string um vetor de caracteres contendo '\0' como finalizador. void stralf(char *s1); 5.1.6 Faa um programa que receba uma frase do usurio. Construa outra string contendo a primeira letra de cada palavra, da ltima at a primeira, separados por espaos em branco. Ex.: Frase : Nesta prova vou tirar um dez. Iniciais: d u t v p N 5.1.7 Faa um programa que receba um string do usurio e guarde em um vetor os ndices da string que contem a letra 'a'. 5.1.8 Faa um programa que receba o nome completo do usurio, construa outra string com o primeiro nome completo e os outros abreviados, separados por espaos em branco. Ex.: Nome Completo : Kesede Rodrigues Julio Nome Abreviado: Kesede R J 5.1.9Faa um programa que receba do usurio em duas strings distintas, uma frase e uma sequencia de duas letras, supostamente contida na frase. Mostre quantas vezes a sequencia aparece na frase. Ex.: Frase: Descobertos mais ossos de polmica espcie de homindeos Sequencia: es Resultado: 2 5.1.10Faa um programa que receba uma frase do usurio e mostre a quantidade de ditongos e/ou hiatos (duas vogais consecutivas) encontrados. 5.1.11 Faa um programa que mostre para o usurio uma string contendo o primeiro e o ltimo nome de uma pessoa. O programa deve receber do usurio uma string contendo o nome completo da pessoa. 5.1.12 Faa um programa que receba o nome completo da pessoa e devolva este nome na forma bibliogrfica. 5.1.13Faa um programa que receba uma frase do usurio. LogoLinguagem de Programao C verso 2011

40

Prof. Kesede R Julio

em seguida receba tambm uma palavra. O programa deve mostrar uma mensagem dizendo se a palavra digitada esta contida ou no na frase. 5.1.14Faa um Jogo da Forca.

Linguagem de Programao C -

verso 2011

41

Prof. Kesede R Julio

6 - MatrizSo vetores multi-dimensionais. Ao invs de trabalharmos com um nico ndice, trabalhamos com vrios. Em nossa analogia com ruas e casas, no caso dos vetores, teramos aqui a comparao com um quarteiro. Assim, alm dos nmeros das casas teremos que saber o nmero da rua onde ela se localiza. Desta forma, a[3][3]; reserva 9 posies na memria, podendo, conceitualmente, considerar o 1 ndice como linha e o segundo como coluna.0 0 1 2 1 2

10 20 43 27 82 8 3 78 7

Figura 6.1 - Alocao de elementos em uma matriz 3x3.

Para acessarmos qualquer posio, basta escrever o nome da varivel juntamente com o nmero do ndice da linha e o da coluna. Assim, a[1][2] = 78; colocar o valor 78 para a 2 linha da 3 coluna. (o ndice comea em 0). Geralmente, temos um nmero grande de posies e precisamos de um comando de looping para nos ajudar a modificar os ndices sem muita escrita de cdigo. Portanto, for (i=0;inul"); }

// Verifica se eh triangulo if (lado1>=lado2 && lado1>=lado3){ maior=lado1; menor1=lado2; menor2=lado3; } if (lado2>=lado1 && lado2>=lado3){ maior=lado2; menor1=lado1; menor2=lado3; }

Linguagem de Programao C -

verso 2011

87

Prof. Kesede R Julioif (lado3>=lado1 && lado3>=lado2){ maior=lado3; menor1=lado1; menor2=lado2; } // if (menor2+menor1>maior){ // eh triangulo if (maior==menor2 && menor2==menor1){ printf("O triangulo eh equilatero."); } } else{ if (maior!=menor2 && maior!=menor1 && menor2!=menor1){ printf("O triangulo eh escaleno"); } else{ printf("O triangulo eh isosceles"); } } } else{ printf("Os lados nao formam triangulo"); } system("pause");

// Exerccio 2.3.6 #include int main(){ float venda, bonif; printf("Digite o valor vendido: "); scanf("%f",&venda); if (venda < 1500){ bonif=0.05*venda; // Exerccio 2.3.12 #include #include #include int main(){ float a, b, c, delta, r1, r2; system("cls"); printf("Coeficiente A: "); scanf("%f",&a); printf("Coeficiente B: "); scanf("%f",&b); printf("Coeficiente C: "); scanf("%f",&c); //calculo das possiveis raizes delta=(b*b)-(4*a*c);

}

}else{ if (venda