Escolar Documentos
Profissional Documentos
Cultura Documentos
2006
Algoritmos pág. 2
ÍNDICE
INTRODUÇÃO.................................................................................................................6
LÓGICA........................................................................................................................6
COMPUTADOR...........................................................................................................6
PROGRAMA................................................................................................................7
LINGUAGENS DE PROGRAMAÇÃO.......................................................................7
TÉCNICAS ATUAIS DE PROGRAMAÇÃO.............................................................7
AÇÃO............................................................................................................................7
ESTADO.......................................................................................................................7
PROCESSO OU EVENTO...........................................................................................7
PADRÕES DE COMPORTAMENTO.........................................................................7
EXERCÍCIO..................................................................................................................7
CONCEITOS BÁSICOS...................................................................................................8
DEFINIÇÕES................................................................................................................8
COMO FAZER UM ALGORITMO.............................................................................8
TESTE DE MESA.........................................................................................................8
CLASSIFICAÇÃO DOS ALGORITMOS....................................................................8
DESCRIÇÃO NARRATIVA....................................................................................8
FLUXOGRAMA.......................................................................................................9
PSEUDOCÓDIGO ou PORTUGOL.........................................................................9
SIMBOLOGIA BÁSICA PARA FLUXOGRAMA.................................................9
TIPOS DE DADOS.................................................................................................10
VARIÁVEIS............................................................................................................10
CONSTANTES.......................................................................................................11
IDENTIFICADORES..............................................................................................11
EXEMPLOS............................................................................................................11
EXERCÍCIOS..............................................................................................................12
LINGUAGEM C/C++.....................................................................................................13
BIBLIOTECAS.......................................................................................................13
ETAPAS DA IMPLEMENTAÇÃO............................................................................14
include.....................................................................................................................14
DIRETIVAS define e undef.....................................................................................14
EXEMPLO..............................................................................................................15
Dev-C++......................................................................................................................15
LISTA DE RECURSOS..........................................................................................15
INSTALAÇÃO E CONFIGURAÇÃO DO DEV-C++...........................................16
ESTRUTURA SEQÜENCIAL.......................................................................................16
DECLARAÇÃO DE VARIÁVEIS EM ALGORITMOS...........................................16
COMANDO DE ATRIBUIÇÃO EM ALGORITMOS..............................................16
COMANDO DE ENTRADA EM ALGORITMOS....................................................16
COMANDO DE SAÍDA EM ALGORITMOS...........................................................16
REQUERIMENTOS NECESSÁRIOS...................................................................16
TIPOS DE DADOS.....................................................................................................16
ESTRUTURA SEQÜENCIAL EM C/C++................................................................17
DECLARAÇÃO DE VARIÁVEIS EM C/C++..........................................................17
STRINGS................................................................................................................17
getche()....................................................................................................................18
Exemplos.................................................................................................................18
COMANDO DE ATRIBUIÇÃO EM C/C++.............................................................18
COMANDOS DE ENTRADA EM C/C++.................................................................18
cin............................................................................................................................18
Algoritmos pág. 3
gets...........................................................................................................................19
scanf.........................................................................................................................19
COMANDOS DE SAÍDA EM C/C++........................................................................19
cout..........................................................................................................................19
printf........................................................................................................................19
puts..........................................................................................................................20
COMENTÁRIOS EM C/C++.....................................................................................20
OPERADORES E FUNÇÕES PREDEFINIDAS EM C/C++....................................20
Matemáticos............................................................................................................20
Relacionais..............................................................................................................20
Matemáticas.............................................................................................................21
Lógicos....................................................................................................................21
EXEMPLO..................................................................................................................21
EXERCÍCIOS..............................................................................................................22
RECURSIVIDADE.........................................................................................................24
ESTRUTURA CONDICIONAL (Controle de Fluxo)....................................................25
ALGORITMOS...........................................................................................................25
ESTRUTURA CONDICIONAL COMPOSTA......................................................25
C/C++..........................................................................................................................25
SIMPLES - IF..........................................................................................................25
COMPOSTA – IF/ELSE.........................................................................................26
ESTRUTURA CASE - SWITCH............................................................................26
OPERADORES LÓGICOS.....................................................................................27
EXEMPLO..................................................................................................................27
EXERCÍCIOS..............................................................................................................28
ESTRUTURA DE REPETIÇÃO....................................................................................31
ALGORITMOS...........................................................................................................31
NÚMERO DEFINIDO DE REPETIÇÕES (ESTRUTURA PARA)......................31
NÚMERO INDEFINIDO DE REPETIÇÕES E TESTE DE INÍCIO
(ESTRUTURA ENQUANTO)................................................................................31
NÚMERO INDEFINIDO DE REPETIÇÕES E TESTE NO FINAL
(ESTRUTURA REPITA)........................................................................................31
C/C++..........................................................................................................................32
for............................................................................................................................32
break........................................................................................................................33
continue...................................................................................................................33
while........................................................................................................................33
do-while...................................................................................................................33
EXEMPLOS................................................................................................................34
EXERCÍCIOS..............................................................................................................34
VETORES.......................................................................................................................37
ALGORITMOS...........................................................................................................37
DECLARAÇÃO DO VETOR.................................................................................37
ATRIBUINDO VALORES AO VETOR................................................................37
CARREGANDO UM VETOR................................................................................37
C/C++..........................................................................................................................37
DECLARAÇÃO DO VETOR.................................................................................37
ATRIBUINDO VALORES AO VETOR................................................................37
CARREGANDO UM VETOR................................................................................38
IMPRIMINDO UM VETOR...................................................................................38
EXEMPLO..................................................................................................................38
EXERCÍCIOS..............................................................................................................40
MATRIZ..........................................................................................................................42
Algoritmos pág. 4
DEFINIÇÃO................................................................................................................42
DECLARAÇÃO DE MATRIZ...............................................................................42
EXEMPLO DE MATRIZ........................................................................................42
ATRIBUINDO VALORES À MATRIZ.................................................................42
CARREGANDO UMA MATRIZ...........................................................................42
EXIBINDO OS ELEMENTOS DE UMA MATRIZ..............................................43
C/C++..........................................................................................................................43
DECLARAÇÃO DE MATRIZ...............................................................................43
ATRIBUINDO VALORES.....................................................................................43
EXIBINDO ELEMENTOS DA MATRIZ..............................................................44
EXEMPLOS................................................................................................................44
EXERCÍCIOS..............................................................................................................46
MANIPULANDO CARACTERES EM C/C++.............................................................47
FUNÇÃO strcpy()...................................................................................................47
FUNÇÃO strcat()....................................................................................................47
FUNÇÃO strlen()....................................................................................................47
FUNÇÃO strchr()....................................................................................................48
FUNÇÃO strstr().....................................................................................................48
FUNÇÃO strcmp()..................................................................................................48
EXERCÍCIO............................................................................................................48
REGISTROS (Estruturas)...............................................................................................49
DECLARAÇÃO - ALGORITMOS............................................................................49
DECLARAÇÃO DE REGISTROS EM C/C++..........................................................49
DECLARAÇÃO DE VARIÁVEIS DO TIPO REGISTRO EM C/C++.....................49
ACESSO A MEMBROS DE ESTRUTURAS............................................................49
EXEMPLOS................................................................................................................50
EXERCÍCIOS..............................................................................................................50
ARQUIVOS....................................................................................................................52
DECLARAÇÃO EM C/C++.......................................................................................52
COMANDOS DE ARQUIVOS EM C/C++...............................................................52
fopen().....................................................................................................................52
fclose().....................................................................................................................53
ferror().....................................................................................................................53
fputc()......................................................................................................................53
fgetc()......................................................................................................................53
fputs()......................................................................................................................53
fgets().......................................................................................................................53
fwrite().....................................................................................................................53
fread()......................................................................................................................53
fseek()......................................................................................................................53
feof()........................................................................................................................54
rewind()...................................................................................................................54
remove()..................................................................................................................54
fflush().....................................................................................................................54
exit()........................................................................................................................54
LENDO E ESCREVENDO CARACTER EM ARQUIVOS EM C/C++...................54
putc..........................................................................................................................54
getc..........................................................................................................................55
feof...........................................................................................................................55
FLUXOS PADRÃO....................................................................................................55
fprintf.......................................................................................................................55
fscanf.......................................................................................................................55
EXEMPLOS................................................................................................................56
Algoritmos pág. 5
EXERCÍCIOS..............................................................................................................57
SUB-ROTINAS...............................................................................................................58
ALGORITMO:............................................................................................................58
SUB-ROTINAS (FUNÇÕES) EM C/C++......................................................................58
COMANDO RETURN...........................................................................................58
EXERCÍCIOS..........................................................................................................59
Algoritmos pág. 6
INTRODUÇÃO
Você sabe usar o raciocínio lógico?
Isto depende de vários fatores: calma, conhecimento, vivência, versatilidade,
experiência, criatividade, ponderação, responsabilidade etc.
Para utilizar a lógica é preciso ter domínio do pensamento e saber pensar.
Então, o que é raciocínio lógico?
Conjunto de estudos que visa determinar os processos intelectuais que são as
condições gerais do conhecimento verdadeiro.
Ou ainda:
Seqüências coerentes, regulares e necessárias dos acontecimentos, das coisas
ou dos fatos, até mesmo, que é à maneira do raciocínio particular que cabe a um
indivíduo ou a um grupo.
Mas os profissionais de Tecnologia de Informação acreditam que seja um
esquema sistemático que define as interações de sinais no equipamento automático
do processamento de dados ou computador científico com o critério e princípios
formais de raciocínio e pensamento.
LÓGICA
COMPUTADOR
Sua finalidade é auxiliar em qualquer coisa que lhe seja solicitada. E para
isso, recebe, manipula e armazenar dados. Sua finalidade e realizar o
processamento dos dados. Formado por:
ENTRADA: dados de entrada do algoritmo;
PROCESSAMENTO: procedimentos realizados para atingir um resultado;
SAÍDA: dados já processados.
Algoritmos pág. 7
PROGRAMA
LINGUAGENS DE PROGRAMAÇÃO
Programação Seqüencial;
Programação Estruturada;
Programação Orientada a Eventos e Objetos.
AÇÃO
ESTADO
PROCESSO OU EVENTO
Uma seqüência temporal de ações. Exemplos:
Trazer a cesta com batatas;
Pegar a panela do armário;
Descascar as batatas;
Guardar a cesta;
PADRÕES DE COMPORTAMENTO
Vamos supor que no dia seguinte a um evento, alguém o repita.
Podemos dizer que temos o mesmo evento?
Não, pois ocorreram em MOMENTOS DIFERENTES.
O que então, eles têm em comum?
O mesmo PADRÃO DE COMPORTAMENTO.
EXERCÍCIO
CONCEITOS BÁSICOS
DEFINIÇÕES
TESTE DE MESA
DESCRIÇÃO NARRATIVA
1
Dados que serão fornecidos ao sistema.
2
Transformação dos dados de entrada em dados de saída.
3
Dados gerados após serem processados.
Algoritmos pág. 9
DIAGRAMA DE BLOCOS
Também chamado de diagrama de fluxo usado na programação com o
objetivo de descrever o método e a seqüência do processo dos planos num
computador.
Após analisar o enunciado do problema o mesmo é escrito utilizando gráficos
predefinidos para descrever os passos para solucionar o problema.
VANTAGEM: o entendimento é mais padronizado.
DESVANTAGEM: é necessário conhecimento da simbologia.
FLUXOGRAMA
Usada por analistas de sistemas tem a finalidade de descrever o fluxo,
especificando os suportes usados para os dados e as informações.
PSEUDOCÓDIGO ou PORTUGOL
Após analisar o enunciado do problema o mesmo é escrito com regras
predefinidas para descrever os passos para solucionar o problema.
VANTAGEM: a passagem do algoritmo para uma linguagem de programação é
praticamente imediata.
DESVANTAGEM: aprender as regras do pseudocódigo.
Símbolo Descrição
Terminal – símbolo utilizado como ponto de início/fim
de um fluxograma.
Cartão Perfurado.
TIPOS DE DADOS
Todos os dados possuem um tipo que pode ser classificado como:
NUMÉRICO
Divididos em dois grupos: inteiros e reais.
INTEIROS: podem ser positivos ou negativos e não possuem parte decimal.
Quando armazenado na memória, ocupa 2 bytes por isso temos 2 8 x 28 = 216
= 65.536 possibilidades de representação dos números inteiros. A faixa de
valores varia de – 32.767 à 32.768. Exemplos: -15, 9, 0, -357, 2500.
REAIS: podem ser positivos ou negativos e possuem parte decimal. Esse tipo de
dado, quando armazenado na memória do computador, ocupa 4 bytes, por isso
temos 28 x 28 x 28x 28 = 232 = possibilidades de representação dos números
reais. A faixa de valores é maior tendo de 6 a 11 dígitos com sinal. Exemplos:
23,45, 9541,89, -78,98, -852,0. Os números reais seguem a notação inglesa
onde a parte decimal é separada da parte inteira por um ponto.
LÓGICO
Também conhecidos como booleanos4 e assume verdadeiro ou falso, ocupando
somente 1 byte, pois possui somente duas possibilidades.
LITERAL ou CARACTERE
Formados por um único caractere ou por vários. Podem ser letras, números 5 e
caracteres especiais: $, @, #,* e ?. Na memória, ocupa 1 byte que corresponde
a um caractere. Exemplos: ‘aluno’, ‘951’, ‘@ informática’.
VARIÁVEIS
4
Álgebra de Boole
5
Não poderão ser utilizados para cálculos
6
Formado pelos dígitos 0 e 1
7
Formado por um conjunto de 8 bits
Algoritmos pág. 11
correspondente da tabela ASCII que é transformado em binário pelo método da
divisão.
Então, variável representa uma posição de memória, possuindo nome e tipo,
com conteúdo variando ao longo do tempo, durante a execução de um programa.
Ela pode assumir diversos valores, mas somente um valor por vez.
CONSTANTES
IDENTIFICADORES
Nomes dos programas, das variáveis, das constantes, das rotinas etc. Como:
Podemos utilizar números, letras e o caractere sublinhado (_);
O primeiro caractere só pode ser uma letra;
Não são permitidos caracteres especiais e espaço em branco;
Não é permitido usar palavras reservadas8.
Exemplos: A, NOTA1, NOME, ENDERECO, X10.
EXEMPLOS
1. Faça um algoritmo que exiba o resultado da multiplicação de dois números.
DESCRIÇÃO NARRATIVA
Passo 1 – Receber dois números que serão multiplicados.
Passo 2 – Multiplicar os dois números.
Passo 3 – Exibir o resultado.
FLUXOGRAMA
M = N1 * N2
INÍCIO
N1, N2
FIM
PSEUDOCÓDICO
ALGORITMO
DECLARE N1, N2, M NUMÉRICO
ESCREVA “Digite dois números”
LEIA N1, N2
M N1 * N2
ESCREVA “Multiplicação = ” , M
FIM_ALGORITMO.
8
Palavras que pertencem a uma linguagem de programação. Exemplo: PRINTF.
Algoritmos pág. 12
EXERCÍCIOS
LINGUAGEM C/C++
Em 1970, Dennis Ritchie inventou a linguagem C e foi o primeiro a
implementá-la em um sistema operacional UNIX. É o resultado de um processo
evolutivo de linguagens. Durante anos, o padrão da linguagem C foi o fornecido
com a versão 5 do sistema operacional UNIX. Com os microcomputadores sendo
popularizados, vários outros C’s foram criados e para resolver este problema, o
ANSI9, em 1983 estabeleceu um padrão para todas as implementações da
linguagem C. A C++ é uma extensão da linguagem C e as instruções desta, são um
subconjunto do C++ e sua sintaxe é praticamente a mesma, somente
acrescentando comandos para dar suporte à programação orientada a objetos.
A linguagem C/C++ é “case-sensitive” ou seja, faz distinção entre maiúsculas
e minúsculas, portanto, todos os seus comandos são escritos em letras minúsculas
e todos os comandos são finalizados com ponto-e-vírgula (;).
Todos os programas em C têm que ter uma (e somente uma) função main
(principal), pois é esta função (em C só existem funções) que será chamada
quando o programa for executado.
A primeira etapa da implementação consiste em escrever o algoritmo
estudado na etapa anterior numa linguagem de programação, por exemplo a
linguagem C. Para essa tarefa utilizamos um editor de textos disponível no
compilador da linguagem C. O texto escrito é chamado de arquivo ou programa
fonte.
A segunda etapa, a compilação, é realizada para traduzir programas escritos
em linguagens de programação tal como C, em instruções que podem ser
executadas pela CPU do computador. O software utilizado é chamado de
compilador. A saída produzida pelo compilador é denominada arquivo-objeto.
O arquivo objeto deve ser processado pelo linker antes de ser executado. O
linker toma como entrada arquivos objeto e rotinas de biblioteca e liga-os em um
único arquivo chamado arquivo executável. Esse arquivo pode ser diretamente
executado pelo computador.
BIBLIOTECAS
Conjunto padrão de funções que realizam as tarefas necessárias mais
comuns, como por exemplo escrever no vídeo (printf), ler um caractere do teclado
(getch), entre outras. O padrão ANSI C (American National Standards Institute)
especifica o conjunto mínimo de funções que estará contido na biblioteca. No
entanto seu compilador provavelmente conterá outras funções que podem não
estar incluída em um compilador de outro fabricante.
9
American National Standards Institute
Algoritmos pág. 14
ETAPAS DA IMPLEMENTAÇÃO
include
Informa ao compilador que deve incluir no momento da compilação o arquivo
especificado. Sintaxe: #include <biblioteca> ou #include “biblioteca” (essa última
deve informar o caminho que deseja buscar o arquivo)
Como exemplo, temos as seguintes bibliotecas:
Funções de entrada e saída stdio.h;
Funções padrão stdlib.h;
Funções matemáticas math.h;
Funções do sistema system.h;
Funções de string string.h
#undef
Apaga a macro informada da tabela interna que armazena os macros. O
compilador passa a partir deste ponto a não conhecer mais este macro.
Sintaxe: #undef nome_macro
EXEMPLO
#include <stdio.h>
/* exemplo */
int main()
{
printf(“Bem vindo ao curso de Algoritmos!\n”);
return(0);
}
Dev-C++
Ambiente integrado de desenvolvimento para as linguagens C e C++. Ele usa
a implementação Mingw do GCC (GNU Compiler Collection) como seu compilador.
Foi desenvolvido por Colin Laplace, Mike Berg e Hongli Lai e é "Free Software" (sob
GNU General Public License). Isso significa, entre outras coisas, que ele pode ser
distribuído e copiado à vontade. O programa cria executáveis nativas no Win32,
console ou GUI. Dev-C++ também pode ser usado juntamente com Cygwin. Dev-
C++ é gratuito e de código aberto e é totalmente escrito em Delphi, que ironia
não? Por ser um trabalho em constante desenvolvimento, as versões disponíveis no
site Bloodshed Dev-C++ mudam constantemente. O compilador que é usado – o
gcc é capaz de identificar muitos erros de sintaxe nos programas. (menu
EXECUTAR – COMPILAR). Os arquivos devem ser salvos com extensão .c (c sources
files).
LISTA DE RECURSOS
Suporte a compiladores baseados em GCC.
Depuração integrada (usando GDB).
Navegador de classes.
Recurso de completar códigos.
Navegador de depuração de variáveis.
Gerenciador de Projetos.
Editor com destaque de sintaxe personalizável.
Suporte a modelos para criação dos seus próprios projetos.
Edição e compilação de arquivos de recursos.
Gerenciador de Ferramentas.
Suporte a impressão.
Facilidades de encontrar e substituir.
Gerenciador de pacotes para facilitar a instalação e adição de bibliotecas.
Suporte CVS.
Lista de coisas a fazer.
Janela de CPU.
Algoritmos pág. 16
ESTRUTURA SEQÜENCIAL
ALGORITMO
DECLARE
Bloco de comandos
FIM_ALGORITMO.
REQUERIMENTOS NECESSÁRIOS
TIPOS DE DADOS
O C/C++ possui cinco tipos: int, float, double, void e char, com base
temos:
Algoritmos pág. 17
TIPO VALORES
Char -127 a 127
Unsigned char 0 a 255
signed char -127 a 127
Int -32.767 a 32.767
Unsigned int 0 a 65.535
Signed int -32.767 a 32.767
Short int -32.767 a 32.767
Unsigned Short Int 0 a 65,535
Signed Short Int -32.767 a 32.767
Long Int -2.147.483.647 a 2.147.483.647
Unsigned Long Int 0 a 4.294.967.295
Signed Long Int -2.147.483.647 a 2.147.483.647
Float 3.4E – 38 a 3.4E + 38
Double 1.7E – 308 a 1.7E + 308
Long double 3.4E – 4.932 a 1.1E + 4.932
Obs.: de acordo com a versão do compilador a faixa de valores pode variar. A faixa
acima está de acordo com o padrão ANSI (valor mínimo).
STRINGS
getche()
Usado para entrada de apenas um caracter pelo teclado e exibição na tela.
Exemplo:
#include <stdio.h>
int main(void)
{ int resposta = 0;
puts (" MENU ");
puts ("");
puts ("1. Editar");
puts ("2. Ler");
puts ("3. Gravar");
puts ("");
puts ("Resposta ");
resposta = getche();
getch();
}
Exemplos
1) Podemos usar o tipo char com números inteiros, que, quando colocado %d
representa o código ASCII e quando colocado %c surge a letra propriamente
dita.
#include <stdio.h>
int main()
{
char Ch;
Ch = ‘D’;
printf (“%d”, Ch); /* Imprime o caractere como inteiro */
return(0);
}
Como já visto anteriormente, recebe dados digitados pelo usuário que são
armazenados em variáveis, e, em C/C++ usamos os seguintes comandos:
cin
Armazena um valor digitado a uma variável. Exemplo: cin >> y;
Os valores são armazenados até que seja encontrado o primeiro espaço em
branco (os posteriores serão desprezados).
Algoritmos pág. 19
gets
Um ou vários caracteres digitados a uma variável. Exemplo: gets(NOME);
Utilizamos quando temos uma cadeira de caracteres contendo espaço em
branco.
scanf
Armazena um valor digitado a variável. Exemplo: scanf(&Y);
Obs.: & na frente da variável indica o seu endereço.
Tanto o comando gets quanto o scanf armazena TODA a cadeia de
caracteres até ser teclado o [ENTER].
Exemplo:
#include <stdio.h>
int main()
{
int A;
printf("Entre com valor para A: ");
scanf("%d", &A);
printf("O valor digitado foi %d", A);
getch();
}
Como também já foi dito, é usado para exibir os dados (tanto na tela como na
impressora) e são usados os seguintes comandos:
cout
Exibe o valor que está armazenado na variável.
Exemplo: cout << Y;
cout << “Conteúdo de Y = “ << Y;
printf
Exibe o número inteiro ou real armazenado em uma variável.
Sintaxe:
printf(“%d”,Y); (número inteiro)
printf(“%f”, Y);(número real).
Argumentos
Entradas que a função recebe. É através dos argumentos que passamos
parâmetros para a função.
O primeiro argumento é uma string (seqüência de caracteres) entre aspas,
que pode ou não conter comando de formato (representado pelo % na frente da
letra):
Algoritmos pág. 20
Exemplo:
printf(“Conteúdo: %d”, Y);
printf(“%7.8f”, Y);
puts
Exibe somente textos.
Sintaxe: puts(char *string);
Exemplo:
#include <stdio.h>
void main()
{
puts("Exemplo de utilizacao");
puts("da funcao");
puts("puts...");
getch();
}
COMENTÁRIOS EM C/C++
São textos que servem para documentar o programa e totalmente ignorados
pelo compilador. Podem ocupar uma (//) ou várias linhas (/* ..... */) inserindo
estes símbolos na frente ou entre os textos comentados.
Exemplos: // comentário
/*
comentário1
*/
Matemáticos
Relacionais
Matemáticas
Lógicos
Permitem que mais de uma condição seja testada em uma única expressão,
ou seja, pode-se fazer mais de uma comparação (teste) ao mesmo tempo. Temos:
NÃO, E, OU e XOR (lê-se OU EXCLUSIVO), apresentados em ordem de prioridade,
ou seja, se na mesma expressão tivermos o operador OU e depois o operador NÃO,
primeiro será executado o NÃO e depois o OU.
TABELA DA VERDADE
F F F F V F
F V F V V V
V F F V F V
V V V V F F
EXEMPLO
ALGORITMO Início
C
F (9 * C +160)/5
Algoritmos pág. 22
F
DECLARE C, F : real
LEIA C
F ( 9 * C + 160)/ 5
ESCREVA F Fim
FIM_ALGORITMO.
#include <stdio.h>
main()
{
int C, F;
printf("Entre com a temperatura em graus Celsius: ");
scanf("%d",&C);
F = ((9 * C + 160)) /5;
printf("Temperatura em Fahrenheit = %d", F);
getch(); }
EXERCÍCIOS
1. Resolva as expressões abaixo de acordo com os tipos e valores das variáveis.
int a = 3, char carac = ‘A’
a++ _________________________________________
++a _________________________________________
a += 10 _________________________________________
a = a++ * 10 ______________________________________
a = ++a * 10 ______________________________________
carac++ _________________________________________
2. Encontre o valor de A para cada passo a seguir:
#include <stdio.h>
Int main(void)
{
int A = 0; /* -----------CALCULO------------ Valor A /*
A++; ______________________________________
A +=100; ______________________________________
A *= 2; ______________________________________
A = --A – 200; ______________________________________
A = !A ; ______________________________________
14. Faça um programa que calcule e mostre a área de um círculo. (AREA = ∏R2).
15. Faça um programa que receba um número positivo e maior que zero, calcule e
exiba:
a) número digitado ao quadrado;
b) número digitado ao cubo;
c) raiz quadrada do número digitado;
d) raiz cúbica do número digitado.
16. Faça um programa (pseudocódigo e C/C++) que receba dois números maiores
que zero, calcule e mostre um elevado ao outro.
17. Faça um programa (pseudocódigo e C/C++) que receba uma medida de pés,
faça as conversões e exiba os resultados:
a) polegadas10;
b) jardas11;
c) milhas12.
18. Faça um programa (pseudocódigo e C/C++) que receba o ano de nascimento de
uma pessoa e o ano atual, calcule e exiba:
a) idade da pessoa;
b) quantos anos essa pessoa terá em 2009.
19. Faça um programa (pseudocódigo e C/C++) que receba o preço de fábrica de
um veículo13, o percentual de lucro do distribuidor e o percentual de impostos.
Calcule e exiba:
a) valor correspondente ao lucro do distribuidor;
b) valor correspondente aos impostos;
10
1 pé = 12 polegadas
11
1 jarda = 3 pés
12
1 milha = 1.760 jardas
13
O custo ao consumidor de um carro novo é a soma do preço de fábrica com o percentual de lucro do
distribuidor e dos impostos aplicados ao preço de fábrica.
Algoritmos pág. 24
c) preço final do veículo.
20. Faça um programa (pseudocódigo e C/C++) que receba o número de horas
trabalhadas e o valor do salário mínimo. Calcule e exiba o salário a receber e
seguir as regras:
a) hora trabalhada vale a metade do salário mínimo;
b) salário bruto equivale ao número de horas trabalhadas multiplicado pelo
valor da hora trabalhada;
c) imposto equivale a 3% do salário bruto;
d) salário a receber equivale ao salário bruto menos o imposto.
21. Um trabalhador recebeu seu salário e depositou em conta bancária. Emitiu dois
cheques e agora deseja saber qual o saldo atual. Sabe-se que cada retirada
bancária paga CPMF de 0,38% e o saldo inicial da conta está zerado.
22. Porsidônio comprou um saco de ração com peso em quilos. Possui dois gatos
para os quais fornece a quantidade de ração em gramas. Faça um programa
(pseudocódigo e C/C++) que receba o peso do saco de ração e a quantidade de
ração fornecida para cada gato. Calcule e exiba quanto restará de ração no saco
após cinco dias.
23. Cada degrau de uma escada tem n de altura. Faça um programa (pseudocódigo
e C/C++) que receba essa altura e a altura que o usuário deseja alcançar
subindo essa escada. Calcule e exiba quantos degraus o usuário deverá subir
para atingir seu objetivo, sem se preocupar com a altura do usuário.
24. Faça um programa (pseudocódigo e C/C++) que receba o custo de um
espetáculo teatral e o preço do convívio desse espetáculo. Deve calcular e exibir
a quantidade de convites que devem ser vendidos para que pelo menos o custo
do espetáculo seja alcançado.
RECURSIVIDADE
Podemos fazer com que uma função chame a si própria, a isto, chamamos de
função recursiva. Precisamos sempre, ter um critério de parada, pois este,
determina quando a função deve parar de chamar a si mesma, impedindo que a
função fique infinita.
Exemplo: Crie uma função que calcule o fatorial de um número inteiro:
#include <stdio.h>
int fat(int n)
{
if (n)
return n*fat(n-1);
else return 1;
}
int main()
{
int n;
printf("\n\nDigite um valor para n: ");
scanf("%d", &n);
printf("\nO fatorial de %d e %d", n, fat(n));
getch();
}
SE condição
ENTÃO comando
SE condição
ENTÃO INICIO
comando1
comando2
FIM
SENÃO INÍCIO
comando3
comando4
FIM
C/C++
SIMPLES - IF
IF (condição)
{
comando1;
comando2;
}
COMPOSTA – IF/ELSE
if (condição)
{
comando1;
comando2;
}
else
{
comando3;
comando4;
}
Se a condição for verdadeira o comando será executado, caso contrário (se
for falso) será executado a segunda rotina. As condições devem estar entre
parênteses.
Exemplo: Criar um menu
#include <stdio.h>
void main()
{
char opcao;
puts ("MENU");
puts ("");
puts ("1. Incluir ");
puts ("2. Excluir ");
puts ("3. Alterar ");
puts ("4. Sair ");
printf("Entre com a opção: [ ]\b\b");
opcao = getche();
if (opcao == '1')
printf ("\n INCLUSAO");
else if (opcao == '2')
printf ("\n EXCLUSAO");
else if (opcao == '3')
printf ("\n ALTERACAO");
else if (opcao == '4')
printf ("\n SAIR");
else
puts("\nEscolha opção correta");
getch();
}
O comando switch acima avalia o valor de uma variável para decidir qual
case será executado. E cada case é associado a uma variável.
O comando break é utilizado para impedir que sejam executados os
comandos definidos nos cases seguintes.
Quando o valor da variável não coincidir com aqueles especificados nos cases
será executado em default.
Algoritmos pág. 27
Exemplo: Criação de menus
#include <stdio.h>
void main()
{
char opcao;
puts ("MENU");
puts ("");
puts ("1. Incluir ");
puts ("2. Excluir ");
puts ("3. Alterar ");
puts ("4. Sair ");
printf("Entre com a opção: [ ]\b\b");
opcao = getche();
switch (opcao)
{
case '1' : printf("\nInclusao"); break;
case '2' : printf("\nExclusao"); break;
case '3' : printf("\nAlteracao"); break;
case '4' : printf("\nSair"); break;
default : puts("\nEscolha uma opcao correta"); break;
}
getch();
}
OPERADORES LÓGICOS
Podem ser: &&, || e ! significam respectivamente e, ou e não (conjunção,
disjunção e negação).
EXEMPLO
1. Faça um programa que receba as quatro notas bimestrais de um aluno e
imprima uma mensagem dizendo se está aprovado ou reprovado, se a média
for maior ou igual a 4. Apresentar junto, a mensagem a média do aluno.
ALGORITMO
DECLARE bim1, bim2, bim3, bim4, media : real
LEIA bim1, bim2, bim3, bim4
media (bim1 + bim2 + bim3 + bim4)/ 4
SE (media >= 5) ENTÃO
ESCREVA “Aluno aprovado com média: ”, media
SENÃO
ESCREVA “Aluno reprovado com média: ”, media
FIM_SE
FIM_ALGORITMO.
#include <stdio.h>
int main()
{
Início
media = (bim1+bim2+bim3+bim4)/4
media >= 5
Fim
EXERCÍCIOS
1. A média final de um estudante é calculada com base em três notas atribuídas a um
trabalho prático (peso 2), avaliação semestral (peso 3) e exame final (peso 5). A média
das três notas é dada com base nos pesos.
Faça um programa (pseudocódigo e C/C++) que receba as três notas, calcule, exiba a
média ponderada e a conceito:
MÉDIA PONDERADA CONCEITO
8,0 10,0 A
7,0 8,0 B
6,0 7,0 C
5,0 6,0 D
0,0 5,0 E
2. Faça um programa (pseudocódigo e C/C++) que receba três notas de um aluno, calcule
e exiba a média aritmética de acordo com a tabela. Para alunos de exame calcule e exiba
a nota que deverá ser tirada no exame para aprovação, considerando que a média no
exame é 6,0.
MÉDIA PONDERADA MENSAGEM
0,0 3,0 Reprovado
3,0 7,0 Exame
7,0 10,0 Aprovado
3. Faça um programa (pseudocódigo e C/C++) que receba dois números e mostre o maior.
4. Faça um programa (pseudocódigo e C/C++) que receba três números e mostre em
ordem crescente.
5. Faça um programa (pseudocódigo e C/C++) que receba três números obrigatoriamente
em ordem crescente um quarto número que não siga esta regra. Exiba os quatro
números em ordem decrescente.
6. Faça um programa (pseudocódigo e C/C++) que receba um número inteiro e verifique se
esse número é par ou ímpar.
Algoritmos pág. 29
7. Faça um programa (pseudocódigo e C/C++) que receba quatro valores: I, A, B e C, onde
I é um valor inteiro positivo e os outros são valores reais. Escreva os números reais de
acordo com a tabela abaixo
VALOR DE I FORMA DE ESCREVER
1 A,B,C em ordem crescente
2 A,B,C em ordem decrescente
3 O maior fica entre os outros dois n’s.
8. Faça um programa (pseudocódigo e C/C++) que exiba um menu de opções e receba a
opção do usuário e os dados necessários para executar cada operação:
MENU DE OPÇÕES
1. Somar dois números;
2. Raiz quadrada de um número;
Digite a opção desejada.
9. Faça um programa (pseudocódigo e C/C++) que exiba a data e a hora do sistema nos
formatos: dia/mês/ano – mês por extenso e hora:minuto.
10. Faça um programa (pseudocódigo e C/C++) que determine a data cronologicamente
maior de duas datas fornecidas pelo usuário. Cada data deve ser fornecida por três
valores inteiros, onde o primeiro representa o dia, o segundo o mês e o terceiro o ano.
11. Faça um programa (pseudocódigo e C/C++) que receba a hora de início de um jogo e a
hora final do jogo (cada hora é composta por duas variáveis inteiras: hora e minuto).
Calcule e exiba a duração do jogo (horas e minutos) sabendo-se que o tempo máximo de
duração do jogo é de 24 horas e que o jogo pode iniciar em um dia e terminar no dia
seguinte.
12. Faça um programa (pseudocódigo e C/C++) que receba o código correspondente ao
cargo de um funcionário e seu salário atual e exiba o cargo, o valor do aumento e o seu
novo salário. Os cargos estão abaixo:
CODIGO CARGO PERCENTUAL
1 Escriturário 50%
2 Secretário 35%
3 Caixa 20%
4 Gerente 10%
5 Diretor Não tem aumento
13. Faça um programa (pseudocódigo e C/C++) que apresente o menu de opções a seguir,
permita ao usuário escolher a opção desejada, receba os dados necessários para
executar a operação e exibir o resultado. Verifique a possibilidade de opção inválida e
não se preocupe com restrições como salário negativo.
MENU DE OPÇÕES:
1. Imposto
2. Novo salário
3. Classificação
Digite a opção desejada.
TEM TRÊS OPÇÕES
SALÁRIO PERCENTUAL DO IMPOSTO
Menor que R$ 500,00 5%
De R$ 500,00 a R$ 850,00 10%
Acima de R$ 850,00 15%
SALÁRIO AUMENTO
Maiores que R$ 1.500,00 R$ 25,00
De R$ 750,00 a R$ 1.500,00 (inclusive) R$ 50,00
De R$ 450,00 a R$ 750,00 R$ 75,00
Menores que R$ 450,00 R$ 100,00
SALÁRIO CLASSIFICAÇÃO
Até R$ 700,00 (inclusive) Mal remunerado
Maiores que R$ 700,00 Bem remunerado
14. Faça um programa (pseudocódigo e C/C++) que receba o salário de um funcionário,
calcule e exiba o novo salário desse funcionário com a bonificação e o auxílio-escola
SALÁRIO BONIFICAÇÃO
Até R$ 500,00 5%
Entre R$ 500,01 e R$ 1.200,00 12%
Acima de R$ 1.200,00 Sem bonificação
SALÁRIO AUXILIO-ESCOLA
Até R$ 600,00 R$ 150,00
Mais de R$ 600,00 R$ 100,00
15. Faça um programa (pseudocódigo e C/C++) que receba o valor do salário mínimo, o
número de horas trabalhadas, o número de dependentes do funcionário e quantidade de
horas extras trabalhadas. Calcule e exiba o salário a receber do funcionário de acordo
com as regras:
Algoritmos pág. 30
- valor da hora trabalhada é igual a 1/5 do salário mínimo;
- salário do mês é igual ao número de horas trabalhadas multiplicado pelo valor da hora
trabalhada.
16. Um supermercado deseja reajustar os preços de seus produtos usando o seguinte
critério: o produto poderá ter seu preço elevado ou reduzido. Para alterar o preço o
produto deve preencher pelo menos um dos requisitos a seguir:
VENDA MÉDIA MENSAL PREÇO TOTAL %AUMENTO %DESCONTO
< 500 < R$ 30,00 10 -
>= 500 E < 1200 >= R$ 30,00 e < R$ 800 15 -
>= 1200 >= R$ 80,00 - 20
17. Com três valores dados: A, B, e C, verifique se eles podem ser os comprimentos dos
lados de um triângulo e, se forem, verificar se é um triângulo eqüilátero, isósceles ou
escaleno. Se não formarem um triangulo deve escrever uma mensagem. OBS.:
- comprimento de cada lado de um triângulo é menor que a soma dos outros dois lados;
- chama-se triângulo eqüilátero, o triângulo que tem três lados iguais.
18. Faça um programa que receba a altura e o peso de uma pessoa. De acordo com a tabela
abaixo e exiba a classificação da pessoa:
ALTURA PESO
ATÉ 60 Entre 60 a 90 Acima de 90
Menores que 1,20 A D G
De 1,20 a 1,70 B E H
Maiores que 1,70 C F I
Algoritmos pág. 31
ESTRUTURA DE REPETIÇÃO
ALGORITMOS
NÚMERO DEFINIDO DE REPETIÇÕES (ESTRUTURA PARA)
Exemplo: x 1
y5
ENQUANTO x < y FAÇA
INÍCIO
xx+2
yy+1
FIM
Simulação
X Y
1 5 Iniciais
3 6
5 7
7 8
9 9
C/C++
for
Utilizada quando conhecemos o número de vezes que um trecho deverá ser
repetido.
Sintaxe: for (i=valor inicial; condição; incremento ou decremento de i)
comando;
break
Utilizado para interrompe qualquer tipo de repetição.
continue
Permite que não se execute o restante do bloco, passando para o próximo.
Não interrompe o loop apenas para para o próximo sem completar o atual.
while
Utilizada quando o número de repetição não é fixo. Os comandos serão
repetidos até a condição assumir o valor falso. Quando o teste condicional ocorre
no início, a possibilidade da repetição não ser executada, quando a condição for
falsa. Sintaxe: WHILE (condição)
{
comando1;
N
comando2;
……………..
} S
Exemplo: soma todos números inteiros entre 1 e 1000
#include <stdio.h>
main()
{
long i = 1000, soma = 0;
while (i)
soma += i--;
printf("\nSoma encontrada foi %ld", soma);
getch();
}
do-while
Utilizada quanto o número de repetições necessárias não é fixo. Os
comandos serão repetidos até a condição assumir valor falso. Nesse tipo de
estrutura o teste condicional ocorre no fim, garantindo a execução de pelo menos
uma vez. Sintaxe: do
{
comandos;
}
while (condição);
Exemplo: Some todos os números inteiros entre 1 e 100:
#include <stdio.h>
main()
{
long i = 1000, soma = 0; N
do
soma += i--; S
while (i);
printf("\nSoma encontrada foi %ld", soma);
getch();
}
Algoritmos pág. 34
EXEMPLOS
ALGORITMO Início
DECLARE soma, contador : inteiro
soma 0
PARA contador de 1 até 100 passo 1 FAÇA Soma 0
soma soma + contador
FIM_PARA
FIM_ALGORITMO
#include <stdio.h>
int main(void) Contador1,100,1
{
int soma, contador;
soma = 0;
for (contador=1;contador<=100;contador++) Soma Soma + Contador
{
soma = soma + contador;
}
printf("%d", soma);
getch();
} Soma
fim
EXERCÍCIOS
1. Um funcionário de uma empresa recebe aumento salarial anualmente. Sabe-se
que:
a) esse funcionário foi contratado em 1995 com salário inicial de R$ 1.000,00;
b) em 1996 recebeu aumento de 1,5% sobre seu salário inicial;
c) a partir de 1997 (inclusive), os elementos salariais sempre corresponderam
ao dobro do percentual do ano anterior. Faça um programa que determine o
salário atual desse funcionário.
2. Faça um programa que leia N e que indique quantos valores inteiros e positivos
devem ser lidos a seguir. Para cada número lido, mostre uma tabela contendo o
valor lido e o fatorial desse valor.
3. Faça um programa que leia cinco pares de valores (a, b), todos inteiros e
positivos, um de cada vez. Mostre os números inteiros pares de a até b
(inclusive).
4. Faça um programa que leia dez conjuntos de dois valores, o primeiro
representando o número do aluno e o segundo representando a sua altura em
centímetros. Encontre o aluno mais alto e o mais baixo. Exiba o número do
aluno mais alto e o número do aluno mais baixo junto com suas alturas.
5. Foi feita uma estatística em cinco cidades brasileiras para coletar dados sobre
acidentes de trânsito. Foram obtidos os seguintes dados:
a) código da cidade;
b) número de veículos de passeio (1999);
c) número de acidentes de trânsito com vítimas (1999).
Deseja-se saber:
a) maior e o menor índice de acidentes de trânsito e a que cidades pertencem;
b) média de veículos nas cinco cidades unidas;
c) média de acidentes de trânsito nas cidades com menos de 2.000 veículos de
passeio.
6. Uma empresa possui dez funcionários com as seguintes características: código,
número de horas trabalhadas no mês, turno de trabalho (matutino, vespertino
ou noturno), categoria (operária ou gerente), valor da hora trabalhada.
Algoritmos pág. 35
Sabendo-se que essa empresa deseja informatizar sua folha de pagamento,
faça um programa que:
a) Leia as informações dos funcionários, exceto o valor da hora trabalhada, não
permitindo que sejam informados turnos nem categorias inexistentes. Trabalhar
sempre com a digitação de letras maiúsculas;
b) calcule o valor da hora trabalhada, conforme abaixo:
VETORES
ALGORITMOS
DECLARAÇÃO DO VETOR
X
1 2 3 4 5
x[1]
X[1] 50
X[4] 9
X 50 9
1 2 3 4 5
CARREGANDO UM VETOR
C/C++
DECLARAÇÃO DO VETOR
int ver[10];
Este vetor possui 10 posições iniciando com 0 e terminando em 9 em cada
posição podemos armazenar números inteiros (int)
char x[5];
Este, possui cinco posições, começando pela posição 0 e indo até a 4.
strcpy(nome, “Genoveva”);
Atribui o nome Genoveva ao vetor nome, declarado assim: char nome[6].
CARREGANDO UM VETOR
Lê os dados do teclado, atribuindo a um vetor.
for (i = 0; i <10;i++)
cin >> vetor[i];
IMPRIMINDO UM VETOR
for (i=0; i<10;i++)
cout << vetor[i];
EXEMPLO
1. Criar um programa que efetue a leitura dos nomes de 20 pessoas e em seguida
apresentar na mesma ordem em que foram informados.
ALGORITMO
DECLARE nome[20] : caractere início
i : inteiro
PARA i de 1 até 20 passo 1 FAÇA
LEIA nome[i]
FIM_PARA i1,20,1
PARA i de 1 até 20 passo 1 FAÇA
ESCREVA nome[i]
FIM_PARA
FIM_ALGORITMO. nome[i]
#include <stdio.h>
main()
{
i1,20,1
char nome[20];
int i;
for (i=0;i<=20;i++)
printf("\nEntre com o %d nome: %s", i,nome[i]);
scanf("%s",&nome[i]); nome[i]
for (i=0;i<=20;i++)
printf("\Nome: %s", nome[i]);
getch(); } fim
Algoritmos pág. 39
2. Receber as notas de cinco alunos, calcular a média geral da turma e verificar
quantos conseguiram ficar acima da média:
ALGORITMO
DECLARE soma, media, conta NUMERICO
PARA x de 1 ATÉ 5 FAÇA
INICIO
LER nota[x]
soma soma + nota[x]
FIM
FIM_PARA
Media soma / 10
PARA n de 1 ATÉ 5 FAÇA
SE nota[n] > media Então
Conta conta + 1
FIM_SE
FIM_PARA
FIM_ALGORITMO.
#include <stdio.h>
#include <string.h>
int main()
{
int x, conta;
double nota[5];
double soma, media;
soma = 0.0;
media = 0.0;
conta = 0;
for (x=0;x<5;x++)
{
scanf("%lf",¬a[x]);
soma = soma + nota[x];
}
media = soma / x;
for (x=0;x<5;x++)
{
if (nota[x] > media)
conta = conta + 1;
}
printf("%lf %d\n", media);
printf("%lf %d\n", conta);
getch();
}
EXERCÍCIOS
Vetor2 3 5 4 2 2 5 3 2 5 9
1 2 3 4 5 6 7 8 9 10
4. Faça um programa que carregue um vetor com oito números inteiros, calcule e
exiba dois vetores resultantes. O primeiro vetor resultante deve contar os
números positivos e o segundo, os números negativos. Cada vetor resultante
vai ter no máximo oito posições, sendo que nem todas devem ser
obrigatoriamente utilizadas.
5. Faça um programa que carrega um vetor com 10 números inteiros. Calcule e
exiba um vetor resultante ordenando de maneira decrescente.
X 3 5 4 2 1 6 8 7 11 9
1 2 3 4 5 6 7 8 9 10
Ordenado 11 9 8 7 6 5 4 3 2 1
1 2 3 4 5 6 7 8 9 10
Relatório
Os números pares são:
Número 2 na posição 1
Número 4 na posição 2
Número 6 na posição 4
Soma dos pares = 12
Os números impares são:
Número 5 na posição 3
Número 3 na posição 5
Número 7 na posição 6
Quantidade de números ímpares = 3
Algoritmos pág. 42
MATRIZ
DEFINIÇÃO
Variável composta homogênea bidimensional formada por uma seqüência de
variáveis, todas do mesmo tipo com o mesmo identificador (mesmo nome),
alocadas seqüencialmente na memória. Uma vez que as variáveis têm o mesmo
nome, o que as distingue são os índices que referenciam sua localização dentro da
estrutura. Uma variável do tipo matriz é composta por linhas e colunas.
DECLARAÇÃO DE MATRIZ
EXEMPLO DE MATRIZ
1 2 3 4 5
1
a 2
3
a[1,1] a[3,4]
1 2 3 4 5
1 45
a 2 13 0
3 -4
Ficaria assim:
1 2 3 4 5
1 12 9 3 7 -23
X 2 15 4 2 34 -4
3 3 45 3 0 -3
Algoritmos pág. 43
C/C++
DECLARAÇÃO DE MATRIZ
0 1 2 3 4 5
x 0
1
ATRIBUINDO VALORES
x[1] [4] = 5
0 1 2 3 4 5
x 0
1 5
Para ler dados do teclado e atribuir a uma matriz já declarada como int
mat[7] [3]:
Para exibir uma matriz declarada como por exemplo, float x[10] [6]:
for (i=0;i<10;i++)
{
for (j=0;j<6;j++)
cout << x[i] [j];
}
#include <stdio.h>
void main()
{
int i;
char lista_time[][12]={"SANTOS",
"CORINTHIANS",
"PALMEIRAS",
"SAO PAULO",
"FLAMENGO"};
for (i=0; i<5; i++)
{
printf("\nO time de indice %d e: %s", i, lista_time[i]);
}
getch();
}
EXEMPLOS
1. Ler duas matrizes do tipo vetor, sendo A com 20 elementos e B com 30
elementos. Construir uma matriz C, sendo esta a junção das duas outras
matrizes. Desta forma, C deverá ter a capacidade de armazenar 50 elementos.
Apresentar a matriz C.
ALGORITMO
DECLARE a[1,20], b,[1,30], c[1,50], i NUMÉRICO
PARA i 1 até 20 FAÇA
LEIA a[i]
FIM_PARA
PARA i 1 até 30 FAÇA
LEIA b[i]
FIM_PARA
PARA i 1 até 50 FAÇA
#include <stdio.h>
int main() Início
{
int i; I 1,20
double a[20], b[30], c[50];
for (i=0;i<20;i++)
{
scanf("%lf",&a[i]); } a[ I ]
for (i=0;i<30;i++)
{ scanf("%lf",&b[i]); }
for (i=0;i<50;i++)
{ I 1,30
if (i <=20)
c[i] = a[i];
else
c[i] = b[i-20]; b[ I ]
}
for (i=0;i<50;i++)
{ printf("%lf",c[i]); }
getch(); I 1,50
}
N S
i<=20
I 1,50
c[i]
Fim
2. Lê 5 strings e exibe na tela:
#include <stdio.h>
int main()
{ char strings [5] [100];
int conta;
for (conta = 0; conta<5;conta++)
{
printf ("\n\nDigite a string numero: ");
gets (strings[conta]); }
printf("\n\n\nAs strings que digitadas foram:\n\n");
for (conta=0;conta<5;conta++)
printf("%s\n", strings[conta]);
getch();
}
Algoritmos pág. 46
EXERCÍCIOS
1. Faça um programa que carregue uma matriz 2 x 2, calcule e exiba uma matriz
resultante que será a matriz digitada multiplicada pelo maior elemento da
matriz.
2. Faça um programa que carregue uma matriz 10 x 3 com as notas de dez alunos
em três provas. Exiba um relatório com o número do aluno (linha) e a prova em
que cada aluno obteve menor nota. Ao final do relatório, exiba quantos alunos
tiveram menor nota na prova1, quantos tiveram menor nota na prova2 e
quantos tiveram menor nota na prova3.
3. Faça um programa que carregue:
a) um vetor com oito posições com os nomes das lojas;
b) um vetor com quatro posições com os nomes dos produtos;
c) uma matriz com os preços de todos os produtos em cada loja.
4. Faça um programa que carregue uma matriz 10 x 20 com números inteiros e
some cada uma das linhas, armazenando o resultado das somes em um vetor.
A seguir, multiplique cada elemento da matriz pela soma da linha e exiba a
matriz resultante.
5. Faça um programa que carregue a primeira matriz de ordem 4 x 5 e uma
segunda com ordem 5 x 2, calcule e exiba a matriz resultante do produto
matricial das duas matrizes anteriores, armazenando em uma terceira matriz de
ordem 4 x 2.
6. faça um programa que carregue uma matriz 15 x 5 com números inteiros,
calcule e exiba quais os elementos da matriz que se repetem e quantas vezes
cada um está repetido.
7. faça um programa que carregue:
- vetor com os nomes de cinco produtos;
- matriz 5 x 4 com os preços dos cinco produtos em quatro lojas diferentes;
- vetor com o custo do transporte dos cinco produtos.
Calcule a segunda matriz 5 x 4 com os valores dos impostos de cada produto de
acordo com a tabela?
PREÇO % DE IMPOSTO
Até R$ 50,00 5
Entre R$ 50,01 e R$ 100,00 10
Acima de R$ 100,00 20
FUNÇÃO strcpy()
FUNÇÃO strcat()
Sintaxe: strcat(string_destino, string_origem);
A origem continuará inalterada e será anexada ao fim da string destino.
Exemplo prático:
#include <stdio.h>
#include <string.h>
int main()
{
char str1[100], str2[100];
printf("Entre com uma string: ");
gets(str1);
strcpy(str2,"Você digitou a string "); /* copia o texto para str3*/
strcat(str2,str1); /* str2 armazena o texto mais o conteúdo */
printf("\n\n%s",str2);
getch();
}
FUNÇÃO strlen()
Sintaxe: strlen(string);
Retorna o comprimento da string fornecida. O terminador nulo não é contado.
Exemplo prático:
#include <stdio.h>
Algoritmos pág. 48
#include <string.h>
int main()
{ int size;
char str[100];
printf("Entre com uma string: ");
gets (str);
size = strlen(str);
printf("\n\nA string que voce digitou tem tamanho %d", size);
getch(); }
FUNÇÃO strchr()
Sintaxe: strchr(str1, ch)
Retorna um ponteiro para a posição da cadeia str1, onde o ch é o caractere
encontrado pela primeira vez.
FUNÇÃO strstr()
Sintaxe: strstr(string1,string2);
Retorna um ponteiro para a posição da cadeia str1, onde a cadeia str2 é
encontrada pela primeira vez.
FUNÇÃO strcmp()
Sintaxe: strcmp(string1,string2);
Compara a string1 com a string2, se ambas forem idênticas a função retorna
0, caso contrário retorna não-zero.
Exemplo prático:
#include <stdio.h>
#include <string.h>
int main()
{
char str1[100],str2[100];
printf("Entre com uma string: ");
gets (str1);
printf("\n\nEntre com outra string: ");
gets(str2);
if (strcmp(str1,str2))
printf("\n\nAs duas strings são diferentes.");
else
printf("\n\nA duas strings são iguais.");
getch();
}
EXERCÍCIO
1. Faça um programa que leia quatro palavras pelo teclado e armazene cada
palavra em uma string. Depois, concatene todas as strings lidas numa única
string. Por fim, apresente esta como resultado final.
2. Faça um programa que receba uma frase, calcule e exiba a quantidade de
palavras na frase digitada.
3. Faça um programa que receba o nome completo de uma pessoa e exiba os
nomes intermediários abreviados. Exemplo: SIMONE MARIA VIANA SIMONE
M. VIANA.
4. Faça um programa que receba o nome completo de uma pessoa e reescreva
conforme o exemplo: SIMONE MARIA VIANA VIANA, S. M.
5. Faça um programa que receba duas frases e gere uma terceira que representa a
combinação das palavras das duas frases lidas.
6. Faça um programa que receba uma frase e coloque as palavras em ordem
crescente.
Algoritmos pág. 49
REGISTROS (Estruturas)
São estruturas que podem agregas diferentes informações. Assim, são feitas
de diferentes combinações, gerando novos tipos de dados. Um registro é uma
coleção de campos, em que cada campo pode ser de um tipo de dado diferente. Por
isso são conhecidos como variáveis compostas heterogêneas.
DECLARAÇÃO - ALGORITMOS
Para o programa usar esse novo tipo de dados é necessário declarar uma
variável, por exemplo, produto x ou produto char[10] [6] (matriz bidimensional
com 10 linhas e seis colunas).
Podemos definir a variável junto com a estrutura. Exemplo:
struct produto
{
int código;
char descrição[30];
} x[8] [5];
EXEMPLOS
#include <stdio.h>
#include <string.h>
struct tipo_endereco
{
char rua [50];
int numero;
char bairro [20];
char cidade [30];
char sigla_estado [3];
long int CEP;
};
struct ficha_pessoal
{ Escrita
char nome [50];
long int telefone;
struct tipo_endereco endereco;
};
main (void)
{
struct ficha_pessoal ficha;
strcpy (ficha.nome,"Luiz Osvaldo Silva");
ficha.telefone=4921234;
strcpy (ficha.endereco.rua,"Rua das Flores");
ficha.endereco.numero=10;
strcpy (ficha.endereco.bairro,"Cidade Velha");
strcpy (ficha.endereco.cidade,"Belo Horizonte");
strcpy (ficha.endereco.sigla_estado,"MG");
ficha.endereco.CEP=31340230;
getch();
}
EXERCÍCIOS
12 5 8 9 1
12 5 9 1
ARQUIVOS
Estruturas de dados manipuladas fora do ambiente do programa são
conhecidas como arquivos. Considera-se como ambiente do programa a memória
principal, onde nem sempre é possível ou conveniente manter certas estruturas de
dados.
Um arquivo que é armazenado em um dispositivo de memória secundária,
como discos, por exemplo, pode ser lido ou escrito por um programa.
Um arquivo é formado por uma coleção de registros,e cada registro é formado
por campos e cada campo possui suas características específicas. Uma ou mais
campos desse registro é considerado campo-chave – campo que diferencia um
registro dos demais, evitando duplicidade de informações.
Um sistema de banco de dados é composto por um ou vários arquivos, onde
cada arquivo possui programas de manutenção: inclusão, exclusão lógica ou física,
alteração, consulta geral e específica e relatórios.
Exclusão física é que após eliminar o registro, os demais são deslocados e a
exclusão lógica, é quando os registros possuem um campo adicional identificando
se os mesmo estão ou não ativos (excluídos possui valor 0).
DECLARAÇÃO EM C/C++
Um arquivo pode representar várias coisas: arquivos em disco, impressora,
teclado ou qualquer dispositivo. Vamos ver somente arquivos em disco.
Para utilizar, precisamos usar a biblioteca stdlib.h que fornece funções de
manipulação de arquivos e definição de novos tipos de dados para serem usados.
Os tipos de dados definidos na biblioteca são: size_t, fpos_t e FILE.
O FILE identifica um arquivo no disco, direcionando todas as operações.
Exemplo: FILE *arquivo, *ponteiro;
fclose()
Fecha um arquivo aberto, se ocorrer um erro poderá haver perda de dados.
Sintaxe: int fclose(FILE *arquivo14);
ferror()
Detecta se ocorreu algum erro durante uma operação com arquivos.
Sintaxe: int ferror(FILE *arquivo15);
Retorna um número inteiro, se esse número for diferente de zero significa que
ocorreu um erro durante a última operação realizada com o arquivo apontado por
arquivo. Se for 0 não ocorreu erro.
fputc()
Escreve um caractere em um arquivo. Se for bem sucedida retorna o
caractere escrito caso contrário, retorna EOF.
Sintaxe: int fputc(char ch, FILE *arquivo);
fgetc()
Lê um caractere em um arquivo. Se for bem sucedida retorna o caractere lido
caso contrário, retorna EOF.
Sintaxe: int fgetc (FILE *arquivo);
fputs()
Escreve uma cadeira de caracteres em um arquivo.
Sintaxe: int fputs(char *cadeira, FILE *arquivo);
fgets()
Lê uma cadeira de caracteres armazenada em um arquivo.
Sintaxe: int fgets(char *cadeia, int tamanho, FILE *arquivo);
fwrite()
Escreve qualquer tipo dado e não apenas caracteres ou cadeias de caracteres.
Sintaxe: int fwrite(&var, sizeof(double), 1, arquivo);
fread()
Lê qualquer tipo dado e não apenas caracteres ou cadeia de caracteres.
Quando for bem sucedida vai gerar como retorno um valor igual ao número de
leituras realizadas, caso contrário, quando ocorrer um erro ou quando o final do
arquivo for encontrado.
Sintaxe: int fread(&var, sizeof(double), 1, arquivo);
fseek()
posiciona o ponteiro em um endereço específico, tornando possível leituras e
escritas aleatórias.
Sintaxe: int fseek (FILE *arquivo, long quantidade_bytes, int posição);
Posição:
SEEK_SET: movimentação de qtde_bytes a partir da posição inicial do
arquivo;
SEEK_CUR: movimentação de qtde_bytes a partir da posição atual do
arquivo;
14
É o ponteiro obtido quando o arquivo for aberto com a função fopen().
15
É o ponteiro obtido quando o arquivo for aberto com a função fopen().
Algoritmos pág. 54
SEEK_END: movimentação de qtde_bytes a partir da posição final do
arquivo.
feof()
Retorna um número inteiro. Quando esse número for 0 significa que o fim do
arquivo ainda não foi atingido e qualquer outro valor significa que foi encontrado.
rewind()
Posiciona o cursor (posição atual) de volta ao início do arquivo.
Sintaxe: void rewind(file *arquivo);
remove()
Apaga um arquivo. Se for executada com êxito retorna o número 0.
Sintaxe: int remove(char *arquivo);
fflush()
Escreva o conteúdo armazenado no buffer dentro de um arquivo.
Sintaxe: int fflush(FILE *arquivo);
exit()
Aborta a execução do programa. Podemos chamar de qualquer ponto e faz
com que o programa termine e retorna para o sistema operacional, o código de
retorno.
Sintaxe: void exit (int código_retorno);
Exemplo: Garante que o programa não deixará de abrir o arquivo.
#include <stdio.h>
#include <stdlib.h>
main (void)
{
FILE *fp;
fp=fopen ("exemplo.bin","wb");
printf("Arquivo aberto com sucesso!");
if (!fp)
{
printf("Erro na abertura do arquivo. Fim de programa!");
exit(1);
}
getch(0); }
getc
Retorna um caractere lido do arquivo.
Sintaxe: int getc (FILE *arquivo);
feof
EOF (end of file – fim de arquivo). Usado para verificar se o arquivo chegou
ao fim, retornando diferente de zero, caso contrário retorna zero. Outra forma é
comparar o caractere lido por getc com o EOF.
Sintaxe: int feof (FILE *arquivo);
Exemplo: abre um arquivo já existente e o lê, caractere a caractere até que o
final do arquivo seja encontrado e apresenta-os na tela:
/* le os caracteres de uma arquivo e exibe na tela*/
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE *fp;
char c;
fp = fopen("arquivo.txt","r"); /* arquivo ASCII para leitura*/
if (!fp)
{
printf("Erro na abertura do arquivo.");
exit(0);
}
while ((c = getc(fp)) != EOF); /* enquanto não for o final do arquivo*/
printf("%c", c); /*imprime o caractere lido */
fclose(fp);
getch(0);
}
FLUXOS PADRÃO
fprintf
Semelhante a função printf() porém a saída é em um arquivo e não no
monitor. Especificando um arquivo através de um ponteiro.
Sintaxe: int fprintf(FILE *arquivo, char *str,...)
fscanf
Semelhante a função scanf(), lê de um arquivo e não de um teclado.
Sintaxe: int fscanf(FILE *arquivo, char *str,...)
Algoritmos pág. 56
EXEMPLOS
1) Crie um programa que abra um arquivo para escrita, feche-o e o abra
novamente para leitura:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void)
{
FILE *p;
char c, str[30], frase[80] = "este é um arquivo chamado: ";
int i;
/* Lê um nome para o arquivo a ser aberto */
printf("\n\nEntre com um nome para o arquivo: \n");
gets(str);
if (!(p = fopen(str,"w"))) /* caso haja erro na abertura do arquivo*/
{
printf ("Erro! Impossível abrir o arquivo!\n");
exit(1);
}
/* se não houver erro, imprime no arquivo e feche-o*/
strcat(frase, str);
for (i=0; frase[i];i++)
putc(frase[i],p);
fclose(p);
EXERCÍCIOS
SUB-ROTINAS
Também conhecidas como subprogramas, são blocos de instruções que
realizam tarefas específicas. O código de uma sub-rotina é carregado uma vez e
podem ser executadas quantas vezes for necessário. Dessa maneira, os programas
tendem a ficar menores e mais organizados, uma vez que o programa pode ser
subdividido em pequenas tarefas.
São executados linearmente até o final. Quando executamos sub-rotinas
podemos realizar desvios na execução natural dos programas através da chamada
da função pelo programa principal.
ALGORITMO:
ALGORITMO
DECLARE sal NUMERICO
LEIA sal
aum calculo (sal)
novo_sal sal + aum
ESCREVA “Novo salário: “, novo_sal
FIM_AGORTIMO
COMANDO RETURN
Algoritmos pág. 59
Encerra a execução da função e, se o valor de retorno for informado, a função
retorna essa valor (precisa ser compatível com o tipo de retorno declarada para a
função). Pode ter mais de um return.
Sintaxe: return valor_retorno ou somente return;
Exemplo: Criar uma função que calcule a área de um quadrado.
#include <stdio.h>
int quadrado(int a)
{
return (a * a);
}
int main()
{
int num;
printf("Entre com um numero: ");
scanf("%d", &num);
num=quadrado(num);
printf("\n\nO quadrado vale: %d\n", num);
getch();
}
EXERCÍCIOS