Professional Documents
Culture Documents
Apostila de
Linguagem
versão: 2009
Prof. Kesede R Julio
Índice
1 - Introdução.....................................................................................................................4
1.1 Recomendações ao Aluno...........................................................................................4
1.2 Ferramenta de programação: Linguagem C..............................................................4
1.3 Estrutura de um Programa.........................................................................................6
1.4 Inserção de Arquivos de Função...............................................................................7
1.5 Tipos e Variáveis......................................................................................................9
1.6 Operadores Básicos...................................................................................................9
1.7 Exercícios Propostos...............................................................................................10
2 - Comandos de Decisão..................................................................................................13
2.1 Comando If/else........................................................................................................13
2.2 Switch........................................................................................................................14
2.3 Exercícios..................................................................................................................16
3 - Comandos de Repetição..............................................................................................18
3.1 Comando while.........................................................................................................18
3.2 Comando do-while....................................................................................................19
3.3 Teste de mesa............................................................................................................20
3.4 Exercícios..................................................................................................................24
4 - Vetor.............................................................................................................................26
4.1 Comando For.............................................................................................................27
4.2 Exercícios..................................................................................................................28
5 - String............................................................................................................................30
5.1 Exercícios..................................................................................................................33
6 - Matriz...........................................................................................................................34
6.1 Exercícios..................................................................................................................35
7 - Funções.........................................................................................................................37
7.1 Passagem de Parâmetros por Valor e Retorno de Valor...........................................38
7.6 Passagem de Parâmetros por Referência................................................................40
7.5 Recursão....................................................................................................................41
7.6 – Exercícios.............................................................................................................44
8 - Métodos de Classificação e Busca..............................................................................46
8.1 Classificação por Seleção..........................................................................................46
8.2 Classificação QuikSort..............................................................................................47
8.3 Busca Linear.............................................................................................................50
8.4 Busca Binária............................................................................................................51
8.5 Exercícios..................................................................................................................54
9 - Ponteiros.......................................................................................................................55
1 - Introdução
1.1Recomendações ao Aluno
Digite o Exemplo 1.1:- Faça um programa que escreva seu nome na tela.
1 #include <stdio.h> Permite o uso das funções printf().Não precisam ser
incluídos para arquivos .c.
2 #include <conio.h> Permite o uso da função getch(). Não precisam ser incluídos
para arquivos .c
3 int main(){ Abre a função principal do programa
4 printf("Kesede R Julio"); Imprime a mensagem na tela
5 getch(); Pára a execução do programa
6 } Fecha a função principal
Digite o Exemplo 1.2:- Faça um programa que mostre uma mensagem de Olá personalizada.
Permita que o usuário digite seu nome.
1 #include <stdio.h> Permite o uso das funções printf() e scanf().Não precisam ser
incluídos para arquivos .c.
2 #include <conio.h> Permite o uso da função conio(). Não precisam ser incluídos
para arquivos .c
3 int main(){ Abre a função principal do programa
char nome[30]; Reserva um espaço na memória para guardar até 29
caracteres.
4 scanf(“%s”,nome); Recebe o nome do usuário e guarda na variável nome
5 printf("Ola, %s“, nome); Imprime a mensagem na tela substituindo o formato (%s)
pelo conteúdo da variável nome
6 getch(); Pára a execução do programa
7 } Fecha a função principal
Digite o Exemplo 1.3:- Um empregado da empresa Alfa tem dois vencimentos: salário e
gratificação. Faça um programa que receba os vencimentos do empregado, e mostre o salário
que ele irá receber.
1 #include <stdio.h> Permite o uso das funções printf() e scanf().Não precisam ser
incluídos para arquivos .c.
2 #include <conio.h> Permite o uso da função conio(). Não precisam ser incluídos
para arquivos .c
3 int main(){ Abre a função principal do programa
4 float salario; Define espaço de memória chamado salario
5 float grat; Define espaço de memória chamado grat
6 float soma; Define espaço de memória chamado soma
7 printf(“Digite o salario: "); Imprime uma mensagem na tela
8 scanf(“%f”,&salario); Recebe o que o usuário digitou e guarda em salario
9 printf("\nDigite a gratificacao: "); Imprime uma mensagem na tela
10 scanf(“%f”,&grat); Recebe o que o usuário digitou e guarda em salario
11 soma = salario + grat; Soma o conteúdo de salário e grat e guarda em soma
12 printf("\n\nO resultado eh: %f", soma); Imprime a mensagem na tela substituindo o formato %f pelo
conteúdo de soma
13 getch(); Pára a execução do programa
14 } Fecha a função principal
Onde:
“formatação da saída” é tudo que queremos escrever na tela
para o usuário. Quando quisermos mostrar conteúdo de variáveis no
meio do texto, colocamos os formatos dos tipos (vide tabela abaixo),
que serão substituídos pelas variáveis.
“variável” é o nome da variável que queremos mostrar ao
usuário. Seu conteúdo será substituído nos formatos de tipo colocados
na formatação da saída.
Exemplo:
printf(“Resultado da soma: %d.”, soma);
Caso a variável “soma” seja 10, a mensagem mostrada para
o usuário será: “Resultado da soma: 10.” (sem aspas).
Onde:
“formatação da entrada” é apenas o formato do tipo (vide
tabela abaixo) da variável onde será alocada a informação digitada pelo
usuário.
“endereço da variável” é o endereço de onde será alocada a
informação. Para informar o endereço de uma variável, basta colocar o
caractere “&” antes do nome da variável.
Exemplo:
scanf(“%f”, &valor);
Formato Tipo
%d, %i Inteiro
%f Float
%c Caractere
%lf Double
%s Cadeia de caracteres (string)
char: 1 byte com sinal – qualquer caractere – Ex.: 'a', 'F', ';'
deverá digitar 5 temperaturas e o programa deverá mostrar em tela a média das temperaturas.
1.7.11 A tabela abaixo mostra o valor do câmbio de moedas estrangeiras para cada real. Faça
um programa onde o usuário entre com uma quantia em real e o programa mostre este valor em
outras moedas.
1.7.10 Faça um programa que calcule e mostre o salário líquido de um funcionário. O programa
deve receber o salário bruto e considerar que todo funcionário tem um desconto de 10% de IR
no salário bruto.
1.7.11Para calcular a área de um retângulo, podemos multiplicar sua largura pelo seu
comprimento. Permita que o usuário entre com a largura e comprimento de um retângulo
qualquer e mostre sua área.
1.7.12Supondo que um engenheiro deseja saber qual a distância entre 2 pontos em um terreno.
Porém ele sabe apenas as coordenadas (x,y) de cada ponto. Faça um programa que resolva este
problema para o engenheiro, sabendo que o cálculo da distância é dado por:
d = x 2 −x 12 y 2− y 1 2
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
usuário 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 rodoviário 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 (faça primeiro o algoritmo e o fluxograma) que recebesse o horário de
saída (HH:MM:SS) e o horário de chegada (HH:MM:SS), e mostrasse o tempo exato gasto na
viagem. Exemplo:
Dica: Receba as entradas em variáveis inteiras separadas. Converta todas para segundos,
execute a diferença e converta o resultado para horas, minutos e segundos.
2 - Comandos de Decisão
2.1Comando if/else
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 #include <stdio.h> Permite o uso das funções printf() e scanf()
8 } Fecha o if
11 } Fecha else
2.2Switch
Sintaxe simplificada:
22 } Fecha switch()
2.3Exercícios
Switch
2.3.1Faça um programa que permita que o usuário 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 usuário. Caso o usuário digite um numero invalido, dê uma
mensagem informando-o. Use o comando "switch" para os testes.
2.3.2 Em uma empresa de saneamento básico os serviços recebem uma numeração de acordo com
sua natureza: 1 para troca de tubulação, 2 para verificação de problemas de vazamento, 3 para
ligação de água e esgoto. De acordo com o problema, o serviço é agendado para um determinado
horário do dia. 8h da manhã são agendados os serviços 1, para às 11h são agendados os serviços
2 e para às 15h são agendados os serviços 3. Você, como programador de sistemas da empresa,
foi designado para fazer um programa que agende os serviços em seus respectivos horários. O
programa deve receber o numero do serviço e mostrar o seu horário de agendamento. Use o
comando switch, com mensagem de erro caso o usuário digite um numero invalido. Faça o
algoritmo e o fluxograma antes do programa.
If-else
2.3.3Permita que o usuário digite um valor inteiro, teste se este valor é maior que 10, caso seja,
imprima “Maior que 10”; caso contrário, imprima “Menor ou igual a 10”.
2.3.4Uma empresa não pretende contratar candidatos com mais de 40 anos. Faça um programa
que receba a idade do candidato e mostre uma mensagem se ele está apto ou não 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. Faça um programa que pergunte ao usuário qual o valor da
conta e mostre o valor real a ser pago.
2.3.1Uma empresa deseja bonificar seus funcionários de acordo com a quantidade de vendas do
mês. O gerente lhe entregou uma tabela para que você faça um programa que mostre o valor das
bonificações.
2.3.7 O IMC (Índice de Massa Corpórea) é um bom sinalizador para o controle do nosso peso. A
fórmula é simples:
através da tabela abaixo podemos saber se precisamos emagrecer, engordar ou manter o nosso
peso.
IMC Situação
Abaixo de 20 (exclusive) Abaixo do peso normal
Entre 20 e 24,9 (inclusive) Peso normal
Entre 25 e 35 (inclusive) Acima do peso normal
Acima de 35 (exclusive) Obeso
Faça um programa que receba a altura e o peso do usuário. De acordo com a fórmula do IMC,
mostre a situação do usuário.
2.3.9 Dados 3 valores representando os lados de um triângulo, verifique se este triângulo é
escaleno (3 lados diferentes), isósceles (2 lados iguais) ou eqüilátero (3 lados iguais).
2.3.10 Faça um programa que receba 3 valores correspondentes aos lados de um triângulo.
Verifique e dê mensagens para as seguintes condições, sendo A o maior lado:
3 - Comandos de Repetição
3.1Comando while
Sintaxe simplificada:
while (<condição>){
<comandos e funções>
}
Digite o Exemplo 3.2:- Faça um programa que receba a idade de 10 alunos de uma academia e
mostre a média das idades.
1 #include <stdio.h> Permite o uso das funções printf() e scanf()
2 #include <conio.h> Permite o uso da função getch()
3 int main(){ Abre a função principal do programa
4 int idade, cont=1, somaid=0; Define espaços de memória inteiros para guardar as
idades, o contador (cont) e o acumulador (somaid). O
contador e acumulador devem ser inicializados.
5 float media; Define espaço de memória float para guardar a media
6 printf(“Digite as idades\n”); Imprime mensagem na tela
7 while (cont<=10){ Verifica se o contador é menor ou igual a 10
8 scanf(“%d”, &idade); Recebe a idade do usuário e guarda seu valor na
variável “idade”
9 somaid=somaid+idade; Soma a idade ao acumulador (que vale zero da
primeira vez) e guarda o resultado no próprio
acumulador. Na próxima iteração o acumulador já
estará atualizado.
10 cont=cont+1; Soma 1 ao contador (que vale 1 da primeira vez) e
guarda o resultado no próprio contador. Na próxima
iteração o contador já estará atualizado.
11 } Fecha o while
12 media=somaid/10; Calcula a media.
13 printf(“A media eh %f”,media); Mostra a media na tela
14 getch(); Páara a execução do programa
15 } Fecha a função principal
3.2Comando do-while
Digite o Exemplo 3.3:- Faça um programa que receba o nome, a quantidade de horas
trabalhadas e o valor da hora de vários funcionários de uma empresa. Mostre, para cada
funcionário, o seu salário. Pergunte ao usuário se ele deseja continuar digitando dados de mais
funcionários.
1 #include <stdio.h> Permite o uso das funções printf() e scanf()
2 #include <conio.h> Permite o uso da função getch()
3 int main(){ Abre a função principal do programa
4 char nome[30], resp; Declara a variável nome do tipo string de 30 caracteres e
a variável resp com 1 caractere
5 float horas, valor_h, sal; Declara variaveis do tipo float
6 do{ Abre o do-while
7 printf(“Nome:”); Imprime mensagem (rotulo do que será digitado)
8 fflush(stdin); Limpa buffer do teclado
9 gets(nome); Recebe string toda do usuário
10 printf(“Horas trabalhadas:”); Imprime mensagem (rotulo do que será digitado)
11 scanf(“%f”, &horas); Recebe horas trabalhadas do usuário
12 printf(“Valor hora:”); Imprime mensagem (rotulo do que será digitado)
13 scanf(“%f”,&valor_h); Recebe valor das horas trabalhadas do usuário
14 sal=horas * valor_h; Multiplica quant de horas pelo valor e guarda na
variavel sal
15 printf(“Salario : %.2f\n”, sal); Imprime a variavel sal
16 printf(“Deseja continuar <s/n>?”); Pergunta ao usuário se deseja continuar
17 fflush(stdin); Limpa buffer do teclado
18 resp=toupper(getchar()); Recebe a resposta do usuário e converte sua resposta
para maúscula
19 }while (resp=='S'); Verifica se a resposta é igual a S, caso seja, volta no “do”
para executar os comandos novamente
20 } Fecha a função principal
3.3Teste de mesa
Este tipo de teste é muito útil quando queremos verificar se
a lógica do nosso programa está correta. A compilação de um programa
verifica apenas erros de sintaxe, o que não significa que o nosso
programa funcione conforme planejamos que funcionasse. Bem, um
teste de mesa é tarefa simples, porém requer cuidados. Você assumirá
o papel do compilador quando da execução do programa, por isso não
podemos perder de vista a linha do programa que está sendo executada
em cada momento.
Começamos um teste de mesa montando uma única tabela
contendo uma coluna para cada variável declarada e mais uma coluna
para o que for escrito na tela, de acordo com o modelo abaixo. Os
valores das variáveis estarão sendo colocadas na tabela a medida que o
programa for requerendo. Assim como também, as mensagens que
serão impressas na tela. Sempre que colocamos um novo valor em uma
variável devemos riscar o anterior, dizendo a nós mesmos que o valor
mudou. Nunca apague os valores apenas risque-os.
Teste de mesa
Memória Tela
<var. 1> <var. 2> <var. 3> <var. 4>
<val. 1> <val. 4> <val. 5> <val. 7> <mensagem 1>
<val. 2> <val. 6> <val. 8> <mensagem 2>
<val. 3>
5 scanf("%i",&idade);
6 somaid=somaid+idade;
7 qtd=qtd+1;
8 }
9 printf("A soma das idades eh %i", somaid);
Teste de mesa
Linha 6 – soma idade a somaid e guarda em Memória tela
somaid Idade somaid qtd
Teste de mesa 20 0 1
Memória tela 25 20 2
45
Idade somaid qtd
Memória tela
Idade somaid qtd
20 0 1
25 20 2
23 45 3
68
Linha 7 – soma 1 em qtd
Teste de mesa Linha 7 – soma 1 em qtd
Memória tela Teste de mesa
Idade somaid qtd Memória tela
20 0 1 Idade somaid qtd
25 20 2 20 0 1
23 45 3 25 20 2
68 4 23 45 3
3.4Exercícios
Você foi incumbido de fazer um programa que permita que o cliente entre com o valor dos
produtos comprados e mostre o total da compra, o valor do desconto e o preço a pagar. Pergunte
ao usuário se deseja terminar a digitação dos produtos e também se deseja finalizar o programa.
3.3.9 A CPFL deseja saber quantos usuários de um bairro de classe média ultrapassa o consumo
mensal ideal. Para isso a empresa tem em suas mãos o consumo mensal ideal, que deve ser
recebido pelo programa uma única vez, e as medidas do mês anterior e do mês atual das 5000
residências do bairro, para verificar o consumo calculado pela diferença entre eles.
3.3.10Faça um programa que calcule o fatorial de qualquer número digitado pelo usuário,
sabendo que o fatorial de um número é o produtório dos números inteiros entre 1 e ele mesmo.
5
3.3.11Calcule a seguinte expressão: ∑
i= 1
xi
Onde: x é digitado pelo usuário.
3.3.12 Faça um programa que leia uma coleção de números inteiros e calcule sua média
quadrática. A média quadrática é dada pela fórmula:
MQ = x12 + x22 + x32 + x42 + + xn2
O programa encerra-se quando o valor de x for 0.
3.3.13 Calcule a expressão, sem utilizar a função pow() da math.h: X Y
Onde: X e Y são digitados pelo usuário
3.3.14Faça um programa que calcule o fatorial de qualquer número digitado pelo usuário,
sabendo que o fatorial de um número é o produtório dos números inteiros entre 1 e ele mesmo
3.3.15A seqüência de Fibonacci segue a seguinte ordem:
0 , 1 , 1 , 2 , 3 , 5 , 8 , 13 , 21 , 34 , 55 , 89 , ...
Repare que cada termo é a somatória dos dois anteriores, sendo que os dois primeiros são 0 (zero)
e o 1 (um). Faça um programa que receba um valor do usuário e imprima os termos da seqüência
de Fibonacci menores que o valor digitado.
4 - Vetor
int vet[5];
10 15 7 4 34
0 1 2 3 4
int a[10];
4.1Comando For
Sintaxe:
for (<inicialização>;<condição>;<incremento>){
<comando>
}
for (i=0;i<10;i++){
a[i]=0;
}
Digite o Exemplo 4.1:- Faça um programa que receba as notas dos alunos de uma classe de 30
alunos e calcule a média da classe. A média deve ser retornada por uma função que receba o
vetor de notas como parâmetro.
1 /*-------------------------------------------------------- O “/*” e o “*/”, abre e fecha um bloco de
Descrição: Calcula media das notas de 30 alunos comentários. Estes comentários ajudam muito
de uma classe em seus estudos. Faça isso em todos os seus
Data : Agosto/2004
programas.
Autor : Kesede R Julio
---------------------------------------------------------*/
2 #include <stdio.h> Permite inclusão de funções de i/o
3 #include <conio.h> Permite inclusão da função getch()
4 void main(){ Abre função principal
5 float notas[30], media, soma=0; Declara o vetor notas com 30 posições do tipo
float, assim como media e soma (inicializada
com 0)
6 int i; Declara variável i
7 for (i=0;i<30;i++){ Abre comando for. Inicializa i com 0, verifica
se i é menor que 30, na primeira vez. Nas
outras vezes, soma 1 em i e torna a verificar se
i é menor que 30
8 printf("Entre com a %d ª nota", i+1); Mostra uma mensagem na tela
9 scanf(“%f”,¬as[i]); Recebe valor digitado pelo usuário e guarda na
iésima posição de “notas”. Da primeira vez i é
igual a zero.
10 soma=soma+notas[i]; Acumula a nota recebida na variável “soma”
(inicializada com zero) .
11 } Fecha o comando for, fazendo o programa
voltar na linha 7
12 media= soma/i; Divide “soma” por “i” (sai do looping valendo
30) e guarda o resultado em “media”
13 printf("A media da classe eh: %.1f", media); Imprime o valor de “media”
14 getch(); Pára a execução do programa
15 } Fecha a função principal
4.2Exercícios
4.2.1Faça um programa que receba 5 valores inteiros em um vetor e mostre na tela, os valores
na ordem inversa.
4.2.2Faça um programa que receba as notas de 10 alunos de uma classe em um vetor e mostre a
média das notas.
4.2.3Faça um programa que receba, em um vetor, 200 valores inteiros, a partir do usuário. Após
o carregamento, mostre para o usuário apenas o conteúdo dos índices pares.
4.2.4Faça uma função que receba um vetor de inteiros, seu tamanho e o elemento a ser
procurado como parâmetro e retorne quantas vezes o elemento aparece no vetor.
4.2.5Cadastre em um vetor os índices de inflação dos 12 meses de 2008 (cada índice fará
DP =
∑ x i −x 2
n−1
Onde xi é cada posição do vetor, x traço é a média dos elementos do vetor e n é o total de
elementos.
N −1
S= ∑ x ii 2
i=0
4.2.8Faça um programa que crie um vetor, digitado pelo usuário, com a idade de 100 pessoas.
Mostrar a media aritmética e a freqüência absoluta de uma determinada idade digitada pelo
usuário. Freqüência absoluta de um valor é o número de vezes que o mesmo aparece no conjunto
de valores (vetor).
4.2.9Cadastre em um vetor, 50 números de cheques que foram recebidos por uma loja em um dia
de trabalho. Permita que o usuário faça uma busca neste vetor, afim de verificar se um
determinado número de cheque foi ou não cadastrado. Dê mensagem ao usuário mostrando se o
número consta ou não no cadastro de cheques.
4.2.10. Em uma estrada, foi fixado um sistema de radar móvel contendo dois radares (r1 e r2) a
uma distancia de 10m um do outro. Considere que a velocidade máxima da estrada seja de 80
Km/h e o calculo da velocidade seja V=ds/dt, onde V é velocidade, ds é o espaço percorrido e dt
é o tempo gasto para atravessar este espaço. O programa deve receber o tempo em segundos de
cada veículo captado pelo sensor (em nosso caso, pelo usuário). Caso o veículo ultrapasse o
limite de velocidade o programa também receberá do sensor (do usuário), a placa do veículo. Crie
dois vetores (Placas e Velocidades) para armazenar a placa (apenas os 4 digitos finais) e a
velocidade de cada veículo multado. Quando o sensor (usuário) captar (digitar) 0(zero) no
tempo, significa que o radar foi retirado da estrada e o programa deve ser encerrado.
4.2.11 Em um depósito de pisos usados, o gerente deseja um programa onde o cliente possa dizer
quantos metros quadrados deseja cobrir de piso e ele possa dizer qual dos pisos (padrão 0,2 x 0,2
m) ele tem quantidade suficiente disponível. O programa deve carregar em cada posição do vetor
“Pisos” a quantidade disponível de cada tipo de piso (o índice será o código do piso). Para cada
cliente deverá ser digitado a quantidade em metros quadrados da área a ser coberta e o
programa mostrará o código de todos os pisos com quantidades suficientes.
4.2.14Foi realizada uma pesquisa quanto a religião da população de uma determinada cidade.
Receba do usuário, os códigos ((P) protestante, (B) budista ou (C) católica) da religião dos 1000
moradores desta cidade, guardando-os em um vetor. Mostre o percentual de budistas,
protestantes e de católicos existentes na cidade.
4.2.15Um elevador tem sua carga máxima estipulada em 600 Kg. Um sensor foi instalado para
controlar este limite e avisar aos usuários sobre o perigo de excesso de peso. O sensor capta
código 1 quando uma pessoa entra, código 2 quando sai e código zero quando o dia termina. A
cada pessoa que entra seu peso é registrado em um vetor como valor positivo e quando a pessoa
sai seu peso é registrado como valor negativo. Sempre que o elevador ultrapassar sua carga
4.2.16Um sistema de auditoria foi instalado para verificar a movimentação diária de uma
determinada conta bancária suspeita. Toda movimentação é registrada em um vetor. Os créditos
são valores positivos e os débitos negativos. O sistema emite alerta se a movimentação foi ou
não zerada (créditos = débitos) ao final do dia. A movimentação termina com valor 0.
5 - String
char nome[10];
gets(nome);
Digite o Exemplo 5.2:- Faça um programa que compare o conteúdo de strings e dê mensagens
indicando o resultado da comparação.
1 #include <stdio.h> Permite inclusão de funções de i/o
2 #include <string.h> Permite inclusão de funções para manipulação de string
3 #include <conio.h> Permite inclusão da função getch()
4 int main(){ Abre função principal
5 char buf1[4] = "aaa", buf2[4] = "bbb", Declara e inicializa variáveis
buf3[4] = "ccc";
6 int ptr; Declara variável “ptr”
7 ptr = strcmp(buf2, buf1); Compara conteúdo de “buf2” com conteúdo de “buf1”.
Atribui para “ptr” 0, 1 ou -1,caso sejam iguais, buf2 maior
que buf1 ou buf2 menor que buf1, respectivamente.
8 if (ptr > 0){ Verifica se “ptr” é maior que 0 (buf2 maior que buf1)
9 printf("buffer 2 eh maior que Caso seja, mostra mensagem
buffer 1\n");
10 } Fecha if
11 else{ Abre else
12 if (ptr == 0){ Verifica se “ptr” é igual a 0 (buf2 igual buf1)
13 printf("buffer 2 eh igual ao Caso seja, mostra mensagem
buffer 1\n");
14 } Fecha if
15 else{ Abre else
16 printf("buffer 2 eh menor que o Mostra mensagem, pois se entrou aqui é porque negou as
buffer 1\n"); duas condiões acima (com certeza buf2 é menor que buf1)
17 } Fecha else
18 } Fecha else
19 ptr = strcmp(buf2, buf3); Compara conteúdo de “buf2” com conteúdo de “buf3”.
Atribui para “ptr” 0, 1 ou -1,caso sejam iguais, buf2 maior
Digite o Exemplo 5.3- Faça um programa que mostre a quantidade de caracteres de uma string.
1 #include <stdio.h> Permite inclusão de funções de i/o
2 #include <string.h> Permite inclusão de funções para manipulação de
string
3 #include <conio.h> Permite inclusão da função getch()
4 #include <stdio.h> Permite inclusão de funções de i/o
5 #include <string.h> Permite inclusão de funções para manipulação de
string
6 int main(){ Abre função principal
7 char string[25] = "Kesede Rodrigues Julio"; Declara e inicializa variavel“string” de 25 posições
8 printf(“%d”,strlen(string)); Strlen() retorna a quantidade de caracteres que a
variável string contém. O resultado é mostrado na
tela
9 getch(); Pára a execução do programa
10 } Fecha função principal
Digite o Exemplo 5.4:- Faça um programa que concatene duas strings e mostre o resultado da
concatenação na tela.
1 #include <stdio.h> Permite inclusão de funções de i/o
2 #include <string.h> Permite inclusão de funções para manipulação de string
3 #include <conio.h> Permite inclusão da função getch()
5.1Exercícios
5.1.1Faça um programa que receba uma frase do usuário e mostre quantas vogais a frase
contem.
5.1.2Faça um programa que mostre o número de palavras contidas em um string. O string deve
ser fornecido pelo usuário.
5.1.3 Um programa de criptografia codifica as vogais a, e, i, o, u como 1, 2 ,3, 4, 5,
respectivamente. Faça um programa que receba uma frase codificada do usuário e mostre-a
decodificada.
5.1.4 Faça um programa que receba o nome completo do usuário e mostre a abreviatura do seu
nome.
5.1.5 Faça uma função que receba um string como parâmetro e devolva o conteúdo da string em
ordem alfabética. Um string é um vetor de caracteres contendo '\0' como finalizador.
void stralf(char *s1);
5.1.6 Faça um programa que receba uma frase do usuário. Construa outra string contendo a
primeira letra de cada palavra, da última até a primeira, separados por espaços em branco. Ex.:
Frase : Nesta prova vou tirar um dez.
Iniciais: d u t v p N
5.1.7 Faça um programa que receba um string do usuário e guarde em um vetor os índices da
string que contem a letra 'a'.
5.1.8 Faça um programa que receba o nome completo do usuário, construa outra string com o
primeiro nome completo e os outros abreviados, separados por espaços em branco.
Ex.:
Nome Completo : Kesede Rodrigues Julio
Nome Abreviado: Kesede R J
5.1.9Faça um programa que receba do usuário 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 polêmica espécie de hominídeos
Sequencia: es
Resultado: 2
5.1.10Faça um programa que receba uma frase do usuário e mostre a quantidade de ditongos
e/ou hiatos (duas vogais consecutivas) encontrados.
5.1.11 Faça um programa que mostre para o usuário uma string contendo o primeiro e o último
nome de uma pessoa. O programa deve receber do usuário uma string contendo o nome completo
da pessoa.
5.1.12 Faça um programa que receba o nome completo da pessoa e devolva este nome na forma
bibliográfica.
5.1.13Faça um programa que receba uma frase do usuário. Logo em seguida receba também uma
palavra. O programa deve mostrar uma mensagem dizendo se a palavra digitada esta contida ou
não na frase.
5.1.14Faça um Jogo da Forca.
6 - Matriz
a[3][3];
0 1 2
0 10 20 43
1 27 8 78
2 82 3 7
Figura 6.1 - Alocação de elementos em uma matriz 3x3.
a[1][2] = 78;
for (i=0;i<10;i++){
for (j=0;j<10;j++){
a[i][j] = 0;
}
}
Digite o exemplo 6.1: Faça um programa que carregue, a partir do usuário, uma matriz 10x10
representando o centro de uma cidade. Cada índice, contém o número de acidentes anual
ocorridos em cada cruzamento. O programa deve mostrar a esquina (linha e coluna) que ocorreu
o maior número de acidentes.
1 #include <stdio.h> Include arquivo de cabeçalho
2 int main(){ Abre função principal
3 int ac[10][10], int i_maior, int j_maior, i, j, maior; tot=0; Declara variáveis.
4 for(i=0; i<10; i++){ Carrega a matriz a partir do usuário
for(j=0; j<10;j++){
scanf(“%d”, &ac[i][j]);
}
}
5 maior=ac[0][0]; Incializa a variavel auxiliar “maior”
for(i=0; i<10; i++){ com o primeiro elemento da matriz. Em
for(j=0; j<10;j++){
if(ac[i][j] > maior){ seguida, percorre a matriz verificando
i_maior=i; se existe algum elemento maior que o
j_maior=j;
maior=ac[i][j]; primeiro, guardado na variavel “maior”.
} Caso exista, atualiza “maior” e guarda
}
} os índices (esquina) deste elemento. Ao
getch(); final, pára o programa.
6 } Fecha main()
6.1Exercícios
6.1.1- Faça um programa que carregue em uma matriz as notas dos 30 alunos das 3 turmas que
um professor leciona. Mostre a media de cada turma. Faça um programa para carregar a matriz
e uma para o cálculo das médias.
6.1.2- Faça um programa que mostre o menor valor de uma matriz. Receba os valores e a ordem
da matriz, a partir do usuário.
6.1.3- Faça um programa em C que receba do usuário uma matriz NxM (N é o número de linhas
e M o número de colunas) de números inteiros, e armazene na linha N-1 o somatório dos
elementos de cada coluna (linhas de 0 a N-2). Exibir os resultados. Como exemplo, considere a
matriz 4 x 2 a seguir. A última linha conterá o somatório das linhas anteriores. Ex.:
0 1
0 4 2
1 5 9
2 8 20
3 17 31
6.1.4- Faça a multiplicação de duas matrizes. Receba os valores e as ordens das matrizes, a
partir do usuário. Faça todas as consistências necessárias.
6.1.5 - Preencha uma matriz quadrada da seguinte forma:
se i <> j, m[i, j] = 0 e
se i = j, m[i, j] = 1
A ordem e seus valores devem ser recebidos pelo usuário.
6.1.6- Mostre quantos elementos diferentes de zero existem em uma matriz. A ordem e seus
valores devem ser recebidos pelo usuário.
6.1.7– Verifique se uma determinada matriz é simétrica. A ordem e seus valores devem ser
recebidos pelo usuário.
6.1.8Faça um programa que carregue uma matriz de inteiros 5x5, a partir do usuário. Mostre
na tela a somatória de todos os valores, exceto os valores da diagonal principal.
6.1.9Faça um programa que carregue uma matriz de inteiros 10x10, a partir do usuário.
Carregue um vetor com os valores da diagonal secundária da matriz.
6.1.10Faça um programa que carregue uma matriz de inteiros 10x10, a partir do usuário.
Mostre na tela a somatória de todos os valores, exceto os valores das linhas pares.
6.1.11Faça um programa que carregue uma matriz de inteiros 10x10, a partir do usuário.
Carregue um vetor com os valores da diagonal secundária da matriz.
6.1.12Em uma auto-pecas, o proprietário deseja manter uma tabela de custos de suas peças.
Nesta tabela, cada coluna representa uma peca e cada linha o preço de custo de cada fornecedor.
Faça um programa que permita ao proprietário carregar esta tabela e logo em seguida digitar o
código de uma peça (índice da coluna) para que o programa possa mostrar qual o código do
fornecedor (índice da linha) que tem o preço de custo mais barato.
6.1.13Em uma transportadora, as distâncias entre cidades, são dadas por uma tabela, onde as
linhas são as cidades de origem, e as colunas de destino, e portanto os valores da diagonal
principal desta matriz é zero. Os índices da matriz são os códigos das cidades. Permita que seu
programa mostre qual o destino mais distante, dado uma origem. O programa deve receber a
tabela de distancias (100 x 100), e logo em seguida, receber o código da origem.
6.1.14Considere que um engenheiro deseja saber qual a distância entre diversas localizações em
uma área. Para isto ele tem em mãos apenas as coordenadas x,y de cada localização. Faça um
programa que permita que o engenheiro carregue uma tabela (nx5) onde as colunas representem
as coordenadas x,y de cada ponto, assim como a distância entre eles. O cálculo da distância é
dado por: 2 . O valor de n será dado pelo usuário.
d= ( x 2 − x1) + ( y 2 − y1)
2
6.1.15Escreva um programa que receba uma matriz (10x10) do usuário e mostre quantos
elementos diferentes de zero existem na matriz.
6.1.16Considere uma imagem nivel de cinza representada por uma matriz (512x512), onde cada
posição contem um valor inteiro equivalendo a tonalidade da cor (0..255) naquele ponto.
Carregue as tonalidades de cor de uma linha (vetor de 512) desta imagem através do usuário.
Após o carregamento , faça a suavização desta imagem da seguinte forma: o valor da posição
será igual a média do seu valor e de seus vizinhos Vi = (Vi-1 + Vi + Vi+1) / 3.
Linguagem de Programação C - versão 2009 39
Prof. Kesede R Julio
7 - Estruturas Heterogêneas
struct jogador{
char nome[40];
int scoreMensal;
int scoreDiario;
};
gets(jog1.nome);
jog1.scoreMensal=2500;
jog1.scoreDiario=150;
gets(jog2.nome);
jog2.scoreMensal=3400;
jog2.scoreDiario=100;
Note que temos que usar o “.” (ponto) para separar o nome
da variável estrutura (variável declarada do tipo estrutura) da variável
membro (variáveis internas).
Como uma estrutura funciona como um tipo, podemos
declarar vetores e até matrizes de estruturas. Por exemplo, se
tivéssemos 10 ou 100 jogadores, não seria prático declararmos uma
jogador jog[100];
for (c=0;c<100;c++){
gets(jog[c].nome);
}
Digite o exemplo 7.1: Faça um programa que carregue, a partir do usuário, os dados geográficos
das cidades do Brasil. Inclua estas informações em um vetor de estrutura. Os dados são: nome
da cidade, x e y (a origem 0,0 deste sistema é Brasília). Após a inclusão destes dados, o
programa deve permitir ao usuário a digitação de um cidade qualquer, sua referência x e y, e
listar a distância desta cidade em relação a cada cidade cadastrada.
1 #include <stdio.h> Include arquivos de cabeçalho
#include <stdlib.h>
#include <conio.h>
#include <ctype.h>
#include <math.h>
2 int main(){ Abre função principal
3 typedef struct DadosGeo{ Declara uma struct como tipo contendo
char nome[50]; 3 informações: nome, x, y
int x, y;
};
7.1 Exercícios
8 - Funções
Onde:
tipo de retorno: pode ser void, float, int, char
nome da função: nome que será usado ao chamarmos a
função para executá-la.
parâmetros: variáveis que são recebidas de uma outra
função.
declaração de variáveis: onde, geralmente, criam-se as
variáveis (alocação de espaço na memória)
<comandos e chamadas de funções pré-definidas ou não>:
onde a lógica é codificada
}: fecha a função
Digite o Exemplo 8.1: Faça um programa que execute e mostre a soma de números inteiros,
mostrando uma mensagem de saudação no início do programa e uma mensagem de despedida
no final. Use funções para as mensagens.
1 #include <stdio.h> Declara os protótipos das funções pré-definidas
2 #include <conio.h>
3 void BemVindo(); Declara os protótipos das funções escritas pelo
programador
4 void Despedida();
5 int main(){ Abre a função principal do programa
6 int a,b,c;
7 BemVindo(); Chama a função BemVindo() para execução
9 scanf(“%i”,&b);
10 c=a+b; Soma “a” e “b” e guarda em “c”
Digite o Exemplo 8.2: Faça uma função que posicione o cursor na tela. A função deve receber
os parâmetros de coluna e linha para posicionamento. Faça também a função principal para
apresentar uma mensagem posicionada na tela.
1 #include <stdio.h> Permite o uso da função printf()
Digite o Exemplo 8.3: Faça um programa que receba dois valores, some-os e mostre o
resultado. A função principal (main) deve apenas receber os valores e mostrar o resultado na
tela.
#include <stdio.h> Inclui os protótipos (cabeçalhos de funções) pré-definidos
#include <conio.h>
1 int soma(int x, int y); Declara o protótipo da função soma()
2 int main(){ Abre a função principal, a primeira linha a ser executada no programa
3 int a,b,s; Declara variáveis “a”, “b” e “s”
4 scanf(“%d”,&a); Recebe o valor da variável a, digitada pelo usuário
5 scanf(“%d”,&b); Recebe o valor da variável b, digitada pelo usuário
6 s=soma(a,b); Chama a função soma() e atribui o valores de “a” e “b” para “x “ e “y” da linha 9,
respectivamente. Após a execução da função, o retorno de soma é atribuído para a
variável “s”.
Digite o Exemplo 8.4: Faça uma função que receba o valor do lado de um quadrado e devolva
sua área e seu perímetro.
1 #include <stdio.h> Permite inclusão de funções de i/o
8.3 Exercícios
8.3.1 Escreva uma função capaz de retornar a média aritmética de três parâmetros passados.
8.3.2 Escreva uma função capaz de escrever mensagens em uma posição (x,y) da tela.
8.3.3 Escreva uma função que receba a base e a altura de um triângulo como parâmetro e
retorne a área desse triângulo. Area = (base * altura) / 2
8.3.4 Escreva uma função receba dois valores inteiros e um operador (+, -, * ou /). Faça o
cálculo de acordo com o operador e retorne o resultado. Os valores e o operador devem ser
digitados pelo usuário na main(), onde também será impresso o resultado da operação.
8.3.5 Escreva uma função que receba os três coeficientes de uma equação de 2º grau e devolva
as raízes da equação, caso existam. Retorne 0 se não existir raiz, 1 se existir uma única raiz, e 2
se existirem duas raízes. O protótipo da função será: int bascara(float ax, float bx, float cx,
float *raiz1, float *raiz2);
9 - Arquivo
9.1Armazenamento em disco
Campo
RA Nome Nota
1231 Carlos 5,1 Registro
5432 Mônica 7,8
4533 Tânia 3,4
8754 Aurelio 6,9
Digite o Exemplo 9.1: Faça a manutenção (Inclusão, Consulta Geral, Consulta por Código,
Alteração e Exclusão) de um arquivo de brinquedos de uma fabrica.
1 #include <string.h> Inclui protótipos pré-definidos
#include <stdlib.h>
#include <stdio.h>
#include <ctype.h>
2 void inclusao(); Inclui protótipos das funções que foram criadas pelo
int consulta_geral(); programador
int consulta_cod();
int alteracao();
int exclusao();
char menu();
3 struct Reg_brinq{ Define uma estrutura chamada Reg-brinq, contendo 4
char cod_prod[5]; variáveis de dados e mais uma variável flag (“exc”) para
char descricao[30]; marcar ou não o registro para exclusão.
float preco;
int qtd_vend;
char exc;
};
4 int main(){ Abre main()
5 char opcao='0'; Inicializa opcao com zero para forçar a primeira entrada no
looping.
while (opcao!='6'){ Verifica se a variavel opcao é 6. Usuário deseja encerrar o
programa.
opcao=menu(); Chama a função menu() e atribui o retorno para a variável
“opcao”
switch(opcao){ Verifica se a variável “opcao” é 1,2,3,4,5 ou 6 e chama a
case '1': respectiva função. Caso seja opcao 6, o programa se encerra.
inclusao(); O break fará com que o programa saia do switch.
break;
case '2':
consulta_geral();
break;
case '3':
consulta_cod();
break;
case '4':
alteracao();
break;
case '5':
exclusao();
break;
case '6':
exit(1);
}
}
6 } Fecha main()
23 scanf(“%f”,&brinq.preco);
24 pritnf(“Qtd_Vendida: ");
25 scanf(“%d”.&brinq.qtd_vend);
26 brinq.exc='n'; inicializacao do campo exclusao
27 fwrite(&brinq,sizeof(brinq),1,Arq_brinq grava 1 registro no arquivo e move o ponteiro do arquivo,
); preparando para próxima gravação.
28 printf("Desejar continuar a inclusao Pergunta ao usuário se deseja continuar. Recebe a resposta,
<s/n>? "); converte para maiúscula (toupper()) e guarda na variavel
29 resp=toupper(getchar()); resp. Testa se “resp” é igual a 'S' e, caso seja retorna para o
30 }while (resp=='S'); “do” (linha 15)
31 fclose(Arq_brinq); Fecha o arquivo
32 } Fecha a inclusao()
9.2Exercícios
Considere uma empresa de Informática que deseja controlar suas vendas e emitir alguns
relatórios em tela. Para isso, algumas rotinas são necessárias:
9.2.1Uma rotina que cadastre e consulte seus produtos. O arquivo tem o seguinte lay-out:
Produtos: Código do produto(alfanum.), descricao do produto(alfanum.), preço (moeda) e quant.
em estoque (numérico). Faça menu de opção. Use funções separadas para incluir, consultar e
apresentar o menu.
9.2.2Uma rotina que cadastre seus clientes. O arquivo tem o seguinte lay-out:
Clientes: Código do cliente(alfanum.), razao social(alfanum.), cnpj (alfanum.),
endereço(alfanum.), cidade(alfanum.), estado(alfanum.), telefone(alfanum.).
9.2.3Uma rotina que cadastre as vendas dos produtos. O arquivo tem o seguinte lay-out:
Vendas: Código do cliente(alfanum.), Código do produto(alfanum.), quantidade vendida (num.).
Uma rotina que mostre todos os produtos de um determinado cliente digitado pelo usuário. O
usuário entrará com o código do cliente.
9.2.4Todos os clientes do estado de São Paulo em ordem alfabética por razão social.
9.2.5Uma Consulta Geral de todos os produtos.
9.2.6Uma rotina que mostre a quantidade de produtos em estoque.
9.2.7Uma rotina que mostre o valor total do estoque.
9.2.8Uma rotina que mostre o valor médio do estoque.
9.2.9Faça uma função que receba, do usuário, o código, o nome, o nr de mortes, de todos os
bairros de Campinas. Guarde as informações digitadas em arquivo.
9.2.10Faça uma função que leia um arquivo já gravado (na questão 9.2.9) e guarde em uma
matriz (definido por parâmetro), o código, o nr de mortes dos bairros com mais de 10 mortes no
mês. O tamanho (qtd de linhas) da matriz deve ser retornado.
10 - Allegro
Digite o Exemplo 10.1 :- Faça um programa em modo gráfico que mostre um retângulo, um
retângulo preenchido, uma reta, um circulo e 5 pontos na tela.
1 #include <allegro.h> Inclui arquivo de protótipos para
funções do Allegro
2 int main(){ Abre main()
3 allegro_init(); inicializa Allegro
4 install_keyboard(); Inicializa teclado
5 set_gfx_mode(GFX_AUTODETECT_WINDOWE define o modo grafico, abrindo uma
D, 640, 480, 0, 0); janela 640x480
6 rect(screen,10,10,100,100,makecol(0,0,255)); desenha retangulo azul de 10,10 à
100,100
7 rectfill(screen,200,200,540,100,makecol(0,255,0 desenha retangulo preenchido de verde
)); de 10,10 à 100,100
8 line(screen,10,400,500,250,makecol(255,0,0)); desenha linha vermelha de 10,400 à
500,250
9 circle(screen,600,600,50,makecol(155,100,0)); desenha circulo de centro 600,600 de
raio 50
10 putpixel(screen,450,450,makecol(200,200,50)); desenha 5 pontos na tela
11 putpixel(screen,460,450,makecol(200,200,50));
12 putpixel(screen,470,450,makecol(200,200,50));
13 putpixel(screen,480,450,makecol(200,200,50));
14 putpixel(screen,490,450,makecol(200,200,50));
15 readkey(); pára o programa
16 } Fecha main()
17 END_OF_MAIN() necessario p/ portabilidade
10.1 Exercícios
Básicos
10.2.1.Desenhe na tela um retângulo de 50 x 100 pontos, utilizando putpixel(), a partir da
posição (100,100)..
10.2.2.Trace linhas diagonais (45º) ajustadas ao tamanho da tela a partir da diagonal principal
até o início da janela, espaçadas de 10 em 10 pontos. O tamanho da janela deverá ser 300 de
largura por 300 de altura.
10.2.3.Trace linhas diagonais (45º) ajustadas ao tamanho da tela a partir da diagonal
secundária até o final da janela, espaçadas de 10 em 10 pontos. O tamanho da janela deverá
ser de 500 de largura por 500 de altura.
10.2.4.Faça um programa que desenhe a bandeira do Brasil na tela
if
10.2.5.Faça um programa que desenhe um retângulo de 50 x 100 (50 de largura por 100 de
altura) em uma janela gráfica de 800x600. O usuário deverá decidir qual dos 4 cantos da
janela gráfica será desenhado este retângulo, digitando 1 (canto superior esquerdo), 2 (canto
While
10.2.7. Faça 20 circunferências circunscritas na tela. Use while.
10.2.8. Refaça o exercício 11.2.2, desenhando uma circunferência de cada cor.
10.2.9. Refaça o exercício 11.2.2, pintando o interior de cada área formada entre elas com cores
diferentes.
10.2.10. Faça 50 retângulos circunscritos na tela.
10.2.11. Refaça o exercício 11.2.5, desenhando um retângulo de cada cor.
10.2.12. Refaça o exercício 11.2.5, pintando o interior de cada área formada entre eles com cores
diferentes.
10.2.13. Faça um campo de futebol com faixas no gramado de cor verde escuro e claro.
10.2.14.Desenhe uma grade de 50x50, a partir da linha 0, coluna 0, com intervalo entre linhas e
colunas de 10 pontos, em uma janela gráfica.
10.2.15.Preencha uma área quadrada de 100x100 da janela gráfica, usando pontos (putpixel()),
a partir da posição 50,50. Os pontos devem estar espaçados de 3 pontos entre cada um deles.
10.2.16.Faça a representação de um ambiente (contornado de linha preta), através de uma grade
cinza clara, de 300x300 com espaçamento de 10x10 para cada vão. Pinte de preto um destes
vãos para representar a localização de um sensor.
Animação
10.2.17. Faça uma bola amarela ficar "pingando" na tela. Faça o desenho na própria tela
(screen).
10.2.18.Faça uma bola amarela ficar "pingando" na tela, usando a técnica double-buffer. A idéia
desta técnica é realizar todas as atualizações em uma variável de memória e, depois disso,
copiar (função blit()) a variável para a tela
10.2.19.Refaça o exercício 11.2.10 mudando a cor da bola sempre que a mesma tocar a borda.
Vetor
10.2.20. Permita que o usuário digite 10 valores referentes ao tamanho de 10 linhas a serem
desenhadas na tela. Carregue os valores em um vetor e desenhe as linhas com intervalo de 20
pixel entre elas.
10.2.21.Permita que o usuário digite valores referentes as cores RGB de 10 círculos, a serem
desenhados na tela. Estes valores deverão ser armazenados em 3 vetores, um para cada cor.
Os círculos não poderão se sobrepor.
10.2.22.Desenhe na tela um gráfico, que represente os valores dos PH´s da chuva de cada
município,. Receba o vetor de índices de Ph de 20 municípios. Os eixos (cuja origem deve
estar em 10,400) devem ser pretos e as linhas verticais coloridas (uma cor representando cada
município),. Escreva os títulos do gráfico, do eixo x e do eixo y.
Matriz
10.2.23.Receba uma matriz e seu tamanho (total de linhas e de colunas),, referentes a
localização de cada cidade dentro do estado. Após o recebimento, desenhe um círculo de raio
Tarefa 3: Corrida
1. Iniciar a corrida
2. Correr até acabar o percurso
3. Parar de correr
pois eles são os “comandos” que deverão ser seguidos por nosso
cérebro para atingir o objetivo de resolver o problema. Na tarefa 1,
temos: juntar, passar, encher, lavar, lavar. Na tarefa 2, temos: entrar,
dar, tirar, dirigir, parar. Na tarefa 3, temos: iniciar, correr, parar.
Comandos descrição
Inicio Marca o início da lógica
inicio
leia nota 1
leia nota 2
media ← (nota 1 + nota 2) / 2
escreva media
fim
Símbolos Descrição
Início/Fim – determina o começo ou final de uma seqüência de
procedimentos.
Atribuição – altera conteúdo da memória.
Abre/fecha arquivo
Início
Leia Nota 1
Leia Nota 2
Escreva media
Fim
/**************************************************
PortaP.h - Programa TEST.c do Roger.com modificado
-- test interface to inpout32.dll
( http://www.logix4u.net/inpout32.htm )
Copyright (C) 2003, Douglas Beattie Jr.
Modificado em 2006, Kesede R Julio
*******************************************************/
#include <stdio.h>
#include <conio.h>
#include <windows.h>
HINSTANCE hLib;
inpfuncPtr inp32;
oupfuncPtr oup32;
int InicializaPP(void)
{
if (hLib == NULL) {
printf("LoadLibrary Failed.\n");
return -1;
}
if (inp32 == NULL) {
printf("GetProcAddress for Inp32 Failed.\n");
return -1;
}
if (oup32 == NULL) {
printf("GetProcAddress for Oup32 Failed.\n");
return -1;
}
void FinalizaPP(){
FreeLibrary(hLib);
}
Digite o Exemplo B1:- Faça um programa que acenda dois leds quaisquer ao mesmo tempo e
faça tocar um beep.
1 #include "PortaP.h" Inclui as funções de acesso (InicializaPP()
e FinalizaPP()) à porta paralela
2 int main(){ Abre main()
8 } Fecha main()
Seção 2.3
// Exercício 2.3.1 case 3:
printf("quarta");
#include <stdio.h> break;
#include <stdlib.h> case 4:
printf("quinta");
int main(){ break;
int dia; case 5:
printf("sexta");
scanf("%d",&dia); break;
case 6:
switch (dia){ printf("sabado");
case 0: break;
printf("domingo"); default:
break; printf("Digite um numero de 0 a 6");
case 1: }
printf("segunda"); printf("\n");
break; system("pause");
case 2: }
printf("terca");
break;
// Exercício 2.3.7
// Verifica se eh triangulo
#include <stdio.h> if (lado1>=lado2 && lado1>=lado3){
#include <stdlib.h> maior=lado1;
menor1=lado2;
int main(){ menor2=lado3;
float lado1, lado2, lado3, maior, menor1, }
menor2; if (lado2>=lado1 && lado2>=lado3){
maior=lado2;
scanf("%f",&lado1); menor1=lado1;
scanf("%f",&lado2); menor2=lado3;
scanf("%f",&lado3); }
Seção 3.3
Seção 7.6
/*---------------------------------------------------- scanf("%f",&n1);
7.6.1 Escreva uma função capaz de scanf("%f",&n2);
retornar a média aritmética de três scanf("%f",&n3);
parâmetros passados. med=media(n1,n2,n3);
----------------------------------------------------*/ printf("A media eh: %.1f",med);
system("pause>nul");
#include <stdio.h> }
#include <stdlib.h>
float media(float nota1, float nota2, float
float media(float nota1, float nota2, float nota3){
nota3); float m;
/*-----------------------------------------------
7.6.3 Escreva uma função que receba a base scanf("%f",&altura);
e a altura de um triângulo e retorne a área scanf("%f",&base);
desse triângulo. Area = (base * altura) / 2 printf("A area eh: %f",area(altura,base));
-----------------------------------------------*/ system("pause>nul");
}
#include <stdio.h>
#include <stdlib.h> float area(float a, float b){
float ar;
float area(float a, float b);
ar=(b*a)/2;
int main(){ return ar;
float altura, base; }
/*------------------------------------------ scanf("%i",&valor);
7.6.6 Efetue, recursivamente, a soma dos 10 printf("%i",soma(valor));
primeiros números inteiros. Faça o diagrama system("pause>nul");
de execução. }
------------------------------------------*/
#include <stdio.h> int soma(int n){
#include <stdlib.h> if (n==1){
return 1;
int soma(int n); }
else{
int main(){ return n+soma(n-1);
int valor; }
}
/*------------------------------------------ system("pause>nul");
7.6.7 Mostre, recursivamente, os }
números de 1 a 10. Faça o diagrama de
execução. void mostra(int cont){
------------------------------------------*/ if (cont==1){
#include <stdio.h> printf("%i\n",cont);
#include <stdlib.h> }
else{
void mostra(int cont); mostra(cont-1);
printf("%i\n",cont);
int main(){ }
}
mostra(10);
Seção 9.3
// Exercício 9.3.1 for (i=0;i<tam;i++){
if (elem == *(vet+i) ){
int main(){ achou=1;
int tam, *vet, elem,i, achou=0; i=tam;
}
printf("Qual tamanho do vetor: "); }
scanf("%d",&tam);
if (achou){
vet=(int *) malloc(tam*sizeof(int)); printf("Achou!!!");
}
for (i=0;i<tam;i++){ else{
scanf("%d",vet+i); printf("Nao achou");
} }
free(vet);
printf("Qual o elemento que deseja encontrar? system("pause");
"); }
scanf("%d",&elem);
Bibliografia
Agradecimentos