Escolar Documentos
Profissional Documentos
Cultura Documentos
http://ufpr.dl.sourceforge.net/sourceforge/mingw/MinGW-5.1.4.exe
http://www.eclipse.org/downloads/packages/eclipse-ide-cc-
developers/heliosr
Feito isso, estamos com tudo pronto para comearmos a criar nossos
primeiros programas em C usando o ambiente que acabamos de instalar.
1.3 Primeiros passos no ambiente de programao
- Lembra disso?
%d Inteiro (int)
%f Real (float)
%c Caractere (char)
- Exerccios
Execuo:
Da mesma forma que precisamos dar algum tipo de retorno para que
o usurio saiba o que est acontecendo em nosso programa (funo printf),
muitas vezes precisamos que o usurio interaja com o programa informando
dados para que sejam usados nos clculos que o programa ir executar.
Para isso, usaremos a funo scanf, que possui sintaxe bem parecida com o
printf e serve para lermos um valor do teclado e armazenarmos em uma
varivel.
char Caracteres A, z, 0, ;, *
Alfanumricos
#include<stdbool.h>
Para usar o valor que foi atribudo a uma varivel basta utilizarmos o
prprio nome da varivel nos clculos posteriores. Vejamos o exemplo a
seguir (Figura 19):
1.9.1 Expresses
Operador Significado
+ Soma
- Subtrao
* Multiplicao
Operador Smbolo
Igual ==
Maior >
Menor <
Diferente !=
Conjuno E &&
Disjuno OU ||
Negao NO !
- Exerccios
Execuo:
3. Faa um programa que crie trs variveis para receber as trs notas de
um aluno e calcule e imprima a mdia desse aluno.
4. Faa um programa que receba sua idade e escreva sua idade daqui a 10
anos
5. Faa um programa que calcule o resultado da expresso: (537 - 285) * 10
+ (3 * (72 - 17)).
13.Sabendo que lato composto por 70% de cobre e 30% de zinco, faa
um programa que calcule a quantidade de cobre e zinco para uma
determinada quantidade de lato informada pelo usurio.
14.Faa um programa que imprima uma caixa, uma oval, uma seta e um
losango usando asteriscos da seguinte forma:
Unidade 2 Comandos de seleo e de repetio
if (condio) comandos;
- Exerccios
5. Faa um programa que leia dois valores reais (float) do teclado e calcule
a diviso entre eles. Se o segundo for zero imprima (DIVISO POR ZERO)
6. Faa um programa que receba 3 nmeros e imprima o menor deles.
9. Faa um programa que leia 4 nmeros e imprima a soma dos que forem
par.
Esse nosso teste teve apenas trs casos diferentes, mas no caso de
existirem mais condies a serem testadas, nosso cdigo tende a ficar cada
vez mais bagunado. Vejamos o exemplo a seguir:
Figura 36. Vrios if-else aninhados
- Exerccios
a. 001: Parafuso;
b. 002: Porca;
c. 003: Prego;
switch (varivel) {
break;
break;
...
default: comandos_default;
break;
Podemos ter ainda 2 (ou mais) case para a mesma seo de cdigo.
Para isto, basta no colocarmos o comando break entre as opes como no
exemplo a seguir:
- Exerccios
Execuo:
a. 001: Parafuso;
b. 002: Porca;
c. 003: Prego;
- Exerccios
importante observar ainda que, quando a entrada for -1, esse valor
no deve ser considerado para os clculos, ou seja, para a soma dos
nmeros inseridos pelo usurio. Desta forma, precisamos colocar um
comando if na linha 12 que s autorizar o clculo a ser atualizado se o
valor de numero for diferente de -1. Abaixo (Figura 50) temos um exemplo
de sada para este programa:
- Exerccios
2 Alterar
3 Excluir
4 Sair
56789
O fatorial de 5 120
Continuar (sim/no)? no
Incio do intervalo: 17
Final do intervalo: 29
18 21 24 27
Ex: 1 1 2 3 5 8 13 21 34 55
Execuo:
do {
} while(condio);
- Exerccios
- Exerccios
H=1+1/2+1/3+1/4+...+1/n
tipo nome_da_varivel[quantidade_de_posies]
nome_da_varivel[posio]
fcil notar, ainda, que temos uma forma mais prtica de reescrever
esta linha 12 atravs de um comando de repetio. Vejamos essa
transposio na Figura 64, a seguir:
- Exerccios
Vetor 2: [4, 2, 9, 7, 6]
Execuo:
Vetor 2: [4, 2, 9, 7, 6]
Vetor Resultado: [9, 10, 19, 10, 7]
para i de 0 at tamanho[vetor] - 1
para j de i at tamanho[vetor]
aux = vetor[i]
vetor[i] = vetor[j]
vetor[j] = aux
char nome_da_variavel[quantidade_de_posies]
- Exerccios
1) (Resolvido) Faa um programa que receba seu nome e escreva bom dia
para voc.
Execuo:
#include <string.h>
- Exerccios
Execuo:
3.3 Matrizes
Podemos definir uma matriz como uma extenso dos vetores para
mais dimenses. Ou ainda, redefinir um vetor como sendo uma matriz
unidimensional. Sendo assim, a definio de matriz a mesma de vetor,
uma estrutura que armazena uma sequncia de valores do mesmo tipo. No
entanto, as matrizes podem ter 2, 3 ou mais dimenses. A declarao de
uma matriz feita da maneira a seguir:
tipo nome_da_varivel[posies1][posies2]...[posiesn]
nome_da_variavel[linha][coluna]
Para ficar mais claro vejamos o mesmo exemplo anterior usando esse
tipo de declarao na Figura 74, a seguir:
Figura 74. Inicializao de uma matriz
- Exerccios
6) Faa um programa que receba uma matriz 5x5 e verifique se essa matriz
triangular. Uma matriz triangular possui todos os elementos abaixo ou
acima da diagonal principal so iguais a zero.
struct nome_da_estrutura {
tipo_do_membro1 nome_do_membro1;
tipo_do_membro2 nome_do_membro2;
...
tipo_do_membro2 nome_do_membro2;
} variveis_estrutura;
- Exerccios
1. (Resolvido) Faa um programa que defina uma estrutura com os dados
de um carro, a saber: modelo (string), fabricante (string), ano (inteiro),
quantidade de portas (inteiro), potncia do motor (float), tipo de
combustvel (string), vidro eltrico (bool), trava eltrica (bool), ar
condicionado (bool), direo hidrulica (bool).
c. Um prato em um restaurante
- Exerccios
tipo_de_retorno nome_da_funo ( ) {
comandos;
5.3 Procedimentos
void
void nome_do_procedimento ( ) {
comandos;
Vejamos que, nesse caso, nossa funo est bem mais compacta.
Esta a grande vantagem de programarmos utilizando funes. Cada item,
em separado, que quisermos implementar, pensamos em funes de forma
a simplificar a programao e facilitar o entendimento. O resultado da
execuo desse programa pode ser visto na Figura 100:
Vale ressaltar, ainda, que podemos ter vrias funes com o mesmo
nome, mas com parmetros diferentes. A distino no momento da
chamada feita de acordo com os parmetros passados.
- Exerccios
1. Faa um programa que contenha uma funo subtrao, que receba dois
valores e retorne a subtrao dos dois.
Execuo:
7. Faa um programa que contenha uma funo que receba dois vetores e
retorne o vetor resultante da soma desses dois. Para que uma funo
retorne um vetor, devemos declar-la com um asterisco logo antes do
nome, por exemplo: int *soma(int[] vetor1, int tam1, int[] vetor2, int
tam2).
c. Apagar todos os dados lidos da pessoa (ou seja, inserir vazios nos
valores string e zeros nos valores numricos)
10.Faa um programa que contenha uma funo que receba trs valores e
retorne o menor entre eles.
11.Faa um programa que contenha uma funo que receba uma string e
retorne quantas consoantes existem na string recebida.
12.Faa um programa que contenha uma funo que receba uma string e
retorne outra string com todas as letras substitudas pela correspondente
maiscula.
14.Faa um programa que contenha duas funes que recebam dois inteiros
e retornem: uma o mdc e outra o mmc entre os nmeros recebidos.
Isso evita, ainda, que tenhamos que passar o vetor x como parmetro
(linha 15), j que temos acesso a ele nas duas funes. O resultado da
execuo deste programa o mesmo j visto na Figura 102.
}
Na verdade, fazendo isso, estamos passando uma referncia para o
local de memria onde est realmente armazenada a varivel passada, ou
seja, um ponteiro. assim que se torna possvel simular a passagem por
referncia: passamos o endereo de memria e a funo altera quem
estiver naquele endereo, no caso, uma varivel declarada fora da funo.
Com isso, tambm devemos colocar o * antes do nome da varivel sempre
que quisermos usar essa varivel dentro da funo. Vejamos o exemplo da
Figura 108:
- Exerccios
1. Faa um programa que contenha uma funo que receba dois
parmetros inteiros por referncia e troque o valor dessas variveis.
Execuo:
5. Faa um programa que contenha uma funo que receba uma string por
referncia e altere essa string para seu valor ao contrrio.
5.8 Recursividade
fatorial(5) =
5 * fatorial(4) =
5 * 4 * fatorial(3) =
5 * 4 * 3 * fatorial(2) =
5 * 4 * 3 * 2 * fatorial(1) =
5*4*3*2*1=
5*4*3*2=
5*4*6=
5 * 24 = 120
- Exerccios
hanoi(n-1, A, C)
hanoi(n-1, C, B)