Buscar

Apostila Algoritmos e C C++

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 59 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 59 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 59 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Algoritmos		pág. � PAGE �59�
Algoritmos
Simone Maria Viana
simone_viana@yahoo.com.br
2006
ÍNDICE
6INTRODUÇÃO	�
6LÓGICA	�
6COMPUTADOR	�
7PROGRAMA	�
7LINGUAGENS DE PROGRAMAÇÃO	�
7TÉCNICAS ATUAIS DE PROGRAMAÇÃO	�
7AÇÃO	�
7ESTADO	�
7PROCESSO OU EVENTO	�
7PADRÕES DE COMPORTAMENTO	�
7EXERCÍCIO	�
8CONCEITOS BÁSICOS	�
8DEFINIÇÕES	�
8COMO FAZER UM ALGORITMO	�
8TESTE DE MESA	�
8CLASSIFICAÇÃO DOS ALGORITMOS	�
8DESCRIÇÃO NARRATIVA	�
9FLUXOGRAMA	�
9PSEUDOCÓDIGO ou PORTUGOL	�
9SIMBOLOGIA BÁSICA PARA FLUXOGRAMA	�
10TIPOS DE DADOS	�
10VARIÁVEIS	�
11CONSTANTES	�
11IDENTIFICADORES	�
11EXEMPLOS	�
12EXERCÍCIOS	�
13LINGUAGEM C/C++	�
13BIBLIOTECAS	�
14ETAPAS DA IMPLEMENTAÇÃO	�
14include	�
14DIRETIVAS define e undef	�
15EXEMPLO	�
15Dev-C++	�
15LISTA DE RECURSOS	�
16INSTALAÇÃO E CONFIGURAÇÃO DO DEV-C++	�
16ESTRUTURA SEQÜENCIAL	�
16DECLARAÇÃO DE VARIÁVEIS EM ALGORITMOS	�
16COMANDO DE ATRIBUIÇÃO EM ALGORITMOS	�
16COMANDO DE ENTRADA EM ALGORITMOS	�
16COMANDO DE SAÍDA EM ALGORITMOS	�
16REQUERIMENTOS NECESSÁRIOS	�
16TIPOS DE DADOS	�
17ESTRUTURA SEQÜENCIAL EM C/C++	�
17DECLARAÇÃO DE VARIÁVEIS EM C/C++	�
17STRINGS	�
18getche()	�
18Exemplos	�
18COMANDO DE ATRIBUIÇÃO EM C/C++	�
18COMANDOS DE ENTRADA EM C/C++	�
18cin	�
19gets	�
19scanf	�
19COMANDOS DE SAÍDA EM C/C++	�
19cout	�
19printf	�
20puts	�
20COMENTÁRIOS EM C/C++	�
20OPERADORES E FUNÇÕES PREDEFINIDAS EM C/C++	�
20Matemáticos	�
20Relacionais	�
21Matemáticas	�
21Lógicos	�
21EXEMPLO	�
22EXERCÍCIOS	�
24RECURSIVIDADE	�
25ESTRUTURA CONDICIONAL (Controle de Fluxo)	�
25ALGORITMOS	�
25ESTRUTURA CONDICIONAL COMPOSTA	�
25C/C++	�
25SIMPLES - IF	�
26COMPOSTA – IF/ELSE	�
26ESTRUTURA CASE - SWITCH	�
27OPERADORES LÓGICOS	�
27EXEMPLO	�
28EXERCÍCIOS	�
31ESTRUTURA DE REPETIÇÃO	�
31ALGORITMOS	�
31NÚMERO DEFINIDO DE REPETIÇÕES (ESTRUTURA PARA)	�
31NÚMERO INDEFINIDO DE REPETIÇÕES E TESTE DE INÍCIO (ESTRUTURA ENQUANTO)	�
31NÚMERO INDEFINIDO DE REPETIÇÕES E TESTE NO FINAL (ESTRUTURA REPITA)	�
32C/C++	�
32for	�
33break	�
33continue	�
33while	�
33do-while	�
34EXEMPLOS	�
34EXERCÍCIOS	�
37VETORES	�
37ALGORITMOS	�
37DECLARAÇÃO DO VETOR	�
37ATRIBUINDO VALORES AO VETOR	�
37CARREGANDO UM VETOR	�
37C/C++	�
37DECLARAÇÃO DO VETOR	�
37ATRIBUINDO VALORES AO VETOR	�
38CARREGANDO UM VETOR	�
38IMPRIMINDO UM VETOR	�
38EXEMPLO	�
40EXERCÍCIOS	�
42MATRIZ	�
42DEFINIÇÃO	�
42DECLARAÇÃO DE MATRIZ	�
42EXEMPLO DE MATRIZ	�
42ATRIBUINDO VALORES À MATRIZ	�
42CARREGANDO UMA MATRIZ	�
43EXIBINDO OS ELEMENTOS DE UMA MATRIZ	�
43C/C++	�
43DECLARAÇÃO DE MATRIZ	�
43ATRIBUINDO VALORES	�
44EXIBINDO ELEMENTOS DA MATRIZ	�
44EXEMPLOS	�
46EXERCÍCIOS	�
47MANIPULANDO CARACTERES EM C/C++	�
47FUNÇÃO strcpy()	�
47FUNÇÃO strcat()	�
47FUNÇÃO strlen()	�
48FUNÇÃO strchr()	�
48FUNÇÃO strstr()	�
48FUNÇÃO strcmp()	�
48EXERCÍCIO	�
49REGISTROS (Estruturas)	�
49DECLARAÇÃO - ALGORITMOS	�
49DECLARAÇÃO DE REGISTROS EM C/C++	�
49DECLARAÇÃO DE VARIÁVEIS DO TIPO REGISTRO EM C/C++	�
49ACESSO A MEMBROS DE ESTRUTURAS	�
50EXEMPLOS	�
50EXERCÍCIOS	�
52ARQUIVOS	�
52DECLARAÇÃO EM C/C++	�
52COMANDOS DE ARQUIVOS EM C/C++	�
52fopen()	�
53fclose()	�
53ferror()	�
53fputc()	�
53fgetc()	�
53fputs()	�
53fgets()	�
53fwrite()	�
53fread()	�
53fseek()	�
54feof()	�
54rewind()	�
54remove()	�
54fflush()	�
54exit()	�
54LENDO E ESCREVENDO CARACTER EM ARQUIVOS EM C/C++	�
54putc	�
55getc	�
55feof	�
55FLUXOS PADRÃO	�
55fprintf	�
55fscanf	�
56EXEMPLOS	�
57EXERCÍCIOS	�
58SUB-ROTINAS	�
58ALGORITMO:	�
58SUB-ROTINAS (FUNÇÕES) EM C/C++	�
58COMANDO RETURN	�
59EXERCÍCIOS	�
��
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
Concluímos que lógica é a ciência que estuda as leis e critérios de validade que regem o pensamento e a demonstração, ou seja, ciência dos princípios formais do raciocínio.
Usar a lógica é um fator importante na área de tecnologia de informação, pois os profissionais no dia-a-dia solucionam problemas e atingem os objetivos apresentados por seus usuários com eficiência e eficácia, utilizando recursos computacionais e/ou automatizados. Porém, ninguém ensina ninguém a pensar, pois todas as pessoas “normais” possuem esse dom. 
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.
PROGRAMA
Um programa é um algoritmo escrito em uma linguagem computacional.
LINGUAGENS DE PROGRAMAÇÃO
São Softwares que permitem o desenvolvimento de programas. Possuem um poder de criação ilimitado, desde jogos, editores de texto, sistemas empresariais até sistemas operacionais.
Existem várias linguagens de programação, cada uma com suas características próprias. Exemplos: Pascal, Clipper, C, Visual Basic, Delphi e etc.
TÉCNICAS ATUAIS DE PROGRAMAÇÃO
Programação Seqüencial;
Programação Estruturada;
Programação Orientada a Eventos e Objetos.
AÇÃO
Evento que ocorre num período de tempo finito, estabelecendo um efeito intencionado e bem definido. Exemplos:
Caminhar até a próxima esquina.
Colocar um livro em cima de uma mesa.
Atribuir o valor 3.14 a uma variável.
Estamos interessados primeiramente nos efeitos que as ações produzem.
Ações de efeito imprevisíveis não nos interessam.
Algoritmos determinísticos.
ESTADO
Conjunto de propriedades do objeto que são relevantes para nós na situação desejada. Exemplos:
Batatas com casca ou descascadas.
Valor de uma variável em um certo instante de execução.
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
1. Qual é o padrão de comportamento utilizado para gerar essa seqüência:
1, 1, 2, 3, 5, 8, 13, 21, 34, 55
�
CONCEITOS BÁSICOS
DEFINIÇÕES
Algoritmo é uma seqüência de passos que visa atingir um objetivo bem definido (FORBELLONE, 1999).
Algoritmo é a descrição de uma seqüência de passos que deve ser seguida para a realização de uma tarefa (ASCENCIO, 1999).
Algoritmo é uma seqüência finita de instruções ou operações cuja execução, em tempo finito, resolve um problema computacional, qualquer que seja sua instância (SALVETTI, 1999).
Algoritmo são regras formais para a obtenção de um resultado, ou a solução de um problema, englobando fórmulas de expressões aritméticas (MANZANO, 1997).
Concluímos que, no nosso dia-a-dia, executamos vários algoritmos como: fazer um café da manhã, trocar a lâmpada, ir à faculdade etc.
COMO FAZER UM ALGORITMO
Precisamos ler atentamente o enunciado, definir os dados de entrada�, o processamento� e osdados de saída�, utilizar um dos tipos de algoritmo e testar através de simulações.
TESTE DE MESA
Seguir as instruções do algoritmo de maneira precisa para verificar se o procedimento utilizado está correto ou não. Exemplo:
Nota da Prova 1
Nota da Prova 2
Nota da Prova 3
Nota da Prova 4
Utilize a tabela abaixo:
	PROVA1
	PROVA2
	PROVA3
	PROVA4
	MÉDIA
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
CLASSIFICAÇÃO DOS ALGORITMOS
DESCRIÇÃO NARRATIVA
Após analisar o enunciado do problema o mesmo é escrito, utilizando uma linguagem natural para descrever os passos para solucionar o problema.
VANTAGEM: não é necessário aprender nenhum conceito.
DESVANTAGEM: como utiliza uma linguagem natural pode haver várias interpretações.
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.
SIMBOLOGIA BÁSICA PARA DIAGRAMA DE BLOCOS 
	Símbolo
	Descrição
	
	Terminal – símbolo utilizado como ponto de início/fim de um fluxograma.
	
	Seta de fluxo de dados – permite indicar o sentido do fluxo de dados. Conecta símbolos e blocos existentes.
	
	Processamento – símbolo ou bloco que se utiliza para indicar cálculos a serem efetuados, atribuições de valores ou qualquer manipulação de dados.
	
	Entrada de dados/Operação Manual – lê os dados necessários ao programa forma de linha sem intervenção de dispositivos eletrônicos.
	
	Entrada e saída de dados – símbolo em função de dispositivo qualquer de entrada ou saída de dados.
	
	Saída de dados em vídeo – exibe os dados no monitor.
	
	Saída de dados na impressora – dados serão impressos.
	
	Decisão – possibilita desvios de acordo com a comparação.
	
	Conector - particiona o diagrama. É colocado uma letra ou número dentro do símbolo de conexão.
	
	Conector – indica que o fluxograma continua em outra página.
	
	
Disco magnético – armazenamento de dados.
	
	
Teclado – informações recebidas ou fornecidas por um computador.
	
	Cartão Perfurado.
	 SHAPE \* MERGEFORMAT ���
	Preparação – grupo de operações não incluídas no fluxograma, bem como na elaboração de uma chave que modificará a execução de um programa.
	
	
Fita magnética – armazenamento de dados.
	
	
Tambor magnético – armazenamento de dados.
	
	Disquete – armazenamento de dados.
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 28 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 booleanos� 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� e caracteres especiais: $, @, #,* e ?. Na memória, ocupa 1 byte que corresponde a um caractere. Exemplos: ‘aluno’, ‘951’, ‘@ informática’.
VARIÁVEIS
Os algoritmos recebem dados que serão processados, para isso, armazena os dados na memória.
Os computadores trabalham no sistema numérico do tipo binário� e tudo que há nele (letra, número e caracteres especiais), é formado para este sistema numérico e cada dígito binário ocupa uma parte da memória chamada de bytes� e acessado por um endereço. Todos os caracteres possuem um 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
É um determinado valor fixo que não se modifica ao longo do tempo, durante a execução de um programa. Conforme o seu tipo, a constante é classificada como sendo numérica, lógica e literal. Exemplo: NOTA = 7;
 
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 reservadas�.
Exemplos: A, NOTA1, NOME, ENDERECO, X10.
EXEMPLOS
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
 
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.
EXERCÍCIOS
Crie um algoritmo para sacar dinheiro no banco 24 horas.
Crie um algoritmo para assistir um filme no cinema.
Crie um algoritmo de um assunto escolhido por você.
Diferencie variável de constante e dê um exemplo de cada.
Quais são os tipos de dados e dê um exemplo de cada um.
Como estão classificados os algoritmos?
Quais são as vantagens e desvantagens do pseudocódigo?
Quais são as vantagens e desvantagens da descrição narrativa?
Crie um algoritmo (pseudocódigo, descrição narrativa e fluxograma) que entre com o nome e exiba.
Crie um algoritmo (pseudocódigo, descrição narrativa e fluxograma) que entre com quatro notas bimestrais e exiba a média aritmética.
Faça um teste de mesa de acordo com o fluxograma abaixo:
�
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 ANSI�, 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.
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
DIRETIVAS define e undef
#define 
Informa ao compilador para que toda vez que ele encontrar o nome do macro no programa a ser compilado, ele deve substituí-lo pela seqüência de caracteres fornecida.
Sintaxe: #define nome_macro seqüência_caracteres
Exemplo: 
#include <stdio.h>
#define PI 3.1416
#define VERSAO "2.02"
int main()
{ printf("Programa versão %s ", VERSAO);
 printf("O numero pi vale: %f ", PI);
 getch(); }
#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);
}
Analisando o programa temos:
#include <stdio.h> informa ao compilador que deve incluir o arquivo-cabeçalho informado, onde existem declarações de funções úteis para entrada e saída de dados (std = Standard (padrão) e io =Input/Output (entrada/saída);
/* Exemplo */ linha de comentário;
int main() todos os programas têm essa função que será chamada quando for executado, precisa ter um par parêntese , seu conteúdo é delimitado por chaves {}; int indica que retorna um inteiro.
return(0) indica o número inteiro que está sendo retornado pela função (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.
INSTALAÇÃO E CONFIGURAÇÃO DO DEV-C++
Baixe o arquivo de instalação devcpp-4.9.9.2_setup.exe [9326468 bytes ou 9108 kb ou 8.9M] para uma pasta temporária. Esse arquivo pode ser removido depois da instalação. 
Para começar a instalação, basta clicar (duas vezes) no nome do arquivo usando o "Windows Explorer" e seguir os passos, escolha o idioma Portuguese(Brasil) e selecionar o item “No, I prefer to use Dev C++ without it”.
Escolha o menu FERRAMENTAS ( OPÇÕES DO COMPILADOR e em ADICIONAR OS SEGUINTES COMANDOS QUANDO CHAMAR O COMPILADOR, digite –Wall –ansi-O2.
ESTRUTURA SEQÜENCIAL 
ALGORITMO
	DECLARE
		Bloco de comandos
FIM_ALGORITMO.
DECLARAÇÃO DE VARIÁVEIS EM ALGORITMOS
São declaradas após a palavra DECLARE e os tipos mais usados são o numérico, literal e lógico. Exemplo: X NUMERICO;
COMANDO DE ATRIBUIÇÃO EM ALGORITMOS
Atribui valores ou operações a variáveis (( ). Exemplo: X ( 4.
COMANDO DE ENTRADA EM ALGORITMOS
Recebe dados digitados pelo usuário e armazenados em variáveis (LEIA). Exemplo: LEIA (X).
COMANDO DE SAÍDA EM ALGORITMOS
Exibe dados no monitor ou na impressora (ESCREVA). 
Exemplo: ESCREVA X.
		 ESCREVA “Conteúdo de X = “ , X
REQUERIMENTOS NECESSÁRIOS
Arquivo MSVCRT.DLL (vem com o Windows 95 OSR 2 ou superior).
TIPOS DE DADOS
O C/C++ possui cinco tipos: int, float, double, void e char, com base temos:
	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).
ESTRUTURA SEQÜENCIAL EM C/C++
#include <nome da biblioteca>
void main()
{
	bloco de comandos
}
BIBLIOTECAS são arquivos contendo várias funções que podem ser incorporadas aos programas escritos em C/C++.
#include faz com que o texto contido dentro da biblioteca seja inserido no programa.
Exemplo: iostream.h e conio.h são bibliotecas utilizadas em comandos de entrada e saída.
DECLARAÇÃO DE VARIÁVEIS EM C/C++
São declaradas após a especificação do seu tipo. Os tipos de dados são:
int – números inteiros;
float – números reais;
char – um caractere.
Não existe o tipo de dados booleano (que assume verdadeiro ou falso), pois qualquer valor diferente de 0 como sendo verdadeiro.
Não existe um tipo para guardar uma seqüência de caracteres (string). Quando necessário utilizar um vetor contendo vários elementos do tipo char. Exemplos: float x; char NOME[40]; char SEXO;
STRINGS
String é um vetor de caracteres terminado com um caractere nulo. O nulo é um caractere com valor inteiro igual a zero(código ASCII), podendo ser escrito assim ‘\0’. Sintaxe: char nome_string[tamanho];
Declara um vetor de caracteres(string) com número de posições (tamanho), sempre tendo um caractere nulo reservado.
Para ler uma string fornecida pelo usuário usamos a função gets():
#include <stdio.h>int main()
{ char string[100];
 printf ("Digite uma string: "); 
 gets(string);
 printf("\n\nFoi digitado: %s",string);
 getch(); }
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();
}
OBS.: quando queremos ler um resultado, usamos as funções (encontradas na biblioteca conio.h) getch() e getche(), e ambas retornam o caractere pressionado, porém getche() imprime o caractere na tela antes de retorná-lo e getch() apenas retorna o caractere pressionado sem imprimi-lo na tela. Elas não fazem parte do padrão ANSI e podem ser substituídas pela função scanf() sem as mesmas funcionalidades.
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);
}
COMANDO DE ATRIBUIÇÃO EM C/C++
A atribuição em C/C++ é feita com o sinal de igualdade (=). Os caracteres são apresentados entre apóstrofos (‘) e a cadeira de caracteres entre aspas duplas (“). Exemplo: x = 6; sexo = ‘M’; 
COMANDOS DE ENTRADA EM C/C++
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).
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();
}
COMANDOS DE SAÍDA EM C/C++
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):
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
		 */
OPERADORES E FUNÇÕES PREDEFINIDAS EM C/C++
Possui operadores e funções predefinidas destinadas a cálculos matemáticos e à manipulação de caracteres.
Matemáticos
 
	OPERADOR
	EXEMPLO
	EXPLICAÇÃO
	+
	a + b
	Soma o conteúdo de a com b.
	-
	a – b
	Subtrai o conteúdo de a pelo valor de b.
	*
	a * b
	Multiplica o conteúdo de a pelo valor b.
	/
	a / b
	Divide o valor de a pelo valor de b.
	%
	a % b
	Resto da divisão de a por b. 
Somente usado em valores inteiros.
	++
	a++
	Aumenta o conteúdo de a em um valor.
	--
	a--
	Diminui o conteúdo de a em um valor.
	+=
	a += b
	a = a + b
	-=
	a -= b
	a = a – b
	*=
	a *= b
	a = a * b
	/=
	a /= b
	a = a / b
	%=
	a %= b
	a= a % b
	^
	a ^b
	a exponenciação em b.
Os +=, -=, *=, /= e %= são chamados de operadores matemáticos de atribuição representa de uma maneira sintética uma operação aritmética(+, -, /, *, %) e posteriormente uma de atribuição (=).
Relacionais
 
	OPERADOR
	EXEMPLO
	EXPLICAÇÃO
	==
	a == b
	O conteúdo de a é igual ao conteúdo de b.
	!=
	a != b
	O conteúdo de a é diferente do conteúdo de b.
	<=
	a <= b
	O conteúdo de a é menor ou igual ao conteúdo de b.
	>=
	a >= b
	O conteúdo de a é maior ou igual ao conteúdo de b.
	<
	a < b
	O conteúdo de a é menor que o conteúdo de b.
	>
	a > b
	O conteúdo de a é maior que o conteúdo de b.
Matemáticas
 
	FUNÇÃO
	SINTAXE
	EXPLICAÇÃO
	ceil
	ceil(a)
ceil(3.2) fica 4
	Arredonda um número real para cima.
	cos
	cos(a)
	Calcula o cosseno de a (radianos).
	exp
	exp(a)
	Obtém o logaritmo natural elevado a potência de a.
	fabs
	fabs(a)
	Valor absoluto de a.
	floor
	floor(a)
floor(3.2) é 3
	Arredonda um número real para baixo.
	log
	log(a)
	Logaritmo natural de a.
	log10
	log10(a)
	Logaritmo de base 10 de a.
	modf
	modf(a, b)
	Decompõe um determinado número real em duas partes: a (parte fracionária) e b (parte inteira).
	pow
	pow(a, b)
	Potência de a elevado a b.
	sin
	sen(a)
	Calcula seno de a (radianos).
	sqrt
	sqrt(a)
	Calcula a raiz quadrada de a.
	tan
	tan(a)
	Calcula a tangente de a (radianos).
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.
Operadores:	AND	(E)			(	&&
			OR	(OU)			(	||
			NOT	(NÃO)			(	!
			XOR	(OU EXCLUSIVO)	(	^
 TABELA DA VERDADE
 
	A
	B
	A e B
	A ou B
	não A
	A xou B
	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
Faça um algoritmo que calcule em graus Celsius e apresentá-la convertida em graus Fahrenheit. A fórmula de conversão é F ( (9 * C + 160)/5 (F é em Fahrenheit e C em Celsius).
ALGORITMO
	DECLARE C, F : real
	LEIA C
	F ( ( 9 * C + 160)/ 5
	ESCREVA F
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
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++	_________________________________________
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	;			______________________________________
	A = A++ + ++A;		______________________________________A = A;				______________________________________
	A = (A > 3);			______________________________________
A = A++ + A++ + A++;	______________________________________
A = ++A + ++A + ++A;	______________________________________
}
O que faz o seguinte programa?
#include <stdio.h>
int main()
{ int x;
	scanf(“%d”, &x);
	printf(“%d”, x);
	return(0); }
Escreva um programa que leia um caractere digitado pelo usuário, imprima este caractere e o código ASCII correspondente.
Faça um programa (pseudocódigo e C/C++) que receba quatro números inteiros, calcule e mostra a soma desses números.
Faça um programa (pseudocódigo e C/C++) receba três notas, calcule e mostre a média aritmética entre elas.
Faça um programa (pseudocódigo e C/C++) que receba três notas e seus respectivos pesos, calcule e exiba a média ponderada.
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 com um aumento de 25%.
Faça um programa (pseudocódigo e C/C++) que receba o salário de um funcionário e o percentual de aumento, calcule e exiba o valor do aumento e o novo salário.
Faça um programa (pseudocódigo e C/C++) que receba o salário-base de um funcionário, calcule e mostre o salário a receber, sabendo-se que esse funcionário tem gratificação de 5% sobre o salário-base e paga imposto de 7% sobre o salário-base.
Faça um programa (pseudocódigo e C/C++) que receba o salário-base de um funcionário, calcule e mostre o seu salário a receber, sabendo-se que esse funcionário tem gratificação de R$ 50,00 e paga imposto de 10% sobre o salário-base.
Faça um programa (pseudocódigo e C/C++) que receba o valor de um depósito e o valor da taxa de juros e calcule e exiba o valor do rendimento e o valor total depois do rendimento.
Faça um programa que calcule e exiba a área de um triângulo (AREA = (BASE * ALTURA) / 2.
Faça um programa que calcule e mostre a área de um círculo. (AREA = ∏R2).
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.
Faça um programa (pseudocódigo e C/C++) que receba dois números maiores que zero, calcule e mostre um elevado ao outro.
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) polegadas�;		
b) jardas�;
c) milhas�.
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.
Faça um programa (pseudocódigo e C/C++) que receba o preço de fábrica de 
um veículo�, 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;
c)	preço final do veículo.
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.
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.
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.
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.
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();
}
Interpretando: Enquanto n não for igual a 0, a função fat chama a si mesma cada vez com um valor menor e, n=0 é o critério de parada da função.
�
ESTRUTURA CONDICIONAL (Controle de Fluxo)
ALGORITMOS
SE condição
ENTÃO comando
Se a condição for verdadeira o comando é executado. Essa condição será uma comparação que possui dois valores: verdadeiro ou falso.
SE condição
ENTÃO INICIO
			Comando1
			Comando2
			Comando3
		FIM
ESTRUTURA CONDICIONAL COMPOSTA
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;
 }
Se a condição for verdadeira o comando será executado.
Quando há mais de um comando é obrigatório utilizar as chaves ({}).
Ex.: Entre com um número e verifique se é igual, menor ou maior que 10.
#include <stdio.h>
int main()
{
 int num;
 printf("Digite um numero: ");
 scanf("%d",&num);
 if (num>10) printf("\n\nNumero maior que 10");
 if (num==10)
 {
 printf("\n\Acertou!\n");
 printf("Numero igual a 10."); 
 }
 if (num<10) printf("\n\nNumero menor que 10");
 getch();
}
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();
}
ESTRUTURA CASE - SWITCH
switch (variável)
	 {
	 case valor1 : lista de comandos;
		 break;
	 case valor2: lista de comandos;
		 break;
	 ...
 default: lista de comandos;
 }
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.
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
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()
{
int media, bim1, bim2,bim3, bim4;
printf("Entre com as 4 notas bimestrais: ");
scanf("%d",&bim1);
scanf("%d",&bim2);
scanf("%d",&bim3);
scanf("%d",&bim4);
media = (bim1 + bim2 + bim3 + bim4)/4;
if (media >= 5)
 printf("Aluno aprovado com media %d", media);
else
 printf("Aluno reprovado com media %d", media);
getch();
}
�
EXERCÍCIOS
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
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
Faça um programa (pseudocódigo e C/C++) que receba dois números e mostre o maior.
Faça um programa (pseudocódigo e C/C++) que receba três números e mostre em ordem crescente.
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.
Faça um programa (pseudocódigo e C/C++) que receba um número inteiro e verifique se esse número é par ou ímpar.
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.
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.
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.
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.
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.
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
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
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
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:
- 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.
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
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.
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
ESTRUTURA DE REPETIÇÃO
ALGORITMOS
NÚMERO DEFINIDO DE REPETIÇÕES (ESTRUTURA PARA)
Utilizada quando sabemos o número de vezes em que um trecho do algoritmo deve ser repetido (incrementando de um em um automaticamente).
PARA I ( valor inicial ATÉ valor final FAÇA
 INICIO
	comando1
	comando2
	comando3
 FIM
Exemplo: PARA I ( 1 ATÉ 10 FAÇA
			comando1	// será executado 10 vezes.
NÚMERO INDEFINIDO DE REPETIÇÕES E TESTE DE INÍCIO (ESTRUTURA ENQUANTO)
Utilizada quando não se sabe o número de vezes em que um trecho do algoritmo deve ser repetido, embora também possa ser utilizada quando se sabe esse número. Há situações que o teste condicional no início da estrutura repetição resulta em valor falso na primeiracomparação sendo assim os comandos não são executados.
ENQUANTO condição FAÇA
	INICIO
		comando1
		comando2
 FIM
Exemplo: 	x ( 1
	y ( 5
	ENQUANTO x < y FAÇA
		INÍCIO
			x ( x + 2		
				y ( y + 1
			FIM
Simulação
X		Y
1		5	Iniciais
3		6
5		7
7		8
9		9
NÚMERO INDEFINIDO DE REPETIÇÕES E TESTE NO FINAL (ESTRUTURA REPITA)
Utilizada quando não se sabe o número de vezes em que um trecho do algoritmo deve ser repetido, embora também possa ser utilizada quando se sabe esse número.
A diferença entre ENQUANTO e REPITA é que na última os comandos serão repetidos pelo menos uma vez, já que a condição se encontra no final.
REPITA
	Comandos
ATÉ condição
Os comandos são repetidos enquanto a condição for verdadeira.
Exemplo:	x ( 1
	y ( 5
	REPITA
		x ( x + 2
		y ( y + 1
	ATÉ x >= y
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;
É atribuído um valor inicial à variável i que controla o número de repetições. Depois uma expressão relacional que quando for falso, finaliza a repetição. Por último, altera o valor da variável i (incrementando ou decrementando).
Exemplo1: for (a=1;a<=20;a++)
 printf("Digite um número %d", a);
Exemplo prático: Lê um string e conta quantos caracteres desta string:
#include <stdio.h>
int main()
{
 char string[100]; /* string ate 99 caracteres */
 int i, cont;
 printf("\nDigite uma frase: ");
 gets(string); /* Le a string */
 printf("\n\nFrase digitada: \n%s", string);
 cont = 0;
 for (i = 0; string[i] |= '\0'; i=i+1)
 {
 if (string[i] == 'c') /* se for a letra 'c' */
 cont = cont + 1; /* incrementa contador */
 }
 printf("\nNumero de caracteres c= %d", cont);
 getch();
}
Exercício: Crie um programa que imprima o alfabeto de A até Z.
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;
		 comando2;
		……………..
		}
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;
do
 soma += i--;
 while (i);
 printf("\nSoma encontrada foi %ld", soma);
 getch();
}
EXEMPLOS
Apresentar o total da soma dos cem primeiros números inteiros (1+2+3+4+5+6+7+…+97+98+100).
ALGORITMO
DECLARE soma, contador : inteiro
soma ( 0
PARA contador de 1 até 100 passo 1 FAÇA
		soma ( soma + contador
	 FIM_PARA
FIM_ALGORITMO
#include <stdio.h>
int main(void)
{
 int soma, contador;
 soma = 0;
 for (contador=1;contador<=100;contador++)
 {
 soma = soma + contador;
 } 
 printf("%d", soma);
 getch();
}
EXERCÍCIOS
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.
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.
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).
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.
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.
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. 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:
CATEGORIA	TURNO	VALOR DA HORA TRABALHADA
G			N		18% do salário mínimo
G			M ou V		15% do salário mínimo
O			N		13% do salário mínimo
O			M ou V		10% do salário mínimo
Adote o valor de R$ 350,00 para o salário mínimo.
c) calcule o salário mínimo dos funcionários com base no valor da hora trabalhada e no número de horas trabalhadas.
d) calcule o valor do auxílio-alimentação recebido por funcionário de acordo com o seu salário inicial, conforme a tabela a seguir:
 SALÁRIO INICIAL			AUXILIO-ALIMENTAÇÃO
Até R$ 300,00			20% do salário inicial
Entre R$ 300,00 e R$ 600,00	15% do salário inicial
Acima de R$ 600,00		 5% do salário inicial
uma empresa contratou 15 funcionários temporários. De acordo com o valor das vendas mensais, os funcionários adquirem pontos que determinarão seus salários ao final de cada mês. Sabemos que esses funcionários trabalharão nos meses de novembro a janeiro do ano subseqüente. Faça um programa que:
a) leia as pontuações nos três meses de cada funcionário;
b) calcule e exiba a pontuação geral de cada funcionário nos três meses;
c) calcule e exiba a média das pontuações de cada funcionário nos três meses;
d) determine e exiba a maior pontuação atingida entre todos os funcionários nos três meses.
Faça um programa que monte os oito primeiros termos da seqüência de Fibonacci: 0-1-1-2-3-5-8-13-21-34-55-....
Faça um programa que receba duas notas de seis alunos, calcule e exiba:
a) média aritmética das duas notas de cada aluno;
b) mensagem de acordo com a tabela:
MÉDIA ARITMÉTICA		MENSAGEM
Até 3,0				Reprovado
Entre 3,0 e 7,0			Exame
Acima de 7,0			Aprovado
Faça um programa que calcule a soma dos primeiros 50 números pares. Esse programa não recebe valor do teclado. Os primeiros números são: 2, 4, 6,...
Um campeonato de futebol existem cinco times e cada time possui onze jogadores. Faça um programa que receba a idade, o peso e a altura de cada um dosjogadores, calcule e exiba:
- quantidade de jogadores com idade inferior a 18 anos;
- média das idades dos jogadores de cada time;
- média das alturas de todos os jogadores do campeonato;
- percentagem de jogadores com mais de 80 quilos entre todos os jogadores do campeonato.
Faça um programa que receba dois números, calcule e exiba:
a) soma dos números pares desse intervalo de números, incluindo os números digitados;
b) multiplicação dos números ímpares desse intervalo de números, incluindo os números digitados.
Faça um programa que receba um número inteiro maior que 1 e verifique se o número fornecido é primo ou não. Exibir mensagem de número primo ou de número não primo. OBS. Número primo quando é divisível apenas pelo próprio número e por ele mesmo.
Em uma fábrica trabalham homens e mulheres divididos em três classes:
a) trabalhadores que fazem até 30 peças por mês – classe 1;
b) trabalhadores que fazem de 31 a 35 peças por mês – classe 2;
c) trabalhadores que fazem mais de 35 peças por mês – classe 3.
A classe 1 recebe salário mínimo. A classe 2 recebe salário mínimo mais 3% do salário mínimo por peça, acima das 30 peças iniciais. A classe 3 recebe salário mínimo mais 5% do salário mínimo por peça, acima das 30 peças iniciais.
Faça um programa que receba o número do operário, número de peças fabricadas no mês, o sexo do operário e que também calcule e mostre:
- o número do operário e seu salário;
- total da folha de pagamento da fábrica;
- o número total de peças fabricadas no mês;
- a média de peças fabricadas pelos homens;
- a média de peças fabricadas pelas mulheres;
- o número do operário ou operária de maior salário. 
A fábrica tem 15 operários.
Foi feita uma pesquisa para determinar o índice de mortalidade infantil em um certo período. Faça um programa que:
a) leia o número de crianças nascidas no período;
b) o sexo (M ou F) e o tempo de vida para cada criança nascida.
Calcule e exiba:
a) percentagem de crianças do sexo feminino mortas no período;
b) percentagem de crianças do sexo masculino mortas no período;
c) percentagem de crianças que viveram 24 meses ou menos no período.
Faça um programa que receba o valor de uma dívida e exiba uma tabela com os seguintes dados: valor da dívida, valor dos juros, quantidade de parcelas e o valor da parcela. Os juros e a quantidade de parcelas seguem-se abaixo:
QUANTIDADE DE PARCELAS	% JUROS SOBRE O VALOR INICIAL DA DÍVIDA
1	0
3	10
6	15
9	20
12	25
Exemplos de saída do programa:
VALOR DA DÍVIDA	JUROS	QTDE PARCELAS	VALOR DA PARCELA
R$ 1000,00	0	1	R$ 1000.00
R$ 1100,00	100	3	R$ 366,67
R$ 1150,00	150	6	R$ 191,67
Faça um programa que determine e exiba os cincos primeiros múltiplos de 3, considerando números maiores que 0.
Faça um programa para calcular a área de um triângulo. Esse programa não pode permitir a entrada de dados inválidos, ou seja, medidas menores ou iguais a 0.
Faça um programa que receba o salário de um funcionário chamado Porsidonio. Sabe-se que o funcionário Godofredo tem um salário equivalente a um terço do salário de Porsidonio e ele aplicará seu salário integralmente na caderneta de poupança, que está rendendo 2% ao mês e Godofredo aplicará seu salário integralmente no fundo de renda fixa, que está rendendo 5% ao mês. Calcule e exiba a quantidade de meses necessários para que o valor pertencente a João iguale ou ultrapasse o valor pertencente a Carlos.
VETORES
ALGORITMOS
Vetor ou array é uma variável composta homogênea unidimensional formada por uma seqüência de variáveis, todas do mesmo tipo, mesmo identificados (nome) e alocadas seqüencialmente na memória. Uma vez que as variáveis têm o mesmo nome, o que as distingue é um índice que referencia sua localização dentro da estrutura.
DECLARAÇÃO DO VETOR
Declare nome [tamanho] tipo
Exemplo: DECLARE x[5] NUMÉRICO
	X
	
	
	
	
	
		 1		 2 3 4 5
 x[1]
ATRIBUINDO VALORES AO VETOR
X[1] ( 50
X[4] ( 9
	X
	50
	
	
	9
	
		 1		 2 3 4 5
CARREGANDO UM VETOR
PARA i ( 1 ATÉ 5 FAÇA
INÍCIO
	ESCREVA “Digite o ”, i, “º número”
 LEIA X[i]
FIM
C/C++
DECLARAÇÃO DO VETOR
Os vetores são identificados pela existência de colchetes logo após o nome da variável no momento da declaração. Dentro dos colchetes deve-se colocar o número de posições do vetor.
Exemplos: 
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.
ATRIBUINDO VALORES AO VETOR
Exemplos:
vet[0] = 1; 		/*Atribui valor 1 ao primeiro elemento do vetor.*/
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: Receber cinco notas de aluno, calcular a média e exibir o resultado:
#include <stdio.h>
#include <conio.h>
int main(void)
{
 int i;
 float media;
 float nota[5];
 for (i=0; i<5; i++)
 {
 printf("\nEntre com a %d nota: ", i+1); 
 scanf("%f", &nota[i]);
}
 media = (nota[0]+nota[1]+nota[2]+nota[3]+nota[4])/5;
 printf ("\nMedia das notas: %3.1f", media);
 getch();
}
EXEMPLO
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
 i : inteiro
PARA i de 1 até 20 passo 1 FAÇA
 LEIA nome[i]
	 FIM_PARA
PARA i de 1 até 20 passo 1 FAÇA
 	 ESCREVA nome[i]
	 FIM_PARA
FIM_ALGORITMO.
#include <stdio.h>
main()
{
 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]);
 for (i=0;i<=20;i++)
 printf("\Nome: %s", nome[i]);
 getch(); }
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",&nota[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();
}
3) Exemplo de ordenação de valores (ascendente) utilizando o define.
#include <stdio.h>
#define tamanho 10
main()
{
 int a[tamanho] = {2, 4, 5, 6, 7, 89, 10, 12, 11,50};
 int i, pass, hold;
 
 printf ("Itens na ordem original\n");
 for (i=0;i<=tamanho-1;i++)
 printf("%4d",a[i]);
 
 for (pass=1;pass<=tamanho-1;pass++) /* passadas */
 for (i=0;i<=tamanho-2;i++) /*uma passada*/
 if (a[i] > a[i+1]) /* comparação*/
 {
 hold = a[i]; 
 a[i] = a[i +1];
 a[i + 1]= hold;
 }
 printf("\nItens de dados na ordem ascendente\n");
 for (i=0;i<=tamanho-1;i++)
 printf("%4d",a[i]);
 printf("\n");
 getch();
}
EXERCÍCIOS
Faça um programa que carregue um vetor de nove elementos numéricos inteiros, calcule e exiba os números primos e suas respectivas posições.
Faça um programaque receba a quantidade de peças vendidas por vendedor e armazene essas quantidades em um vetor. Recebe também o preço da peça vendida de cada vendedor e armazene esses preços em outro vetor. Existem apenas 10 vendedores e cada vendedor pode vender apenas um tipo de peça, isto é, para cada vendedor existe apenas um preço. Calcule e exiba a quantidade total de peças vendidas por todos os vendedores e para cada vendedor calcule e exiba o valor total da venda (quantidade de peças * preço de peça).
Faça um programa que carregue dois vetores de dez elementos numéricos cada um e exiba um vetor resultante da intercalação desses dois vetores.
	Vetor1
	3
	5
	4
	2
	2
	5
	3
	2
	5
	9
	
	1
	2
	3
	4
	5
	6
	7
	8
	9
	10
	Vetor2
	3
	5
	4
	2
	2
	5
	3
	2
	5
	9
	
	1
	2
	3
	4
	5
	6
	7
	8
	9
	10
	
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.
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
Faça um programa que no momento de carregar um vetor com oito números inteiros já o carregue de maneira ordenada crescente.
Faça um programa que efetue reserva de passagens aéreas de uma certa companhia. O programa deverá ler informações sobre os vôos (número, origem e destino) juntamente com o número de lugares disponíveis para 12 aviões (um vetor para cada um desses dados). O programa deverá apresentar um menu com as seguintes opções:
Consultar;
Efetuar reserva;
Sair
Quando a opção escolhida for Consultar deverá ser disponibilizado mais um menu com as seguintes opções:
Número de vôo;
Origem;
Destino.
Quando a opção escolhida for EFETUAR RESERVA deverá ser perguntado o número do vôo no qual a pessoa deseja viajar. O programa deverá dar as seguintes respostas:
Reserva confirmada – caso exista o vôo e lugar disponível dando baixa nos lugares disponíveis;
Vôo lotado – caso não exista lugar disponível nesse vôo;
Vôo inexistente – caso o código do vôo não exista.
A opção Sair é a única que permite sair do programa.
Faça um programa para corrigir provas de múltipla escolha. Cada prova tem dez questões e cada questão vale 1 ponto. O primeiro conjunto de dados a ser lido é o gabarito da prova. Os outros dados serão os números dos alunos e suas respectivas respostas. Existem 15 matriculados. Calcule e exiba:
Para cada aluno seu número e sua nota;
A percentagem de aprovação, sabendo-se que a nota mínima é 6,0.
Faça um programa que receba a temperatura média de cada mês do ano e armazene-as em um vetor. Calcule e exiba a maior e a menor temperatura do ano em que mês elas ocorreram (exiba o mês por extenso: 1 – Janeiro, 2 – Fevereiro, ...).
Faça um programa que carregue um vetor com os modelos de cinco carros (exemplos de modelos: FUSCA, GOL, VECTRA etc). Carregue um outro vetor com o consumo desses carros, isto é, quantos quilômetros cada um desses carros faz com um litro de combustível. Calcule e exiba:
Modelo do carro mais econômico;
Quantos litros de combustível cada um dos carros cadastrados consome para percorrer uma distância de 1000 quilômetros.
Faça um programa que carregue um vetor com dez números inteiros. Calcule e exiba os números superiores a 50 e suas respectivas posições. Exiba a mensagem se não existir nenhum número nessa condição.
Faça um programa que receba seis números inteiros, calcule e exiba a soma dos números pares e a quantidade dos números ímpares, exiba o relatório a seguir:
	Vetor
	2
	4
	5
	6
	3
	7
	
	1
	2
	3
	4
	5
	6
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
�
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
DECLARE nome[linha,coluna] tipo
Onde nome é o nome da variável, linha é a quantidade de linhas que vão compor a matriz, coluna a quantidade de colunas que vão compor a matriz e tipo é o nome do tipo de dados.
EXEMPLO DE MATRIZ
DECLARE a[3, 5] NUMÉRICO
	
	
	1
	2
	3
	4
	5
	
	1
	
	
	
	
	
	a
	2
	
	
	
	
	
	
	3
	
	
	
	
	
	
	
	a[1,1]
	
	
	a[3,4]
	
ATRIBUINDO VALORES À MATRIZ
Exemplos: a[1,1] ( 45	a[2,1] ( 13	a[2,5] ( 0	a[3,3/ ( -4
	
	
	1
	2
	3
	4
	5
	
	1
	
	45
	
	
	
	a
	2
	13
	
	
	
	0
	
	3
	
	
	-4
	
	
CARREGANDO UMA MATRIZ
PARA i ( 1 ATÉ 3 FAÇA
INÍCIO
	PARA j ( 1 ATÉ 5 FAÇA
	INICIO
		ESCREVA “Digite o número da linha ”, i, “ e coluna ”, j
		LEIA x[i,j]
	FIM
FIM
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
EXIBINDO OS ELEMENTOS DE UMA MATRIZ
PARA i ( 1 ATÉ 3 FAÇA
 INCIO
		PARA j ( 1 ATÉ 5 FAÇA
		INICIO
			ESCREVA x[i,j]
		FIM
	FIM
C/C++
Podemos declarar matrizes unidimensionais (vetores), bidimensionais e multidimensionais. O padrão ANSI prevê, no mínimo, 12 dimensões, entretanto, o limite de dimensões fica por conta da quantidade de recursos disponível ao compilador. Apesar disso, as mais utilizadas são de duas dimensões.
DECLARAÇÃO DE MATRIZ
Sintaxe: tipo_dados nome_variável [dimensao1] [dimensao2] [...]
Exemplo: float x[2] [6];
Como os vetores, os índices iniciam em 0. temos então, duas linhas (0 e 1) e seis colunas (0 a 5):
	
	
	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
	
Carregando uma matriz
Para ler dados do teclado e atribuir a uma matriz já declarada como int mat[7] [3]:
for (i=0; i<7; i++)
{
	for (j=0; j<3; j++)
	 cin >> mat[i] [j]
}
Interpretando: a matriz possui 7 linhas, o for externo deve variar de 0 a 6 e o for interno deve variar de 0 a 2.
EXIBINDO ELEMENTOS DA MATRIZ
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];
}
Exemplo: Criar uma matriz de caracteres
#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
 SE (i <= 20) ENTÃO
 c[i] ( a[i]
 SENÃOc[i] ( b[i - 20]
 FIM_SE
FIM_PARA
PARA i (1 ATÉ 50 FAÇA
 ESCREVA c[i]
FIM_PARA	
FIM_ALGORITMO
#include <stdio.h>
int main()
{
 int i;
 double a[20], b[30], c[50];
 for (i=0;i<20;i++)
 {
 scanf("%lf",&a[i]); }
for (i=0;i<30;i++)
{ scanf("%lf",&b[i]); }
for (i=0;i<50;i++)
{
 if (i <=20)
 c[i] = a[i];
 else
 c[i] = b[i-20]; 
}
 for (i=0;i<50;i++)
 { printf("%lf",c[i]); }
 getch(); 
}
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();
}
EXERCÍCIOS
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.
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.
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.
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.
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.
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.
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
Faça um programa que carregue uma matriz 7 x 7 de números inteiros e crie dois vetores de sete posições cada um e que contenham, respectivamente, o maior elemento de cada uma das linhas e o menor elemento de cada uma das colunas. Escreva a matriz A e os dois vetores.
faça um programa que receba as vendas semanais (de um mês) de cinco vendedores de uma loja e armazene essas vendas em uma matriz. Calcule e exiba:
- total de vendas por mês de cada vendedor;
- total de vendas de cada semana (todos os vendedores juntos);
- total de vendas do mês.
Faça um programa que carregue:
- um vetor com cinco números inteiros;
 - um outro vetor com dez números inteiros;
 - uma matriz 4 x 3, também com números inteiros.
Calcule e mostre:
- maior elemento do primeiro vetor multiplicado pelo menor elemento do se vetor. O resultado dessa multiplicação adicionado aos elementos digitados na matriz dará origem a uma segunda matriz (resultante);
- soma dos elementos pares de cada linha da matriz resultante;
- a quantidade de elementos entre l e 5 em cada coluna da matriz resultante.
MANIPULANDO CARACTERES EM C/C++
Em C/C++ não existe um tipo de dados similar à string da linguagem PASCAL. Em vez disso, para armazenar uma cadeia de caracteres utilize vetores (matrizes unidimensionais), onde cada posição representa um caractere.
Os compiladores em C/CC++ identificam o fim de uma cadeira de caracteres por meio do caractere nulo, ou seja ‘\0’, deve-se declarar sempre o vetor com uma posição a mais para armazenar o caracteres nulo. Exemplo: ALGORITMO, devemos declarar um vetor do tipo char com 9 posições: char palavra[9]
	Índice
	...
	0
	1
	2
	3
	4
	5
	6
	7
	8
	...
	Valor
	...
	A
	L
	G
	O
	R
	I
	T
	M
	O
	...
	Posição
memória
	...
	863
	864
	865
	866
	867
	868
	869
	870
	871
	...
FUNÇÃO strcpy()
Para armazenar uma cadeira de caracteres em uma variável, usamos uma função strcpy (variável, valor), que faz parte da biblioteca string.h.
Copia a string origem para a string destino.
Exemplo: strcpy(disciplina, “Algoritmos”);
Sintaxe: strcpy(string_destino, string_origem);
Exemplo prático:
#include <stdio.h>
#include <string.h>
int main()
{
 char str1[100], str2[100], str3[100];
 printf("Entre com uma string: ");
 gets(str1);
 strcpy(str2,str1); /* copia str1 em str2 */
 strcpy(str3,"Você digitou a string "); /* copia o texto para str3*/
 printf("\n\n%s%s",str3,str2);
 getch();
}
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>
#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
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.
Faça um programa que receba uma frase, calcule e exiba a quantidade de palavras na frase digitada.
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.
Faça um programa que receba o nome completo de uma pessoa e reescreva conforme o exemplo: SIMONE MARIA VIANA ( VIANA, S. M.
Faça um programa que receba duas frases e gere uma terceira que representa a combinação das palavras das duas frases lidas.
Faça um programa que receba uma frase e coloque as palavras em ordem crescente.
REGISTROS (Estruturas)
São estruturas que podem agregas diferentes informações. Assim, são feitas de diferentes

Outros materiais