Escolar Documentos
Profissional Documentos
Cultura Documentos
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 Comando em Linguagem C/C++ { } (no existe) float int char cout | printf cin | scanf if else switch ... case while for do ... while =
Alguns sub-comandos mais utilizados: Caracteres especiais \n \0 \r \\ Operadores: Operador Adio Subtrao Diviso Multiplicao Mdulo (resto da diviso inteira) Smbolo + / * % Significado Salto de linha. Nulo. Retorno do carro. Barra invertida.
No captulo 4 sero apresentados diversos problemas, seus algoritmos e seus respectivos programas em linguagem C/C++.
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: 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. Tomemos um campo para guardar data com o seguinte
eddiesaliba2@yahoo.com
ICQ 45923544
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) main(int argc, char *argv[]) int identificador; char nome[50]; char dataNascimento[11]; char sexo; cout << "Digite o identificador: "; cin >> identificador; fflush(stdin); cout << "Digite o nome: "; gets (nome); cout << "Digite a data de nascimento: "; gets (dataNascimento); cout << "Digite o sexo (M/F): "; cin >> sexo; cout << "\n\n\n=== Os Dados Digitados Foram ===\n\n\n";
eddiesaliba2@yahoo.com
ICQ 45923544
O programa a seguir idntico ao anterior com apenas uma modificao, a linha 12 (em vermelho). Este comando limpa o buffer do teclado aps ocorrido o evento de apertar da tecla <Enter> do comando cin da linha 11. Este pequeno comando garantir que nosso programa funcione corretamente. Sempre que for usar comando gets, por fflush(stdin), para execuo do comando um comando para leitura de strings via teclado (o exemplo), antes de us-lo escreva um comando garantir que o buffer estar vazio no momento da gets.
Caso isto no seja feito, o comando tomar o que estiver no buffer do teclado como sendo a string digitada. Por isto acontece o salto automtico de campo, sem nenhuma digitao, no primeiro programa (sem o comando fflush).
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 linguagem C/C++ comea da posio 0 reservada menos 1 (um). No nosso caso, 0 (zero) at a posio 49 (quarenta e memria.
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
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 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; } val1 + val2;
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
incio declare n1, n2, n3, n4, media : real; escreva Digite leia n1; escreva Digite leia n2; escreva Digite leia n3; escreva Digite leia n4; media o valor da primeira nota de 1 a 10: ; o valor da segunda nota de 1 a 10: ; o valor da terceira nota de 1 a 10: ; o valor da quarta nota de 1 a 10: ;
(n1 + n2 + n3 + n4) / 4;
se (media >= 6) ento escreva O aluno foi APROVADO!; seno escreva O aluno foi REPROVADO!; fim se fim O algoritmo acima descrito em linguagem C, abaixo: ================================================= #include <cstdlib> #include <iostream> using namespace std; int main(int argc, char *argv[]) { float n1, n2, n3, n4, media; cout << "Digite cin >> n1; cout << "Digite cin >> n2; cout << "Digite cin >> n3; cout << "Digite cin >> n4; o valor da primeira nota de 1 a 10: "; o valor da segunda nota de 1 a 10: "; o valor da terceira nota de 1 a 10: "; o valor da quarta nota de 1 a 10: ";
media = (n1 + n2 + n3 + n4) / 4; if (media >= 6) { cout <<"\n\nO aluno foi APROVADO!\n\n"; } else { cout <<"\n\nO aluno foi REPROVADO!\n\n"; } system("PAUSE");
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)); caso (opcao) faa 1 : incio escreva fim 2 : incio escreva fim 3 : incio escreva fim 4 : incio escreva fim fim caso fim O algoritmo acima descrito em linguagem C, abaixo:
A opo escolhida foi: Incluso.; A opo escolhida foi: Excluso.; A opo escolhida foi: Alterao.; A opo escolhida foi: Sair.;
eddiesaliba2@yahoo.com
ICQ 45923544
15
"\n\nA opo escolhida foi: Incluso.\n\n"; "\n\nA opo escolhida foi: Excluso.\n\n"; "\n\nA opo escolhida foi: Alterao.\n\n"; "\n\nA opo escolhida foi: Sair.\n\n";
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 resp 0; 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
escreva Deseja cadastrar outro funcionrio? (S/N): ; leia resp; fim enquanto resp n; escreva Deseja visualizar o(s) cadastro(s) realizado(s)? (S/N): ; leia resp; se (resp = s) ento aux_cont 0; enquanto (aux_cont < cont) faa escreva === Dados do funcionrio ===; escreva Cdigo: , func[aux_cont].codigo; escreva Nome : , func[aux_cont].nome; escreva Data de Admisso: , func[aux_cont].dataAdmissao; escreva Data de Nascimento: , func[aux_cont].dataNascimento; escreva Sexo : , func[aux_cont].sexo; aux_cont fim enquanto fim se fim O algoritmo acima descrito em linguagem C, abaixo: ================================================= #include <cstdlib> #include <iostream> using namespace std; struct funcionario { int codigo; char nome[50]; char dataAdmissao[11]; char dataNascimento[11]; char sexo; }; int main(int argc, char *argv[]) { struct funcionario func[1000]; char resp; int cont, aux_cont; cont = 0; resp = 's'; aux_cont + 1;
eddiesaliba2@yahoo.com
ICQ 45923544
22
cout << "\n\nDeseja cadastrar outro funcionrio? (S/N): "; cin >> resp; } resp = 'n'; cout << "\n\nDeseja visualizar os dados cadastrados? (S/N): "; cin >> resp; fflush(stdin); if ((resp == 's') || (resp == 'S')) { aux_cont = 0; while (aux_cont < cont) { cout << "\n\n=== Dados do funcionrio ==="; cout << "\nCdigo: " << func[aux_cont].codigo; cout << "\nNome : " << func[aux_cont].nome; cout << "\nData de Admisso: " << func[aux_cont].dataAdmissao; cout << "\nData de Nascimento: " << func[aux_cont].dataNascimento; cout << "\nSexo : " << func[aux_cont].sexo << "\n\n"; aux_cont++; } } system("PAUSE"); return EXIT_SUCCESS; }
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
eddiesaliba2@yahoo.com
ICQ 45923544
24
eddiesaliba2@yahoo.com
ICQ 45923544
25
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
retorne (total); fim funo funo multiplicacao (v1, v2 : real) : real; declare total : real; total v1 * v2;
retorne (total); fim funo funo divisao (v1, v2 : real) : real; declare total : real; total 0;
se (v2 <> 0) ento total v1 / v2; seno escreva Erro de diviso por zero!; fim se retorne (total); fim funo 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 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 adicao (valor1,valor2);
eddiesaliba2@yahoo.com
ICQ 45923544
27
eddiesaliba2@yahoo.com
ICQ 45923544
28
eddiesaliba2@yahoo.com
ICQ 45923544
29
eddiesaliba2@yahoo.com
ICQ 45923544
30