Professional Documents
Culture Documents
Belo Horizonte
2009
Sumrio
1
2
3
Nota: ..................................................................................................................................... 2
Comandos e Palavras Reservadas: ....................................................................................... 3
Dicas ..................................................................................................................................... 4
3.1 Strings em Linguagem C / C++ ..................................................................................... 4
3.1.1 Ao Imprimir tem Lixo na Varivel Junto ao Valor Armazenado:.......................... 4
3.1.2 Em Tempo de Execuo o Programa est Pulando Dois ou Mais Campos ao
Mesmo Tempo: ..................................................................................................................... 4
3.1.3 Como Apagar um Campo String: ........................................................................... 6
3.1.4 Como Atribuir Valores a Uma Varivel do Tipo String: ....................................... 7
4 Exemplos de Algoritmos em Linguagem Algortmica e Seu Respectivo Cdigo em
Linguagem C/C++ ...................................................................................................................... 10
4.1 Algoritmo usando estrutura LINEAR .......................................................................... 10
4.2 Algoritmo usando estrutura condicional SE ................................................................ 10
4.3 Algoritmo usando estrutura de excluso mltipla CASE ............................................ 12
4.4 Algoritmo usando estrutura de repetio ENQUANTO .............................................. 14
4.5 Algoritmo usando estrutura de repetio REPITA ... ENQUANTO ........................... 15
4.6 Algoritmo usando estrutura de repetio PARA ......................................................... 16
4.7 Algoritmo usando VETOR .......................................................................................... 17
4.8 Algoritmo usando MATRIZ ........................................................................................ 18
4.9 Algoritmo usando REGISTRO (tipo) .......................................................................... 19
4.10
Algoritmo usando REGISTRO em VETOR ............................................................ 21
4.11
Algoritmo usando REGISTRO em MATRIZ .......................................................... 23
4.12
Algoritmo usando FUNO ................................................................................... 26
1 Nota:
Os cdigos em Linguagem C apresentados neste trabalho foram criados
utilizando a ferramenta conhecida por Dev-C++ verso 4.9.9.2.
Esta ferramenta poder ser adquirida gratuitamente no site abaixo:
http://www.bloodshed.net/devcpp.html
eddiesaliba2@yahoo.com
ICQ 45923544
2 ComandosePalavrasReservadas:
Como mecanismo facilitador, vejamos a tabela abaixo relativa a alguns
comandos bsicos e palavras reservadas existentes em algoritmos, e
respectivamente em Linguagem C/C++.
Comando em Algoritmo
incio
fim
declare
Real
inteiro
carcter
escreva
leia
se
seno
caso
enquanto
para
repita ... enquanto
Significado
Salto de linha.
Nulo.
Retorno do carro.
Barra invertida.
Operadores:
Operador
Adio
Subtrao
Diviso
Multiplicao
Mdulo (resto da diviso
inteira)
Smbolo
+
/
*
%
eddiesaliba2@yahoo.com
ICQ 45923544
3 Dicas
3.1 StringsemLinguagemC/C++
3.1.1 AoImprimirtemLixonaVarivelJuntoaoValorArmazenado:
Para campos de texto, deixar sempre um carcter a mais do que o
necessrio.
Por exemplo:
formato:
Tomemos
um
campo
para
guardar
data
com
seguinte
dd/mm/aaaa
Podemos verificar que para armazenarmos a data com o formato acima,
so necessrios 10 posies de memria. Exemplo:
char data[10];
Porm, a prtica nos mostrou que se criarmos a varivel com somente
as 10 posies necessrias, ao imprimirmos seu valor o Dev-C++
imprimir lixo junto ao valor atribudo para a varivel. Ao
contrrio, se criarmos a varivel com 11 posies de memria,
exemplo:
char data[11];
Ao imprimirmos ser impresso o valor correto.
3.1.2 EmTempodeExecuooProgramaestPulandoDoisouMaisCampos
aoMesmoTempo:
Ao trabalharmos com strings em linguagem C/C++ devemos tomar certos
cuidados. A linguagem C/C++ no muito amigvel quando se trata de
strings.
Ao usarmos o seguinte programa abaixo:
(01)#include <cstdlib>
(02)#include <iostream>
(03)using namespace std;
(04)int main(int argc, char *argv[])
(05){
(06)
int identificador;
(07)
char nome[50];
eddiesaliba2@yahoo.com
ICQ 45923544
char dataNascimento[11];
char sexo;
(10)
(11)
(12)
(13)
(14)
(15)
(16)
(17)
(18)
(19)
(20)
(21)
(22)
cout
cout
cout
cout
(23)
(24)
(25)
(26)}
system("PAUSE");
return EXIT_SUCCESS;
<<
<<
<<
<<
"Identificador : "
"\nNome
:
"\nData Nascimento:
"\nSexo (M/F)
:
<< identificador;
" << nome;
" << dataNascimento;
" << sexo;
O usurio deste notar que ao apertar tecla <Enter> aps ter digitado
o nmero do identificador (linha 11), o programa saltar
diretamente para o campo data de nascimento (linha 15) sem pedir os
dados para o campo nome (linha 13).
Porm, isto no acontecer no programa abaixo:
(01)#include <cstdlib>
(02)#include <iostream>
(03)using namespace std;
(04)int
(05){
(06)
(07)
(08)
(09)
(10)
(11)
(12)
(13)
(14)
(15)
(16)
(17)
(18)
(19)
eddiesaliba2@yahoo.com
ICQ 45923544
cout
cout
cout
cout
<<
<<
<<
<<
"Identificador : "
"\nNome
:
"\nData Nascimento:
"\nSexo (M/F)
:
(24)
(25)
(26)
(27)}
system("PAUSE");
return EXIT_SUCCESS;
<< identificador;
" << nome;
" << dataNascimento;
" << sexo;
3.1.3 ComoApagarumCampoString:
Uma string quando declarada como sendo uma seqncia de caracteres,
tipo:
char nome[50];
A varivel nome, nada mais do que um vetor de caracteres.
Uma string em linguagem C/C++ deve ser finalizada pelo carcter \0
(barra invertida zero). Que o carcter que representa fim de string
na linguagem C/C++.
Portanto, sabendo disto, para apagarmos uma string basta atribuirmos
o carcter de fim de string para a primeira posio do vetor.
Exemplo:
nome[0] = \0;
Lembrando que todo vetor em
(zero) e vai at a quantidade
o vetor nome vai da posio
nove), o que d 50 posies de
eddiesaliba2@yahoo.com
ICQ 45923544
3.1.4 ComoAtribuirValoresaUmaVariveldoTipoString:
As variveis do tipo char tm tratamento especial pela linguagem C.
Para atribuirmos valores a variveis deste tipo, precisamos utilizar
alguns comandos especiais.
Vejamos a seguir alguns exemplos de atribuio de valores a variveis
do tipo char.
3.1.4.1 Exemplodeleituraeescritadeumcaracter:
Para ler e imprimir um nico caracter, no h tratamento especial,
podemos tratar a varivel do tipo char como se fosse uma varivel do
tipo int, ou seja, os comandos so idnticos aos que usamos para
trabalhar com valores do tipo inteiro.
Vejamos o exemplo a seguir, um programa onde so criadas duas
variveis do tipo char, Letra1 e Letra2; sendo que a varivel Letra1
recebe um valor digitado pelo usurio e a varivel Letra2 recebe seu
valor internamente. Aps receberem seus valores, ambas so impressas
na tela.
#include <cstdlib>
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
char Letra1, Letra2;
Letra2 = 'E';
cout << "Digite uma letra qualquer: ";
cin >> Letra1;
cout << "\nA letra digitada foi: " << Letra1;
cout << "\nA letra atribuida a varivel internamente foi: " <<
Letra2 << "\n\n";
system("PAUSE");
return EXIT_SUCCESS;
}
Podemos observar acima que, ao atribuirmos um valor a uma varivel do
tipo char, este valor dever estar entre aspas simples e, quando
formos ler o valor do teclado, poderemos usar o comando cin
normalmente.
3.1.4.2 Exemplodeleituraeescritadevrioscaracteres:
eddiesaliba2@yahoo.com
ICQ 45923544
system("PAUSE");
return EXIT_SUCCESS;
}
Ao executarmos o programa acima, conforme podemos ver na figura 01 a
seguir, foi solicitado ao usurio que digitasse trs palavras
quaisquer. Nas trs vezes em que ocorreram essas solicitaes, o
usurio digitou as palavras Belo Horizonte.
Aps a digitao das palavras, o programa imprime o contedo de cada
varivel na tela.
eddiesaliba2@yahoo.com
ICQ 45923544
eddiesaliba2@yahoo.com
ICQ 45923544
4 ExemplosdeAlgoritmosemLinguagemAlgortmicaeSeu
RespectivoCdigoemLinguagemC/C++
4.1 AlgoritmousandoestruturaLINEAR
inicio
declare val1, val2, soma : real;
escreva Digite o primeiro valor: ;
leia val1;
escreva Digite o segundo valor: ;
leia val2;
soma val1 + val2;
escreva O total da soma : , soma;
fim
O algoritmo acima descrito em linguagem C, abaixo:
=================================================
#include <cstdlib>
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
float val1, val2, soma;
cout << "Digite o primeiro valor: ";
cin >> val1;
cout << "Digite o segundo valor: ";
cin >> val2;
soma = val1 + val2;
cout <<"\n\nO total da soma e: " << soma << "\n\n";
system("PAUSE");
return EXIT_SUCCESS;
}
4.2 AlgoritmousandoestruturacondicionalSE
Elabore um algoritmo para ler 4 notas de um aluno (de 1 a 10). Aps
calcular a mdia das notas, apresentar a mensagem Aprovado se o
eddiesaliba2@yahoo.com
ICQ 45923544
10
maior
ou
igual
6.
Caso
contrrio,
incio
declare n1, n2, n3, n4, media : real;
escreva Digite
leia n1;
escreva Digite
leia n2;
escreva Digite
leia n3;
escreva Digite
leia n4;
eddiesaliba2@yahoo.com
ICQ 45923544
11
4.3 AlgoritmousandoestruturadeexclusomltiplaCASE
Faa um algoritmo que mostre o menu de opes a seguir, receba a
opo do usurio e os dados necessrios para executar cada operao.
No final, apresente o resultado da operao escolhida.
Menu de opes:
1 Somar
2 Subtrair
3 Multiplicar
4 - Dividir
incio
declare valor1, valor2, res : real;
declare operacao : inteiro;
escreva "=== Calculadora de 4 Operaes Bsicas ===";
escreva Digite o 1. valor: ;
leia valor1;
escreva Digite o 2. valor: ;
leia valor2;
escreva "Escolha a operao a ser realizada sobre os valores:";
escreva 1 - Somar;
escreva 2 - Subtrair;
escreva 3 - Multiplicar;
escreva 4 - Dividir;
escreva Escolha uma opo: ;
leia operacao;
caso (operacao) faa
1 : incio
res valor1 + valor2;
fim
2 : incio
res valor1 - valor2;
fim
3 : incio
res valor1 * valor2;
fim
4 : incio
se (no (valor2 = 0)) ento
res valor1 / valor2;
seno
escreva Erro: Diviso por zero.;
res 0;
fim se
fim
exceo : incio
eddiesaliba2@yahoo.com
ICQ 45923544
12
eddiesaliba2@yahoo.com
ICQ 45923544
13
4.4 AlgoritmousandoestruturaderepetioENQUANTO
Elabore um algoritmo que solicite que o usurio entre com dois
nmeros (inicial e final). Ao final o algoritmo dever apresentar o
valor total da soma de todos os nmeros do intervalo digitado pelo
usurio.
incio
declare valini, valfin, soma : real;
escreva Digite o valor inicial: ;
leia valini;
escreva Digite o valor final: ;
leia valfin;
soma valini;
enquanto (valini <= valfin) faa
valini valini + 1;
soma soma + valini;
fim enquanto
escreva A soma total : , soma;
fim
O algoritmo acima descrito em linguagem C, abaixo:
=================================================
#include <cstdlib>
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
float valini, valfin, soma;
cout << "Digite o valor inicial: ";
cin >> valini;
cout << "Digite o valor final: ";
eddiesaliba2@yahoo.com
ICQ 45923544
14
4.5 AlgoritmousandoestruturaderepetioREPITA...ENQUANTO
Elabore um algoritmo que mostre ao usurio um menu com 4 opes: 1
Incluso, 2 Excluso, 3 Alterao e 4 Sair. Obrigue o usurio a
escolher uma das opes. Por fim, emita uma mensagem notificando o
usurio da opo escolhida.
incio
declare opcao : inteiro;
repita
escreva Opes;
escreva 1 - Incluso;
escreva 2 - Excluso;
escreva 3 - Alterao;
escreva 4 - Sair;
escreva Escolha uma opo: ;
leia opcao;
enquanto ((opcao < 1) ou (opo > 4));
fim
eddiesaliba2@yahoo.com
ICQ 45923544
15
system("PAUSE");
return EXIT_SUCCESS;
4.6 AlgoritmousandoestruturaderepetioPARA
Elabore um algoritmo que solicite que o usurio entre com um nmero
inteiro qualquer. Aps a entrada do nmero, o algoritmo dever
imprimir na tela os 30 nmeros subseqentes ao nmero digitado.
incio
declare num, cont : inteiro;
escreva Digite um nmero inteiro: ;
leia num;
para cont de 1 at 30 passo 1 faa
escreva num + cont;
eddiesaliba2@yahoo.com
ICQ 45923544
16
4.7 AlgoritmousandoVETOR
Elabore um algoritmo que solicite que o usurio entre com 10 nmeros
inteiros quaisquer. Aps a entrada de dados, imprimir os nmeros
digitados na ordem inversa a da digitao.
incio
declare num[10], i : inteiro;
para i de 0 at 9 passo 1 faa
escreva Digite um nmero: ;
leia num[i];
fim para
escreva Nmeros digitados, na ordem inversa a da digitao:;
para i de 9 at 0 passo -1 faa
escreva O nmero digitado foi: , num[i];
fim para
fim
O algoritmo acima descrito em linguagem C, abaixo:
=================================================
#include <cstdlib>
#include <iostream>
eddiesaliba2@yahoo.com
ICQ 45923544
17
4.8 AlgoritmousandoMATRIZ
Elabore um algoritmo que solicite que o usurio entre com 16 nmeros
inteiros quaisquer. Aps a entrada de dados, imprimir o quadrado dos
nmeros digitados na ordem inversa a da digitao.
incio
declare num[4][4], i, j : inteiro;
para i de 0 at 3 passo 1 faa
para j de 0 at 3 passo 1 faa
escreva Digite um nmero: ;
leia num[i][j];
fim para
fim para
escreva O quadrado dos nmeros digitados, na ordem inversa a da
digitao:;
para i de 3 at 0 passo -1 faa
para j de 3 at 0 passo -1 faa
escreva (num[i][j] * num[i][j]);
fim para
fim para
fim
O algoritmo acima descrito em linguagem C, abaixo:
=================================================
eddiesaliba2@yahoo.com
ICQ 45923544
18
4.9 AlgoritmousandoREGISTRO(tipo)
Elabore um algoritmo para cadastrar um funcionrio. Para o
funcionrio devem-se cadastrar os seguintes dados: cdigo, nome, data
de admisso, data de nascimento e sexo. Aps cadastrar o funcionrio,
mostrar os dados.
tipo funcionario
codigo : inteiro;
nome : texto;
dataAdmissao : texto;
dataNascimento : texto;
sexo : carcter;
fim tipo;
incio
declare func : funcionario;
declare resp : carcter;
escreva Digite o cdigo do funcionrio: ;
leia func.codigo;
escreva Digite o nome do funcionrio: ;
eddiesaliba2@yahoo.com
ICQ 45923544
19
eddiesaliba2@yahoo.com
ICQ 45923544
20
4.10 AlgoritmousandoREGISTROemVETOR
Elabore um algoritmo para cadastrar 1000 funcionrios. Para cada
funcionrio devem-se cadastrar os seguintes dados: cdigo, nome, data
de admisso, data de nascimento e sexo. Aps cadastrar o(s)
funcionrio(s), mostrar os dados.
tipo funcionario
codigo : inteiro;
nome : texto;
dataAdmissao : texto;
dataNascimento : texto;
sexo : carcter;
fim tipo;
incio
declare func[1000] : funcionario;
declare resp : carcter;
declare cont, aux_cont : inteiro;
cont 0;
resp s;
enquanto ((cont < 1000) e (resp = s)) faa
escreva Digite o cdigo do funcionrio: ;
leia func[cont].codigo;
escreva Digite o nome do funcionrio: ;
leia func[cont].nome;
escreva Digite a data de admisso do funcionrio: ;
leia func[cont].dataAdmissao;
escreva Digite a data de nascimento do funcionrio: ;
leia func[cont].dataNascimento;
escreva Digite o sexo do funcionrio (M/F): ;
eddiesaliba2@yahoo.com
ICQ 45923544
21
eddiesaliba2@yahoo.com
ICQ 45923544
22
/* cont = cont + 1; */
4.11 AlgoritmousandoREGISTROemMATRIZ
Elabore um algoritmo para cadastrar 1200 funcionrios numa matriz 30
x 40. Para cada funcionrio devem-se cadastrar os seguintes dados:
cdigo, nome, data de admisso, data de nascimento e sexo. Aps
cadastrar o(s) funcionrio(s), mostrar os dados.
eddiesaliba2@yahoo.com
ICQ 45923544
23
leia resp;
fim enquanto
y y + 1;
fim enquanto
resp n;
escreva Deseja visualizar o(s) cadastro(s) realizado(s)? (S/N):
;
leia resp;
se (resp = s) ento
aux_y 0;
enquanto (aux_y < y) faa
aux_x 0;
enquanto (aux_x < x) faa
escreva === Dados do funcionrio ===;
escreva Cdigo: , func[aux_y][aux_x].codigo;
escreva Nome : , func[aux_y][aux_x].nome;
eddiesaliba2@yahoo.com
ICQ 45923544
24
eddiesaliba2@yahoo.com
ICQ 45923544
25
/* x = x + 1; */
}
y++;
resp = 'n';
cout << "\n\nDeseja visualizar os dados cadastrados? (S/N): ";
cin >> resp;
fflush(stdin);
if ((resp == 's') || (resp == 'S')) {
aux_y = 0;
while (aux_y < y) {
aux_x = 0;
while (aux_x < x) {
cout << "\n\n=== Dados do funcionrio ===";
cout << "\nCdigo: " <<
func[aux_y][aux_x].codigo;
cout << "\nNome : " << func[aux_y][aux_x].nome;
cout << "\nData de Admisso: " <<
func[aux_y][aux_x].dataAdmissao;
cout << "\nData de Nascimento: " <<
func[aux_y][aux_x].dataNascimento;
cout << "\nSexo : " << func[aux_y][aux_x].sexo
<< "\n\n";
aux_x++;
}
aux_y++;
}
system("PAUSE");
return EXIT_SUCCESS;
}
4.12 AlgoritmousandoFUNO
Elabore um algoritmo para simular uma calculadora de 4 operaes
bsicas.
funo adicao (v1, v2 : real) : real;
declare total : real;
total v1 + v2;
eddiesaliba2@yahoo.com
ICQ 45923544
26
eddiesaliba2@yahoo.com
ICQ 45923544
27
return (total);
eddiesaliba2@yahoo.com
ICQ 45923544
28
eddiesaliba2@yahoo.com
ICQ 45923544
29
eddiesaliba2@yahoo.com
ICQ 45923544
30