Explorar E-books
Categorias
Explorar Audiolivros
Categorias
Explorar Revistas
Categorias
Explorar Documentos
Categorias
Suzete F Silva
kesedejulio@gmail.com, 2suzetefs@gmail.com
Apostila de
Linguagem
C/C++
Campinas So Paulo - Brasil
Sumrio
1.
Introduo....................................................................................................................3
2.
Comandos de Deciso...........................................................................................11
3.
Comandos de Repetio............................................................................................17
4.
Vetor............................................................................................................................25
5.
String...........................................................................................................................29
6.
Matriz..........................................................................................................................35
7.
Estruturas Heterogneas...........................................................................................37
8.
Funes.......................................................................................................................41
9.
10.
Arquivo.......................................................................................................................48
11.
Allegro.........................................................................................................................61
12.
13.
14.
Apndices C Exerccios..........................................................................................74
15.
16.
Bibliografia.................................................................................................................90
1. Introduo
1
Recomendaes ao Aluno
AVISO
O desespero causa bloqueio. Fique
calmo!
Ficar calmo no significa fazer nada.
Pesquise, estude, pergunte.
2
#include <stdio.h>
#include <conio.h>
int main(){
printf("Kesede R Julio");
getch();
Digite o Exemplo 1.1(C++):- Faa um programa que escreva seu nome na tela.
#include <iostream>
int main(){
cout<<"Kesede R Julio";
system(pause);
Digite o Exemplo 1.2(C):- Faa um programa que mostre uma mensagem de Ol personalizada. Permita
que o usurio digite seu nome.
#include <stdio.h>
#include <conio.h>
int main(){
char nome[30];
scanf(%s,nome);
getch();
Digite o Exemplo 1.2(C++):- Faa um programa que mostre uma mensagem de Ol personalizada.
Permita que o usurio digite seu nome.
#include <iostream>
int main(){
char nome[30];
cin>>nome;
system(pause);
Digite o Exemplo 1.3(C):- 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.
#include <stdio.h>
#include <conio.h>
int main(){
No precisam ser
float salario;
float grat;
float soma;
scanf(%f,&salario);
10
scanf(%f,&grat);
11
12
13
14
getch();
Digite o Exemplo 1.3(C++):- 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.
#include <iostream>
int main(){
float salario;
float grat;
float soma;
cin>>salario;
10
cin>>grat;
11
12
13
system(pause);
14
Estrutura de um Programa
Resultado da
Resultado da
Tipos e Variveis
O que aceita
conjunto dos nmeros inteiros
qualquer caractere
conjunto dos nmeros reais
conjunto dos nmeros reais
tamanho
2 bytes com sinal
1 byte com sinal
4 bytes com sinal
8 bytes com sinal
Assim,
float salario;
reserva um espao de memria chamado salario do tipo float.
7
Operadores Bsicos
Descrio
&&
&
Ou
Lgicos
Smbolo
Descrio
==
Igualdade
!=
Diferente
<
Menor
<=
Menor ou igual
>
Maior
>=
Maior ou igual
2. Comandos de
Deciso
Comando if/else
executar
um
ou
mais
comandos
#include <stdio.h>
scanf()
#include <conio.h>
int main(){
float nota;
nota
scanf(%f, ¬a);
if (nota>=6){
printf(Aprovado);
Fecha o if
else{
10
printf(Reprovado);
seja
menor
que
6.
imprime
mensagem
11
Fecha else
12
getch();
13 }
Digite o Exemplo 2.1(C++):- 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 <iostream>
int main(){
float nota;
cin >>nota;
if (nota>=6){
cout<<Aprovado;
else{
10
Fecha o if
if)
cout<<Reprovado;
11
Fecha else
12
system(pause);
13
nota for maior ou igual a 6, Exame se sua nota estiver entre 4 e 5,9 ou
Reprovado, se sua nota for menor que 4.
1
#include <stdio.h>
#include <conio.h>
int main(){
scanf()
float nota;
scanf(%f, ¬a);
if (nota>=6){
nota
printf(Aprovado);
else{
10
Fecha o if
Verifica se nota menor que 6 (caso
contrrio do if)
Verifica se a nota maior que 4
if (nota>=4){
11
printf(Exame);
12
Fecha o if
13
else{
14
printf(Reprovado);
seja
menor
que
4,
imprime
mensagem
15
Fecha else
16
Fecha else
17
getch();
18 }
Digite o Exemplo 2.2(C++):- 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, Exame se sua
nota estiver entre 4 e 5,9 ou Reprovado, se sua nota for menor que 4.
1
#include <iostream>
int main(){
float nota;
cin>>nota;
if (nota>=6){
7
8
else{
10
Fecha o if
Verifica se nota menor que 6 (caso contrrio do
if)
if (nota>=4){
11
12
cout<<Aprovado;
cout<<Exame;
}
13
else{
14
cout<<Reprovado;
15
Fecha else
if)
16
Fecha else
17
system(pause);
18
Switch
#include <stdio.h>
e scanf()
#include <conio.h>
int main(){
int codigo;
printf(Digite o codigo: );
scanf(%i,&codigo);
Abre
Define
chamado salario
funo
espao
principal
de
do
memria
valor
do
cdigo
do
usurio
7
switch (codigo){
case 1:
Abre o
verificao do cdigo
comando
switch
printf(CD);
10
break;
Sai o switch
11
case 2:
12
printf(Livro);
13
break;
Sai o switch
14
case 3:
15
printf(Revista);
16
break;
Sai o switch
17
case 4:
18
printf(Jornal);
19
break;
Sai o switch
20
para
default:
cases
21
printf(Opo Invlida);
22
Fecha switch()
23
getch();
24
Digite o exemplo 2.1(C++): 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
#include <iostream>
int main(){
int codigo;
cout<<Digite o codigo: ;
cin>>codigo;
switch (codigo){
case 1:
cdigo
cout<<CD;
10
break;
Sai o switch
11
case 2:
12
cout<<Livro;
13
break;
Sai o switch
14
case 3:
15
cout<<Revista;
16
break;
Sai o switch
17
case 4:
18
cout<<Jornal;
19
break;
Sai o switch
20
default:
21
cout<<Opo Invlida;
22
Fecha switch()
23
system(pause);
24
3. Comandos de
Repetio
10 Comando while
Sintaxe simplificada:
while (<condio>){
<comandos e funes>
}
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(C):- Mostre os nmeros inteiros de 1 a 100.
#include <stdio.h>
#include <conio.h>
int main(){
int i=1;
printf(Imprimindo os
nmeros de 1 a 100);
while (i<=100){
printf(%i\n, i);
i=i+1;
Fecha o while
10
getch();
11 }
#include <iostream>
int main(){
4
5
int i=1;
cout<<Imprimindo os
nmeros de 1 a 100;
while (i<=100){
cout<<\n<< i;
i=i+1;
Fecha o while
10
system(pause);
11 }
#include <stdio.h>
#include <conio.h>
int main(){
float media;
printf(Digite as idades\n);
while (cont<=10){
a media
scanf(%i, &idade);
somaid=somaid+idade;
10
cont=cont+1;
11
Fecha o while
12
media=somaid/10;
Calcula a media.
13
14
getch();
15 }
#include <iostream>
int main(){
float media;
cout<<Digite as idades\n;
while (cont<=10){
a media
cin>>idade;
somaid=somaid+idade;
10
cont=cont+1;
11
Fecha o while
12
media=somaid/10;
Calcula a media.
13
14
system(pause);
15 }
11 Comando do-while
#include <stdio.h>
#include <conio.h>
int main(){
scanf()
do{
Abre o do-while
Imprime mensagem (rotulo do que
printf(Nome:);
fflush(stdin);
gets(nome);
10
printf(Horas trabalhadas:);
11
scanf(%f, &horas);
12
printf(Valor hora:);
13
scanf(%f,&valor_h);
14
sal=horas * valor_h;
15
16
17
fflush(stdin);
18
resp=toupper(getchar());
19
20
}while (resp=='S');
ser digitado)
ser digitado)
ser digitado)
usurio
continuar
ao
usurio
se
deseja
no
do
usurio
#include <iostream>
int main(){
Abre
programa
funo
principal
do
do{
Abre o do-while
Imprime mensagem (rtulo do
que ser digitado)
cout<<Nome:;
fflush(stdin);
cin>>nome;
10
cout<<Horas trabalhadas:;
11
cin>>horas;
12
cout<<Valor hora:;
13
cin>>valor_h;
Recebe
trabalhadas do usurio
14
sal=horas * valor_h;
15
cout<<Salario : <<sal<<\n;
16
17
fflush(stdin);
18
resp=toupper(cin>>resp);
19
20
}while (resp=='S');
horas
trabalhadas
do
usurio
valor
das
horas
Tela
<var. 1>
<var. 2>
<var. 3>
<var. 4>
<val. 1>
<val. 4>
<val. 5>
<val. 7>
<mensagem 1>
<val. 6>
<val. 8>
<mensagem 2>
<val. 2>
<val. 3>
Cdigo (C++)
qtd=1;
somaid=0;
somaid=0;
while (qtd<=5){
while (qtd<=5){
scanf("%i",&idade);
cin>>idade;
somaid=somaid+idade;
somaid=somaid+idade;
qtd=qtd+1;
8
9
qtd=qtd+1;
}
cout<<"A soma das idades eh "<<somaid;
Teste de mesa
Memria
Idade
somaid
Teste de mesa
tela
qtd
Memria
Idade
somaid
tela
qtd
20
qtd
20
Teste de mesa
Idade
somaid
Teste de mesa
Memria
tela
Idade
somaid
qtd
20
0
20
1
2
Memria
tela
Idade
0
20
tela
qtd
tela
Idade
somaid
qtd
20
25
0
20
1
2
tela
Idade
somaid
qtd
20
25
0
20
45
1
2
tela
Idade
somaid
qtd
20
25
23
0
20
45
1
2
3
tela
Idade
somaid
qtd
20
25
0
20
45
1
2
3
tela
Idade
somaid
qtd
20
25
23
0
20
45
68
1
2
3
tela
Idade
somaid
qtd
20
25
0
20
1
2
23
45
68
3
4
Memria
Idade somaid
20
25
23
30
0
20
45
68
tela
qtd
1
2
3
4
Memria
tela
tela
Idade
somaid
qtd
20
25
23
30
0
20
45
68
98
1
2
3
4
Teste de mesa
Memria
tela
Idade
somaid
qtd
20
25
23
30
28
0
20
45
68
98
126
1
2
3
4
5
tela
Idade
somaid
qtd
20
25
23
30
0
20
45
68
98
1
2
3
4
5
tela
Idade
somaid
qtd
20
25
23
30
28
0
20
45
68
98
126
1
2
3
4
5
6
tela
Idade
somaid
qtd
20
25
23
30
28
0
20
45
68
98
126
1
2
3
4
5
6
Elementos do vetor
ndices do vetor
Sintaxe:
for (<inicializao>;<condio>;<incremento>){
<comando>
}
Este comando permite repetir a execuo de um ou mais
comandos que estaro dentro do seu bloco de comandos. Como
podemos ver, tem a mesma funo que os comandos while e do-while.
Ele permite 3 argumentos; o 1 geralmente usado para inicializao
da varivel de controle (contador) do looping e executado apenas da
primeira vez; o 2 para a condio de execuo dos comandos e
testado todas as vezes e o 3 para incremento da varivel de controle e
executado todas as vezes. Ele geralmente usado quando sabemos
quantas repeties teremos.
Assim,
for (i=0;i<10;i++){
a[i]=0;
}
far a inicializao da varivel i com 0; testar se i menor que 10;
enquanto for menor, atribui 0 para a posio do vetor a[i] (onde i tem
um valor a cada looping); incrementa i e testa novamente at que a
condio seja falsa, ou seja, o valor de i seja 10 (posio invlida no
vetor).
Digite o Exemplo 4.1(C):- Faa um programa que receba as notas dos alunos de uma classe de 30
alunos e calcule a mdia da classe. Estas notas devem ser carregadas em um vetor.
1
#include <stdio.h>
#include <conio.h>
int main(){
int i;
Declara varivel i
for (i=0;i<30;i++){
scanf(%f,¬as[i]);
10
soma=soma+notas[i];
11
12
media= soma/i;
13
14
getch();
15
Digite o Exemplo 4.1(C++):- Faa um programa que receba as notas dos alunos de uma classe de 30
alunos e calcule a mdia da classe. Estas notas devem ser carregadas em um vetor.
1
#include <iostream>
int main(){
int i;
Declara varivel i
for (i=0;i<30;i++){
cin>>notas[i];
10
soma=soma+notas[i];
11
12
media= soma/i;
13
14
system(pause);
15
5. Strin
g
String uma cadeia de caracteres, ou seja, uma sequncia de
caracteres que so alocados na memria de forma contgua. Uma
caracterstica particular da string o seu terminador (\0), que
colocado na ltima posio da cadeia. Dessa forma, quando o printf()
imprime um string, ele imprime todos os caracteres at que encontre
um \0. Ns podemos declarar um string da seguinte forma:
char nome[10];
quando fazemos esta declarao, o compilador reserva um espao em
memria chamado nome com tamanho de 10 caracteres, e vincula a
cada posio um numero de identificao o qual chamamos de ndice. O
ndice da primeira posio ser sempre 0 (zero).
Quando pedimos para o usurio digitar algo em um string, o
compilador automaticamente aloca o terminador '\0' para a posio que
sucede o ltimo caractere digitado pelo usurio. Geralmente, utilizamos
a funo gets() para receber strings do usurio, pois esta funo
permite a digitao de vrias palavras no string, diferente do scanf()
que permite apenas uma. Assim:
gets(nome);
recebe um string do usurio e coloca, automaticamente, um terminador
no final.
Cada posio do string pode ser acessada separadamente, assim:
strcpy(nome,Isto e um string");
printf(%c,nome[2]); // imprimir o caractere 't'
A linguagem C/C++ fornece uma biblioteca de funes para
manipulao de strings. Para utiliza-la, voc deve incluir em seu
programa o header string.h. Algumas dessas funes so:
Funo
strcpy()
strcmp()
strlen()
strcat()
Descrio
copia o contedo de um string para outro.
compara o contedo de duas strings.
devolve o tamanho da string
concatena duas strings
#include <stdio.h>
#include <string.h>
#include <conio.h>
int main(){
char string[10];
strcpy(string, str1);
printf(%s,string);
system(pause);
10
Digite o Exemplo 5.1(C++):- Faa um programa que atribua o contedo de uma string para outra
string e mostre-a na tela.
#include <iostream>
#include <string.h>
int main(){
char string[10];
strcpy(string, str1);
cout<<string;
system(pause);
10
Digite o Exemplo 5.2(C):- Faa um programa que compare o contedo de strings e d mensagens
indicando o resultado da comparao.
#include <stdio.h>
#include <string.h>
#include <conio.h>
int main(){
int ptr;
10
Fecha if
11
else{
Abre else
12
13
if (ptr == 0){
printf("buffer 2 eh igual ao buffer
1\n");
14
Fecha if
15
else{
Abre else
Fecha else
16
1\n");
17
18
Fecha else
19
20
21
3\n");
22
Fecha if
23
else{
Abre else
24
if (ptr == 0){
25
3\n");
26
Fecha if
27
else{
Abre else
28
29
30
31
getch();
32 }
Digite o Exemplo 5.2(C++):- Faa um programa que compare o contedo de strings e d mensagens
indicando o resultado da comparao.
#include <iostream>
#include <string.h>
int main(){
int ptr;
buf1)
10
Fecha if
11
else{
Abre else
12
if (ptr == 0){
13
1\n";
14
Fecha if
15
else{
Abre else
16
17
18
Fecha else
19
20
21
3\n";
22
Fecha if
23
else{
Abre else
24
if (ptr == 0){
25
3\n";
26
Fecha if
27
else{
Abre else
28
29
30
31
system(pause);
32 }
Digite o Exemplo 5.3(C)- Faa um programa que mostre a quantidade de caracteres de uma string.
#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <string.h>
int main(){
printf(%d,strlen(string));
8
9
getch();
Digite o Exemplo 5.3(C++)- Faa um programa que mostre a quantidade de caracteres de uma string.
#include <iostream>
#include <string.h>
#include <string.h>
int main(){
cout<<strlen(string);
system(pause);
Digite o Exemplo 5.4(C):- Faa um programa que concatene duas strings e mostre o resultado da
concatenao na tela.
#include <stdio.h>
#include <string.h>
#include <conio.h>
int main(){
5
6
char destino[25];
char espaco[2] = " ", sobrenome[10] =
"Rodrigues", nome[10] = "Kesede";
strcpy(destino, nome);
strcat(destino, espaco);
strcat(destino, sobrenome);
10
printf(%s, destino);
Imprime destino
11
getch();
12
Digite o Exemplo 5.4(C++):- Faa um programa que concatene duas strings e mostre o resultado da
concatenao na tela.
#include <iostream>
#include <string.h>
int main(){
5
6
char destino[25];
char espaco[2] = " ", sobrenome[10] =
"Rodrigues", nome[10] = "Kesede";
strcpy(destino, nome);
strcat(destino, espaco);
strcat(destino, sobrenome);
10
cout<< destino;
Imprime destino
11
system(pause);
12
6. Matri
z
1
20
8
3
2
43
78
7
#include <stdio.h>
int main(){
Declara variveis.
Carrega
usurio
matriz
partir
do
}
5
maior=ac[0][0];
for(i=0; i<10; i++){
for(j=0; j<10;j++){
if(ac[i][j] > maior){
i_maior=i;
j_maior=j;
maior=ac[i][j];
}
}
}
printf(A rua %i esquina com %i teve %i acidentes,
sendo a esquina com maior nr de acidentes do centro.,
i_maior,j_maior, maior);
getch();
Inicializa
a
varivel
auxiliar
maior com o primeiro elemento
da matriz. Em seguida, percorre a
matriz verificando se existe algum
elemento maior que o primeiro,
guardado na varivel maior.
Caso exista, atualiza maior e
guarda os ndices (esquina) deste
elemento. Ao final, imprime
e
para o programa.
Fecha main()
Digite o exemplo 6.1(C++): Faa um programa que carregue, a partir do usurio, uma matriz 10x10
representando o centro de uma cidade. Cada ndice contm o nmero de acidentes anual ocorridos em
cada cruzamento. O programa deve mostrar a esquina (linha e coluna) que ocorreu o maior nmero de
acidentes.
#include <iostream>
using namespace std;
int main(){
Declara variveis.
Carrega
usurio
matriz
partir
do
maior=ac[0][0];
for(i=0; i<10; i++){
for(j=0; j<10;j++){
if(ac[i][j] > maior){
i_maior=i;
j_maior=j;
maior=ac[i][j];
}
}
}
cout<<A rua <<i<< esquina com <<maior<< teve
<<i << acidentes, sendo a esquina com maior nr de
acidentes do centro.;
system(pause);
Inicializa
a
varivel
auxiliar
maior com o primeiro elemento
da matriz. Em seguida, percorre a
matriz verificando se existe algum
elemento maior que o primeiro,
guardado na varivel maior.
Caso exista, atualiza maior e
guarda os ndices (esquina) deste
elemento. Ao final, imprime
e
para o programa.
Fecha main()
7. Estruturas
Heterogneas
Uma estrutura heterognea permitir agrupar variveis de tipos
diferentes em um espao contguo na memria, facilitando assim a
manipulao destas informaes.
Informaes pertencentes a mesma entidade so passveis de
serem agrupadas em uma estrutura heterognea, como: coordenadas
de um ponto, descries de uma mquina, score de um jogador etc.
Para construirmos estruturas heterogneas em linguagem C,
usamos uma struct. Ex.:
struct jogador{
char nome[40];
int scoreMensal;
int scoreDiario;
};
para podermos utilizar (incluir e consultar) estes informaes, devemos
declarar uma varivel do tipo struct, usando o nome da struct, neste
caso, jogador. Ex.:
jogador jog1, jog2;
Neste caso, instanciamos (declaramos) dois jogadores com a
mesma estrutura de dados. Agora, podemos atribuir valores para
nossas duas instncias. Ex.:
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
varivel estrutura (varivel declarada do tipo estrutura) da varivel
membro (variveis internas).
Como uma estrutura funciona como um tipo, podemos declarar
vetores e at matrizes de estruturas. Por exemplo, se tivssemos 10 ou
100 jogadores, no seria prtico declararmos uma varivel para cada
jogador, assim poderamos declarar uma varivel vetor do tipo
estrutura. Ex.:
jogador jog[100];
Linguagem de Programao C/C++
40
Digite o exemplo 7.1(C): Faa um programa que carregue, a partir do usurio, os dados geogrficos das
cidades do Brasil. Inclua estas informaes em um vetor de estrutura. Os dados so: nome da cidade, x e
y (a origem 0,0 deste sistema Braslia). Aps a incluso destes dados, o programa deve permitir ao
usurio a digitao de uma cidade qualquer, sua referncia x e y, e listar a distncia desta cidade em
relao a cada cidade cadastrada.
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <ctype.h>
#include <math.h>
int main(){
do{
system("cls");
printf("Nome: ");
fflush(stdin);
gets(cidades[i].nome);
printf("\nPosicao X: ");
scanf("%i",&cidades[i].x);
printf("\nPosicao Y: ");
scanf("%i",&cidades[i].y);
i++;
printf("Existem mais cidades? <S/N> ");
fflush(stdin);
resp=toupper(getch());
}while (resp=='S');
5
qtdcid=i;
Fecha main()
Digite o exemplo 7.1(C++): Faa um programa que carregue, a partir do usurio, os dados geogrficos
das cidades do Brasil. Inclua estas informaes em um vetor de estrutura. Os dados so: nome da cidade,
x e y (a origem 0,0 deste sistema Braslia). Aps a incluso destes dados, o programa deve permitir ao
usurio a digitao de uma cidade qualquer, sua referncia x e y, e listar a distncia desta cidade em
relao a cada cidade cadastrada.
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <ctype.h>
#include <math.h>
#include <iostream>
using namespace std;
int main(){
do{
system("cls");
cout<<"Nome: ";
fflush(stdin);
gets(cidades[i].nome);
cout"\nPosicao X: ";
cin>>cidades[i].x;
cout<<"\nPosicao Y: ";
cin>>cidades[i].y;
i++;
cout<<"Existem mais cidades? <S/N> ";
fflush(stdin);
resp=toupper(getch());
}while (resp=='S');
qtdcid=i;
Fecha main()
8. Fun
es
void soma2(){
scanf(%i,&val1);
scanf(%i,&val2);
soma=val1+val2;
printf(%i,soma);
Digite o Exemplo 8.1(C++): Faa um funo que receba dois valores inteiros do usurio, some-os e
void soma2(){
cin>>val1;
cin>>val2;
soma=val1+val2;
cout<<soma;
Imprime soma
int main(){
5
7
soma2();
#include <stdio.h>
#include <conio.h>
int soma;
soma=v1+v2;
printf(%i,soma);
getch();
Para o programa
int main(){
10
11
scanf(%i,&val1);
12
scanf(%i,&val2);
13
soma2(val1,val2);
14
Digite o Exemplo 8.2(C++): Faa um programa que recebe dois valores a partir do usurio,
some-os e mostre o resultado na tela. Os valores devem ser recebidos como parmetro em uma
funo que some-os e mostre o resultado.
1
#include <iostream>
int soma;
soma=v1+v2;
cout<<soma;
system(pause);
Para o programa
int main(){
10
11
cin>>val1;
12
cin>>val2;
13
soma2(val1,val2);
14
Digite o Exemplo 8.3(C): Faa um programa que recebe dois valores a partir do usurio, someos e mostre o resultado na tela. A soma deve ser feita em uma funo, que receber os valores
como parmetro e retornar o resultado.
1
#include <stdio.h>
#include <conio.h>
int soma;
soma = v1+v2;
return
int main(){
10
11
scanf(%i,&val1);
12
scanf(%i,&val2);
13
s = soma2(val1,val2);
printf(%i,s);
Imprime a varivel s
getch();
Para o programa
14
Digite o Exemplo 8.3(C++): Faa um programa que recebe dois valores a partir do usurio,
some-os e mostre o resultado na tela. A soma deve ser feita em uma funo, que receber os
valores como parmetro e retornar o resultado.
1
#include <iostream>
int soma;
soma = v1+v2;
return
int main(){
10
11
cin>>val1;
12
cin>>val2;
13
s = soma2(val1,val2);
cout<<s;
Imprime a varivel s
system(pause);
14
Para o programa
Fecha a funo soma2()
#include <stdio.h>
#include <conio.h>
int main(){
scanf(%f,&lado);
getch();
perimetro,
10
11
12
*p = l * 4;
13
*a = l * l;
14
Digite o Exemplo 8.4(C++): Faa uma funo que receba o valor do lado de um quadrado e devolva
sua rea e seu permetro.
#include <iostream>
int main(){
cin>>lado;
system(pause);
perimetro,
10
11
12
*p = l * 4;
13
*a = l * l;
14
#include <stdio.h>
#include <conio.h>
Exemplo 9.1(C++): Crie um arquivo contendo uma estrutura e duas funes para manipula-la, uma
para carregar o vetor e outra para mostr-lo na tela. Grave este arquivo como Cor.h
#include <iostream>
using namespace std;
#include Cor.h
void main(){
Cor c;
Carregar(&c);
Mostrar(c);
getch();
Para o programa
Exemplo 9.2(C++): Crie um arquivo Cor.c contendo que permita a entrada de cores (R, G e B) em uma
estrutura e logo em seguida mostre estas cores na tela. Use a TAD Cor.h
#include Cor.h
void main(){
Cor c;
Carregar(&c);
Mostrar(c);
system(pause);
Para o programa
10.
Arq
uivo
16 Armazenamento em disco
RA
Nome
Nota
Registro
3,4
binrio:
em
arquivo no existir.
Para especificar se o arquivo ser manipulado como texto ou
binrio, acrescente a letra t ou b na string, respectivamente. (rt,
w+b etc). Caso no acrescente esta letra, o default binrio.
Os exemplos abaixo mostram como podemos gravar/consultar
dados em disco.
Digite o Exemplo 10.1(C): Faa um programa que receba do usurio o nmero do RA e o nome de 5
alunos e grave estas informaes em um arquivo no disco.
#include <stdio.h>
#define MAX 5
struct Aluno{
int ra;
char nome[30];
};
int main(){
FILE *ArqAlu;
int i;
Declara varivel i
ArqAlu=fopen("Alunos.dat","a");
for (i=0;i<MAX;i++){
10
11
fwrite(&RegAlu,sizeof(RegAlu),1,ArqAlu);
12
Fim do looping
13
fclose(ArqAlu);
Fecha o arquivo
Fim da funo principal
14 }
Digite o Exemplo 10.1(C++): Faa um programa que receba do usurio o nmero do RA e o nome de 5
alunos e grave estas informaes em um arquivo no disco.
#include <iostream>
using namespace std;
#define MAX 5
struct Aluno{
int ra;
char nome[30];
};
int main(){
FILE *ArqAlu;
int i;
Declara varivel i
ArqAlu=fopen("Alunos.dat","a");
for (i=0;i<MAX;i++){
10
cout<<"Digite o RA do <<(i+1)<<.o
aluno: ";
cin>>RegAlu.ra;
cout<<"Digite o nome do <<(i+1)<<.o
aluno: ";
cin>>RegAlu.nome;
11
fwrite(&RegAlu,sizeof(RegAlu),1,ArqAlu);
12
Fim do looping
13
fclose(ArqAlu);
Fecha o arquivo
Fim da funo principal
14 }
Digite o Exemplo 10.2(C): Faa um programa que mostre os dados gravados no exemplo 9.1.
#include <stdio.h>
struct Aluno{
int ra;
char nome[30];
};
int main(){
FILE *ArqAlu;
int i;
Declara varivel i
ArqAlu=fopen("Alunos.dat","r");
printf("RA
while (fread(&RegAlu,sizeof(RegAlu),1,ArqAlu)){
10
Nome\n");
printf("%i
", RegAlu.ra);
printf("%s\n", RegAlu.nome);
11
Finaliza o looping
12
fclose(ArqAlu);
Fecha o arquivo
13 }
11.
ro
Alleg
http://www.rafaeltoledo.net/out-of-series-3-configurando-abiblioteca-allegro-no-codeblocks-ubuntu/
Agora que j instalamos o Allegro, vamos test-lo. Configure o
Dev para carregar a biblioteca Allegro acessando Tools/Compiler
options, tick Add these commands ... line e escreva -lalleg na caixa
de texto logo abaixo. D OK e abra uma pgina em branco para
digitao do exemplo abaixo.
Digite o Exemplo 11.1 :- Faa um programa em modo grfico que mostre um retngulo, um retngulo
preenchido, uma reta, um circulo e 5 pontos na tela.
1
#include <allegro.h>
int main(){
Abre main()
allegro_init();
inicializa Allegro
install_keyboard();
Inicializa teclado
set_gfx_mode(GFX_AUTODETECT_WINDOWED, 640,
480, 0, 0);
rect(screen,10,10,100,100,makecol(0,0,255));
rectfill(screen,200,200,540,100,makecol(0,255,0));
line(screen,10,400,500,250,makecol(255,0,0));
circle(screen,600,600,50,makecol(155,100,0));
10
putpixel(screen,450,450,makecol(200,200,50));
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();
para o programa
16
Fecha main()
17
END_OF_MAIN()
necessrio p/ portabilidade
12.
Apndice A Algoritmos e
Fluxogramas
1.
2.
3.
4.
5.
1.
2.
3.
4.
5.
Tarefa 3: Corrida
1. Iniciar a corrida
2. Correr at acabar o percurso
3. Parar de correr
A cada uma destas 3 tarefas podemos chamar de algoritmo, pois
Linguagem de Programao C/C++
60
algumas
rotinas
cotidianas
Entrada
Processamento
Sada
Entrada: so as informaes que o algoritmo precisar para
resolver o problema. Estas informaes podem estar com o usurio, em
um arquivo ou vir de outro algoritmo.
Processamento: o que feito com as informaes de entrada
para obter os resultados necessrios.
Sada: o resultado que se espera do algoritmo, ou seja, a
resoluo do problema.
Por exemplo, se tivermos o problema de guardar livros em uma
prateleira, teramos:
Entrada: livros
Processamento: verificar o assunto do livro, localizar o assunto na
prateleira.
Sada: guardar o livro
Outro exemplo seria o clculo da mdia de duas matrias de um
aluno.
Entrada: nota da matria 1, nota da matria 2
Processamento: calculo da mdia (nota 1 + nota 2) / 2
Sada: mostra a mdia
Linguagem de Programao C/C++
61
Comandos
descrio
Inicio
Fim
Leia
escreva
Se-seno-fimdose
Smbolos
Descrio
Incio/Fim determina o comeo ou final de uma seqncia de
procedimentos.
Atribuio altera contedo da memria.
Entrada/Sada permite entrada e sada de informaes.
deciso/repetio decide entre dois ou mais caminhos, dependendo do
caso permite a repetio da execuo de procedimentos.
Abre/fecha arquivo
Sub-rotina permite o desvio da execuo do programa para uma subrotina
Direo direciona o fluxo dos procedimentos
Conector conecta uma parte do fluxograma a outra parte (usado quando
no possvel a representao contnua, normalmente com uma letra no
interior)
Conector de pgina conecta uma parte do fluxograma outra localizada
em outra pgina
O exemplo do clculo da mdia teria o seguinte fluxograma:
Incio
Leia Nota 1
Leia Nota 2
Escreva media
Fim
leia nota1
leia nota2
media = (nota1+nota2)/2
no
media >=5
Escreva
Reprovado
sim
Escreva
Aprovado
Escreva
media
fim
inicio
. . cont = 1
. . enquanto cont <= 30
. . . . leia nota1
. . . . leia nota2
. . . . media (nota1 + nota2) / 2
. . . . se media >= 5
. . . . . . escreva Aprovado
. . . . seno
. . . . . . escreva Reprovado
. . . . fim do se
. . . . escreva media
. . . . cont = cont + 1
. . fim do enquanto
fim
incio
cont = 1
no
cont <=30
sim
leia nota1
leia nota2
media = (nota1+nota2)/2
no
sim
media >=5
Escreva
Aprovado
Escreva
Reprovado
Escreva
media
cont = cont + 1
fim
13.
Apndice B Resumo de comandos e
funes
Nome
Descrio
Exemplo
Observaes
stdio.h
scanf()
Recebe entrada
do usurio
scanf(%i,&valor);
printf()
Mostra
informaes ao
usurio
printf(Valor: %i,valor);
fopen()
Abre arquivo
arq=fopen(c:\\arquivo.dat,a);
fclose()
Fecha arquivo
fclose(arq)
fread()
L um registro do
arquivo e guarda
na memria
leu=fread(®,sizeof(reg),1,arq)
;
fwrite()
Grava o contedo
da struct da
memria para o
arquivo
fwrite(®,sizeof(reg),1,arq);
conio.h
getch()
sqrt()
Calcula e retorna
a raiz quadrada
de um numero
raiz=sqrt(x);
cos()
Calcula e retorna
o coseno de um
numero
c=cos(ang);
sin()
Calcula e retorna
o seno de um
numero
s=sin(ang);
if/else
Executa
determinadas
instrues de
acordo com
Nome
Descrio
Exemplo
condies
printf(Reprovado
Observaes
programa imprimir Reprovado
}
while
Repete a
execuo de
determinadas
instrues
enquanto a
condio for
verdadeira
valor=1;
while (valor <= 5){
printf(\nValor %i,valor);
valor=valor + 1;
}
for
Repete a
execuo de
determinadas
instrues
enquanto a
condio for
verdadeira
for (i=1;i<=5;i++){
printf(\nValor %i, i);
}
A varivel de controle i
incializada em 1. o for testa se i
menor ou igual a 5 e se for o
programa mostra o valor de i na
tela, retorna a 1 linha, soma 1 na
variavel i e testa novamente, se i
for ainda menor ou igual a 5, entra
novamente no for e mostra
novamente o valor de i. Isto se
repete at i ser maior que 5.
circle()
Desenha uma
circunferncia.
rect()
Desenha um
retngulo.
line()
Desenha uma
linha
putpixel()
Desenha um
ponto
floodfill()
Preenche regio
floodfill(screen,120,240,makecol(
0,255,0));
set_color_dep
th()
Define
profundidade de
cor
set_color_depth(32);
install_keyboard();
install_mouse();
clear_to_color Pinta toda rea de clear_to_color(screen,makecol(25 Pinta o bitmap (neste caso, a tela)
()
um bitmap
5,0,0));
de vermelho
(inclusive tela) de
uma determinada
cor.
Nome
Descrio
Exemplo
Observaes
Copia o contedo de img para
screen (tela) a partir da posio
0,0 da origem (img) para a posio
0,0 do destino (screen). 640,480
o tamanho do bitmap de origem
(img)
blit()
blit(img,screen,0,0,0,0,640,480);
textout_ex()
Escreve texto na
tela
InicializaPP()
Carrega a
biblioteca na
memria
InicializaPP();
FinalizaPP()
Descarrega a
biblioteca da
memria
FinalizaPP()
inp32()
Recebe um sinal
da porta paralela
s=inp32(0x379)
oup32()
Envia um sinal
para a porta
paralela
oup32(0x378,255)
14.
Apndice C
Exerccios
1
Valor (R$)
1 Dlar
1,9
1 Euro
3,1
30 Uma empresa de engenharia vai lotear uma fazenda e deseja dividila em 3 categorias (A, B e C) de acordo com o tamanho do lote.
Toda a fazenda ser dividida 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.
31 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 voc 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 na viagem. Exemplo:
Horrio de Sada
: 14:28:32
Bonificao (%)
< 1.500,00
> 3.500,00
10
38
Situao
Abaixo de 20 (exclusive)
Peso normal
Entre 25 e 35 (inclusive)
Acima de 35 (exclusive)
Obeso
Mensagem
Nenhum tringulo formado
Um tringulo retngulo formado
Um tringulo obtusngulo formado
Um tringulo acutngulo formado
Desconto (%)
At 500,00
De 501,00 a 1000,00
10
Acima de 1000,00
12
i 1
Onde:
e
Faa um programa que, dados os parmetros e V, liste as
coordenadas x e y em intervalos de 0.01 segundos para um tiro em
particular, terminando a listagem quando o projtil atingir o solo.
60 Faa um programa que receba 5 valores inteiros em um vetor e
mostre na tela, os valores na ordem inversa.
61 Faa um programa que receba as notas de 10 alunos de uma classe
em um vetor e mostre a mdia das notas.
62 Faa um programa que receba, em um vetor, 200 valores inteiros, a
partir do usurio. Aps o carregamento, mostre para o usurio
apenas o contedo dos ndices pares.
63 Faa um programa que carregue um vetor de inteiros, permitindo
que o usurio defina a quantidade de elementos a serem
carregados. O usurio tambm deve digitar o valor de um elemento
o qual deseja saber quantos destes elementos existem no vetor.
64 Cadastre em um vetor os ndices de inflao dos 12 meses de 2008
(cada ndice far referncia a um ms do ano).
a)Mostrar a inflao e o ms (numericamente) de menor ndice
b)Mostrar a inflao e o ms (numericamente) de maior ndice
65 Calcule o desvio padro do vetor carregado no exerccio 4.2.5
0
4
5
8
17
1
2
9
20
31
113 Faa uma TAD Carro.h com sua estrutura contendo placa, modelo,
fabricante, cor, data de venda. A data de venda tambm deve ser
uma estrutura, uma vez que uma varivel composta. Faa funes
para:
a)
b)
c)
d)
1.
2.
3.
4.
Cdigo
do
130
Refaa o exerccio 11.1.2, desenhando uma circunferncia de
cada cor.
131
Refaa o exerccio 11.1.2, pintando o interior de cada rea
formada entre elas com cores diferentes.
132
133
134
Refaa o exerccio 11.1.5, pintando o interior de cada rea
formada entre eles com cores diferentes.
135 Faa um campo de futebol com faixas no gramado de cor verde
escuro e claro.
136 Desenhe uma grade de 50x50, a partir da linha 0, coluna 0, com
intervalo entre linhas e colunas de 10 pontos, em uma janela
grfica.
137 Preencha uma rea quadrada de 100x100 da janela grfica,
usando pontos (putpixel()), a partir da posio 50,50. Os pontos
devem estar espaados de 3 pontos entre cada um deles.
138 Faa a representao de um ambiente (contornado de linha
preta), atravs de uma grade cinza clara, de 300x300 com
espaamento de 10x10 para cada vo. Pinte de preto um destes
vos para representar a localizao de um sensor.
139 Faa uma bola amarela ficar "pingando" na tela. Faa o desenho
na prpria tela (screen).
140 Faa uma bola amarela ficar "pingando" na tela, usando a tcnica
double-buffer. A idia desta tcnica realizar todas as atualizaes
em uma varivel de memria e, depois disso, copiar (funo blit())
a varivel para a tela
141 Refaa o exerccio 11.1.10 mudando a cor da bola sempre que a
mesma tocar a borda.
15.
Apndices C Acesso a Portas de
Comunicao
Porta Paralela
A porta paralela referenciada pelo computador atravs de um
endereo de memria. Na grande maioria dos pcs este endereo
0x378. No site www.rogercom.com (excelente) est disponibilizado
uma biblioteca (inpout32.dll) que permite efetivar este acesso sem
problemas, porm algumas instrues so necessrias.
1. Copie o arquivo inpout32.dll (baixado do site) e o PortaP.h (listagem
abaixo) para o diretrio Porta (crie este diretorio).
Arquivo PortaP.h Exemplo do Rogercom modificado
/**************************************************
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>
/* Definitions in the build of inpout32.dll are:
*/
/* short _stdcall Inp32(short PortAddress);
*/
/* void _stdcall Out32(short PortAddress, short data); */
/* prototype (function typedef) for DLL function Inp32: */
typedef short _stdcall (*inpfuncPtr)(short portaddr);
typedef void _stdcall (*oupfuncPtr)(short portaddr, short datum);
HINSTANCE hLib;
inpfuncPtr inp32;
oupfuncPtr oup32;
int InicializaPP(void)
{
if (hLib == NULL) {
printf("LoadLibrary Failed.\n");
return -1;
}
/* get the address of the function */
inp32 = (inpfuncPtr) GetProcAddress(hLib, "Inp32");
if (inp32 == NULL) {
printf("GetProcAddress for Inp32 Failed.\n");
return -1;
}
oup32 = (oupfuncPtr) GetProcAddress(hLib, "Out32");
if (oup32 == NULL) {
printf("GetProcAddress for Oup32 Failed.\n");
return -1;
}
}
void FinalizaPP(){
FreeLibrary(hLib);
}
#include "PortaP.h"
2
3
int main(){
InicializaPP();
Abre main()
Chama a funcao da Porta.h
que
carrega
biblioteca
inpout32.dll, disponibilizando
suas
funes
de
acesso
(oup32() e inp32())
oup32(0x378,10);
Beep(100,1000);
FinalizaPP();
system("pause");
Fecha main()
bit 7
bit 6
bit 5
bit 4
bit 3
bit 2
bit 1 Bit 0
21
20
valo
r do
O site http://playground.arduino.cc//Interfacing/CPPWindows
apresenta um codigo com funes para acesso a porta serial. Este
cdigo permite a inicializacao, leitura, escrita e finalizacao da porta
serial atraves de um programa escrito na linguagem C (.c) no Windows.
Para utiliz-lo siga as instrues abaixo:
Crie um Projeto no Dev-cpp
1. Selecione File/New/Project. Escolha um nome para o seu
projeto, escolha Console Application e clique OK.
2. Clique no + ao lado do nome do seu projeto. Cliquedireito no main.cpp e remova este arquivo. No salve as mudanas.
3. Clique-direito no nome do projeto e some seu .c ao projeto.
4. Inclua tambm o arquivo Pserial.o
5. Clique-direito no nome do projeto. Escolha Project
Options. Na aba Files selecione o arquivo Pserial.o e tique em
Including in linking. D OK.
6. No esquea de incluir o Pserial.h em seu .c. Deixe estes
dois arquivo na mesma pasta.
7. Pronto! Basta executar seu projeto.
16.
Bibliogr
afia
Agradecimentos
Agradeo todos os que me ajudaram de forma direta ou indireta a
escrever este material. Espero que tenha alcanado seu objetivo. A
partir daqui, voc poder estender o que aprendeu atravs da prtica e
de outros livros que, com certeza, lhe auxiliaro. Que este
conhecimento tenha cado em terra boa, que d bons frutos, que outras
pessoas possam ser beneficiadas e assim possamos construir uma
sociedade mais justa, capaz de trocar, de ajudar e de compreender. No
despreze nenhum conhecimento, principalmente o seu, saiba que no
se pode saber tudo, nem conseguimos e nem precisamos saber tudo,
porm a busca poder ajud-lo na realizao de seus sonhos e de sua
felicidade, proposta fundamental da vida.