73
Algoritmos Algoritmos Simone Maria Viana [email protected] 2006

apostila de Algoritimo

Embed Size (px)

DESCRIPTION

linguagem c

Citation preview

Page 1: apostila de Algoritimo

AlgoritmosAlgoritmos

Simone Maria [email protected]

2006

Page 2: apostila de Algoritimo

Algoritmos pág. 2

ÍNDICEÍNDICE

INTRODUÇÃO.................................................................................................................6LÓGICA........................................................................................................................6COMPUTADOR...........................................................................................................6PROGRAMA................................................................................................................7LINGUAGENS DE PROGRAMAÇÃO.......................................................................7TÉCNICAS ATUAIS DE PROGRAMAÇÃO.............................................................7AÇÃO............................................................................................................................7ESTADO.......................................................................................................................7PROCESSO OU EVENTO...........................................................................................7PADRÕES DE COMPORTAMENTO.........................................................................7EXERCÍCIO..................................................................................................................7

CONCEITOS BÁSICOS...................................................................................................8DEFINIÇÕES................................................................................................................8COMO FAZER UM ALGORITMO.............................................................................8TESTE DE MESA.........................................................................................................8CLASSIFICAÇÃO DOS ALGORITMOS....................................................................8

DESCRIÇÃO NARRATIVA....................................................................................8FLUXOGRAMA.......................................................................................................9PSEUDOCÓDIGO ou PORTUGOL.........................................................................9SIMBOLOGIA BÁSICA PARA FLUXOGRAMA.................................................9TIPOS DE DADOS.................................................................................................10VARIÁVEIS............................................................................................................10CONSTANTES.......................................................................................................11IDENTIFICADORES..............................................................................................11EXEMPLOS............................................................................................................11

EXERCÍCIOS..............................................................................................................12LINGUAGEM C/C++.....................................................................................................13

BIBLIOTECAS.......................................................................................................13ETAPAS DA IMPLEMENTAÇÃO............................................................................14

include.....................................................................................................................14DIRETIVAS define e undef.....................................................................................14EXEMPLO..............................................................................................................15

Dev-C++......................................................................................................................15LISTA DE RECURSOS..........................................................................................15INSTALAÇÃO E CONFIGURAÇÃO DO DEV-C++...........................................16

ESTRUTURA 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...........................................................16

REQUERIMENTOS NECESSÁRIOS...................................................................16TIPOS DE DADOS.....................................................................................................16ESTRUTURA SEQÜENCIAL EM C/C++................................................................17DECLARAÇÃO DE VARIÁVEIS EM C/C++..........................................................17

STRINGS................................................................................................................17getche()....................................................................................................................18Exemplos.................................................................................................................18

COMANDO DE ATRIBUIÇÃO EM C/C++.............................................................18COMANDOS DE ENTRADA EM C/C++.................................................................18

cin............................................................................................................................18

Page 3: apostila de Algoritimo

Algoritmos pág. 3

gets...........................................................................................................................19scanf.........................................................................................................................19

COMANDOS DE SAÍDA EM C/C++........................................................................19cout..........................................................................................................................19printf........................................................................................................................19puts..........................................................................................................................20

COMENTÁRIOS EM C/C++.....................................................................................20OPERADORES E FUNÇÕES PREDEFINIDAS EM C/C++....................................20

Matemáticos............................................................................................................20Relacionais..............................................................................................................20Matemáticas.............................................................................................................21Lógicos....................................................................................................................21

EXEMPLO..................................................................................................................21EXERCÍCIOS..............................................................................................................22

RECURSIVIDADE.........................................................................................................24ESTRUTURA CONDICIONAL (Controle de Fluxo)....................................................25

ALGORITMOS...........................................................................................................25ESTRUTURA CONDICIONAL COMPOSTA......................................................25

C/C++..........................................................................................................................25SIMPLES - IF..........................................................................................................25COMPOSTA – IF/ELSE.........................................................................................26ESTRUTURA CASE - SWITCH............................................................................26OPERADORES LÓGICOS.....................................................................................27

EXEMPLO..................................................................................................................27EXERCÍCIOS..............................................................................................................28

ESTRUTURA DE REPETIÇÃO....................................................................................31ALGORITMOS...........................................................................................................31

NÚ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)........................................................................................31

C/C++..........................................................................................................................32for............................................................................................................................32break........................................................................................................................33continue...................................................................................................................33while........................................................................................................................33do-while...................................................................................................................33

EXEMPLOS................................................................................................................34EXERCÍCIOS..............................................................................................................34

VETORES.......................................................................................................................37ALGORITMOS...........................................................................................................37

DECLARAÇÃO DO VETOR.................................................................................37ATRIBUINDO VALORES AO VETOR................................................................37CARREGANDO UM VETOR................................................................................37

C/C++..........................................................................................................................37DECLARAÇÃO DO VETOR.................................................................................37ATRIBUINDO VALORES AO VETOR................................................................37CARREGANDO UM VETOR................................................................................38IMPRIMINDO UM VETOR...................................................................................38

EXEMPLO..................................................................................................................38EXERCÍCIOS..............................................................................................................40

MATRIZ..........................................................................................................................42

Page 4: apostila de Algoritimo

Algoritmos pág. 4

DEFINIÇÃO................................................................................................................42DECLARAÇÃO DE MATRIZ...............................................................................42EXEMPLO DE MATRIZ........................................................................................42ATRIBUINDO VALORES À MATRIZ.................................................................42CARREGANDO UMA MATRIZ...........................................................................42EXIBINDO OS ELEMENTOS DE UMA MATRIZ..............................................43

C/C++..........................................................................................................................43DECLARAÇÃO DE MATRIZ...............................................................................43ATRIBUINDO VALORES.....................................................................................43EXIBINDO ELEMENTOS DA MATRIZ..............................................................44

EXEMPLOS................................................................................................................44EXERCÍCIOS..............................................................................................................46

MANIPULANDO CARACTERES EM C/C++.............................................................47FUNÇÃO strcpy()...................................................................................................47FUNÇÃO strcat()....................................................................................................47FUNÇÃO strlen()....................................................................................................47FUNÇÃO strchr()....................................................................................................48FUNÇÃO strstr().....................................................................................................48FUNÇÃO strcmp()..................................................................................................48EXERCÍCIO............................................................................................................48

REGISTROS (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............................................................49EXEMPLOS................................................................................................................50EXERCÍCIOS..............................................................................................................50

ARQUIVOS....................................................................................................................52DECLARAÇÃO EM C/C++.......................................................................................52COMANDOS DE ARQUIVOS EM C/C++...............................................................52

fopen().....................................................................................................................52fclose().....................................................................................................................53ferror().....................................................................................................................53fputc()......................................................................................................................53fgetc()......................................................................................................................53fputs()......................................................................................................................53fgets().......................................................................................................................53fwrite().....................................................................................................................53fread()......................................................................................................................53fseek()......................................................................................................................53feof()........................................................................................................................54rewind()...................................................................................................................54remove()..................................................................................................................54fflush().....................................................................................................................54exit()........................................................................................................................54

LENDO E ESCREVENDO CARACTER EM ARQUIVOS EM C/C++...................54putc..........................................................................................................................54getc..........................................................................................................................55feof...........................................................................................................................55

FLUXOS PADRÃO....................................................................................................55fprintf.......................................................................................................................55fscanf.......................................................................................................................55

EXEMPLOS................................................................................................................56

Page 5: apostila de Algoritimo

Algoritmos pág. 5

EXERCÍCIOS..............................................................................................................57SUB-ROTINAS...............................................................................................................58

ALGORITMO:............................................................................................................58SUB-ROTINAS (FUNÇÕES) EM C/C++......................................................................58

COMANDO RETURN...........................................................................................58EXERCÍCIOS..........................................................................................................59

Page 6: apostila de Algoritimo

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

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

Page 7: apostila de Algoritimo

Algoritmos pág. 7

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 EVENTOUma 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 COMPORTAMENTOVamos 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

Page 8: apostila de Algoritimo

Algoritmos pág. 8

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 entrada1, o processamento2 e os dados de saída3, 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 4Utilize 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.

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.

Page 9: apostila de Algoritimo

Algoritmos pág. 9

DIAGRAMA DE BLOCOSTambé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.

FLUXOGRAMAUsada 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 PORTUGOLApó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çãoTerminal – 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

Page 10: apostila de Algoritimo

Algoritmos pág. 10

um computador.

Cartão Perfurado.

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 DADOSTodos os dados possuem um tipo que pode ser classificado como:

NUMÉRICODivididos 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ÓGICOTambém conhecidos como booleanos4 e assume verdadeiro ou falso, ocupando somente 1 byte, pois possui somente duas possibilidades.

LITERAL ou CARACTEREFormados por um único caractere ou por vários. Podem ser letras, números5 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ário6 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 bytes7 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.

4 Álgebra de Boole5 Não poderão ser utilizados para cálculos6 Formado pelos dígitos 0 e 17 Formado por um conjunto de 8 bits

Page 11: apostila de Algoritimo

Algoritmos pág. 11

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;

IDENTIFICADORESNomes 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.

EXEMPLOS1. Faça um algoritmo que exiba o resultado da multiplicação de dois números.

DESCRIÇÃO NARRATIVAPasso 1 – Receber dois números que serão multiplicados.Passo 2 – Multiplicar os dois números.Passo 3 – Exibir o resultado.

FLUXOGRAMA

PSEUDOCÓDICOALGORITMODECLARE N1, N2, M NUMÉRICOESCREVA “Digite dois números”LEIA N1, N2M N1 * N2ESCREVA “Multiplicação = ” , MFIM_ALGORITMO.

8 Palavras que pertencem a uma linguagem de programação. Exemplo: PRINTF.

INÍCIO N1, N2M = N1 * N2

M

FIM

Page 12: apostila de Algoritimo

Algoritmos pág. 12

EXERCÍCIOS

1. Crie um algoritmo para sacar dinheiro no banco 24 horas.2. Crie um algoritmo para assistir um filme no cinema.3. Crie um algoritmo de um assunto escolhido por você.4. Diferencie variável de constante e dê um exemplo de cada.5. Quais são os tipos de dados e dê um exemplo de cada um.6. Como estão classificados os algoritmos?7. Quais são as vantagens e desvantagens do pseudocódigo?8. Quais são as vantagens e desvantagens da descrição narrativa?9. Crie um algoritmo (pseudocódigo, descrição narrativa e fluxograma) que entre

com o nome e exiba.10. Crie um algoritmo (pseudocódigo, descrição narrativa e fluxograma) que entre

com quatro notas bimestrais e exiba a média aritmética.11. Faça um teste de mesa de acordo com o fluxograma abaixo:

Page 13: apostila de Algoritimo

Algoritmos pág. 13

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.

BIBLIOTECASConjunto 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

Page 14: apostila de Algoritimo

Algoritmos pág. 14

ETAPAS DA IMPLEMENTAÇÃO

includeInforma 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_caracteresExemplo: #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(); }

Page 15: apostila de Algoritimo

Algoritmos pág. 15

#undefApaga 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.

Page 16: apostila de Algoritimo

Algoritmos pág. 16

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

ALGORITMODECLARE

Bloco de comandosFIM_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 ALGORITMOSExibe 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 DADOSO C/C++ possui cinco tipos: int, float, double, void e char, com base

temos:

TIPO VALORES

Page 17: apostila de Algoritimo

Algoritmos pág. 17

char -127 a 127Unsigned char 0 a 255signed char -127 a 127Int -32.767 a 32.767Unsigned int 0 a 65.535Signed int -32.767 a 32.767Short int -32.767 a 32.767Unsigned Short Int 0 a 65,535Signed Short Int -32.767 a 32.767Long Int -2.147.483.647 a 2.147.483.647Unsigned Long Int 0 a 4.294.967.295Signed Long Int -2.147.483.647 a 2.147.483.647Float 3.4E – 38 a 3.4E + 38Double 1.7E – 308 a 1.7E + 308Long 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(); }

Page 18: apostila de Algoritimo

Algoritmos pág. 18

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:

cinArmazena 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).

getsUm ou vários caracteres digitados a uma variável. Exemplo: gets(NOME);Utilizamos quando temos uma cadeira de caracteres contendo espaço em

branco.

Page 19: apostila de Algoritimo

Algoritmos pág. 19

scanfArmazena 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:

coutExibe o valor que está armazenado na variável. Exemplo: cout << Y;

cout << “Conteúdo de Y = “ << Y;

printfExibe o número inteiro ou real armazenado em uma variável.Sintaxe:printf(“%d”,Y); (número inteiro)printf(“%f”, Y); (número real).ArgumentosEntradas 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);

putsExibe somente textos.Sintaxe: puts(char *string);

Page 20: apostila de Algoritimo

Algoritmos pág. 20

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.

Page 21: apostila de Algoritimo

Algoritmos pág. 21

Matemáticas

FUNÇÃO SINTAXE EXPLICAÇÃOceil ceil(a)

ceil(3.2) fica 4Arredonda 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) é 3Arredonda 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).

ALGORITMODECLARE C, F : realLEIA CF ( 9 * C + 160)/ 5ESCREVA F

FIM_ALGORITMO.

#include <stdio.h>

Início

Fim

C

F (9 * C +160)/5

F

Page 22: apostila de Algoritimo

Algoritmos pág. 22

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ÍCIOS1. 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 ; ______________________________________

A = A++ + ++A; ______________________________________

A = A; ______________________________________

A = (A > 3); ______________________________________

A = A++ + A++ + A++; ______________________________________

A = ++A + ++A + ++A; ______________________________________

}3. O que faz o seguinte programa?

#include <stdio.h>int main(){ int x;

scanf(“%d”, &x);printf(“%d”, x);return(0); }

4. Escreva um programa que leia um caractere digitado pelo usuário, imprima este caractere e o código ASCII correspondente.

5. Faça um programa (pseudocódigo e C/C++) que receba quatro números inteiros, calcule e mostra a soma desses números.

6. Faça um programa (pseudocódigo e C/C++) receba três notas, calcule e mostre a média aritmética entre elas.

7. 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.

Page 23: apostila de Algoritimo

Algoritmos pág. 23

8. 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%.

9. 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.

10. 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.

11. 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.

12. 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.

13. Faça um programa que calcule e exiba a área de um triângulo (AREA = (BASE * ALTURA) / 2.

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;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.

10 1 pé = 12 polegadas11 1 jarda = 3 pés12 1 milha = 1.760 jardas13 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.

Page 24: apostila de Algoritimo

Algoritmos pág. 24

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();}

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.

Page 25: apostila de Algoritimo

Algoritmos pág. 25

ESTRUTURA CONDICIONAL (Controle de Fluxo)

ALGORITMOS

SE condiçãoENTÃ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çãoENTÃO INICIO

Comando1Comando2Comando3

FIM

ESTRUTURA CONDICIONAL COMPOSTA

SE condiçãoENTÃO INICIO

comando1comando2

FIMSENÃO INÍCIO

comando3comando4

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();}

Page 26: apostila de Algoritimo

Algoritmos pág. 26

COMPOSTA – IF/ELSEif (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 - SWITCHswitch (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()

Page 27: apostila de Algoritimo

Algoritmos pág. 27

{ 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ÓGICOSPodem ser: &&, || e ! significam respectivamente e, ou e não (conjunção,

disjunção e negação).

EXEMPLO1. 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.

ALGORITMODECLARE bim1, bim2, bim3, bim4, media : realLEIA bim1, bim2, bim3, bim4media (bim1 + bim2 + bim3 + bim4)/ 4SE (media >= 5) ENTÃO ESCREVA “Aluno aprovado com média: ”, mediaSENÃO ESCREVA “Aluno reprovado com média: ”, mediaFIM_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();}

Page 28: apostila de Algoritimo

Algoritmos pág. 28

EXERCÍCIOS1. 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 CONCEITO8,0 10,0 A7,0 8,0 B6,0 7,0 C5,0 6,0 D0,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 MENSAGEM0,0 3,0 Reprovado3,0 7,0 Exame7,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.

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 abaixoVALOR DE I FORMA DE ESCREVER1 A,B,C em ordem crescente2 A,B,C em ordem decrescente3 O maior fica entre os outros dois n’s.

Início

bim1, bim2, bim3, bim4

media = (bim1+bim2+bim3+bim4)/4

media >= 5

“Reprovado”, media

“Aprovado”, media

Fim

Page 29: apostila de Algoritimo

Algoritmos pág. 29

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ÇÕES1. 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 PERCENTUAL1 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. Imposto2. Novo salário3. ClassificaçãoDigite a opção desejada.TEM TRÊS OPÇÕESSALÁRIO PERCENTUAL DO IMPOSTOMenor que R$ 500,00 5%De R$ 500,00 a R$ 850,00 10%Acima de R$ 850,00 15%SALÁRIO AUMENTOMaiores que R$ 1.500,00 R$ 25,00De R$ 750,00 a R$ 1.500,00 (inclusive) R$ 50,00De R$ 450,00 a R$ 750,00 R$ 75,00Menores que R$ 450,00 R$ 100,00SALÁRIO CLASSIFICAÇÃOAté R$ 700,00 (inclusive) Mal remuneradoMaiores 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-escolaSALÁRIO BONIFICAÇÃOAté R$ 500,00 5%Entre R$ 500,01 e R$ 1.200,00 12%Acima de R$ 1.200,00 Sem bonificaçãoSALÁRIO AUXILIO-ESCOLAAté R$ 600,00 R$ 150,00Mais 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:- 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

Page 30: apostila de Algoritimo

Algoritmos pág. 30

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 PESOATÉ 60 Entre 60 a 90 Acima de 90

Menores que 1,20 A D GDe 1,20 a 1,70 B E HMaiores 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

Page 31: apostila de Algoritimo

Algoritmos pág. 31

INICIOcomando1comando2comando3

FIM

Exemplo: PARA I 1 ATÉ 10 FAÇAcomando1 // 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 primeira comparação sendo assim os comandos não são executados.

ENQUANTO condição FAÇAINICIO

comando1comando2

FIM

Exemplo: x 1y 5ENQUANTO x < y FAÇA

INÍCIOx x + 2y y + 1

FIMSimulaçãoX Y1 5 Iniciais3 65 77 89 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.

REPITAComandos

ATÉ condição

Os comandos são repetidos enquanto a condição for verdadeira.Exemplo: x 1

y 5REPITA

x x + 2y y + 1

ATÉ x >= ySimulaçãoX Y

Page 32: apostila de Algoritimo

Algoritmos pág. 32

1 5 Iniciais3 65 77 89 9

C/C++

forUtilizada 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.

breakUtilizado para interrompe qualquer tipo de repetição.

continuePermite 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.

whileUtilizada 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;……………..

N

S

Page 33: apostila de Algoritimo

Algoritmos pág. 33

}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-whileUtilizada 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).

ALGORITMODECLARE soma, contador : inteirosoma 0PARA 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++) {

Início

Soma 0

Contador1,100,1

Soma Soma + Contador

Soma

fim

N

S

Page 34: apostila de Algoritimo

Algoritmos pág. 34

soma = soma + contador; } printf("%d", soma); getch();}

EXERCÍCIOS1. 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. 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 TRABALHADAG N 18% do salário mínimoG M ou V 15% do salário mínimoO N 13% do salário mínimoO 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ÇÃOAté R$ 300,00 20% do salário inicialEntre R$ 300,00 e R$ 600,00 15% do salário inicialAcima de R$ 600,00 5% do salário inicial

Page 35: apostila de Algoritimo

Algoritmos pág. 35

7. 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.

8. 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-....

9. 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 MENSAGEMAté 3,0 Reprovado

Entre 3,0 e 7,0 ExameAcima de 7,0 Aprovado

10. 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,...

11. 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 dos jogadores, 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.

12. 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.

13. 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.

14. 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.

15. 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.

Page 36: apostila de Algoritimo

Algoritmos pág. 36

16. 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ÍVIDA1 03 106 159 2012 25

Exemplos de saída do programa:VALOR DA DÍVIDA JUROS QTDE PARCELAS VALOR DA PARCELAR$ 1000,00 0 1 R$ 1000.00R$ 1100,00 100 3 R$ 366,67R$ 1150,00 150 6 R$ 191,67

17. Faça um programa que determine e exiba os cincos primeiros múltiplos de 3, considerando números maiores que 0.

18. 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.

19. 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] tipoExemplo: DECLARE x[5] NUMÉRICO

X 1 2 3 4 5

x[1]

ATRIBUINDO VALORES AO VETOR

X[1] 50X[4] 9

Page 37: apostila de Algoritimo

Algoritmos pág. 37

X 50 9 1 2 3 4 5

CARREGANDO UM VETOR

PARA i 1 ATÉ 5 FAÇAINÍ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 VETORExemplos: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 VETORLê os dados do teclado, atribuindo a um vetor.for (i = 0; i <10;i++) cin >> vetor[i];

IMPRIMINDO UM VETORfor (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;

Page 38: apostila de Algoritimo

Algoritmos pág. 38

printf ("\nMedia das notas: %3.1f", media); getch();}

EXEMPLO1. 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 : inteiroPARA i de 1 até 20 passo 1 FAÇA LEIA nome[i]

FIM_PARAPARA i de 1 até 20 passo 1 FAÇA ESCREVA nome[i]

FIM_PARAFIM_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(); }

2. Receber as notas de cinco alunos, calcular a média geral da turma e verificar quantos conseguiram ficar acima da média:

ALGORITMODECLARE soma, media, conta NUMERICOPARA x de 1 ATÉ 5 FAÇA INICIO LER nota[x] soma soma + nota[x] FIMFIM_PARAMedia soma / 10PARA n de 1 ATÉ 5 FAÇA SE nota[n] > media Então Conta conta + 1 FIM_SEFIM_PARAFIM_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];

início

i1,20,1

nome[i]

nome[i]

fim

i1,20,1

Page 39: apostila de Algoritimo

Algoritmos pág. 39

} 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 10main(){ 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

1. 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.

2. Faça um programa que 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).

3. 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 91 2 3 4 5 6 7 8 9 10

Vetor2 3 5 4 2 2 5 3 2 5 91 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

Page 40: apostila de Algoritimo

Algoritmos pág. 40

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 91 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

6. Faça um programa que no momento de carregar um vetor com oito números inteiros já o carregue de maneira ordenada crescente.

7. 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; SairQuando 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.

8. 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.

9. 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, ...).

10. 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.11. 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.

12. 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 71 2 3 4 5 6

RelatórioOs números pares são:Número 2 na posição 1

Page 41: apostila de Algoritimo

Algoritmos pág. 41

Número 4 na posição 2Número 6 na posição 4Soma dos pares = 12Os números impares são:Número 5 na posição 3Número 3 na posição 5Número 7 na posição 6Quantidade de números ímpares = 3

Page 42: apostila de Algoritimo

Algoritmos pág. 42

MATRIZ

DEFINIÇÃOVariá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] tipoOnde 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 51

a 23

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 51 45

a 2 13 03 -4

CARREGANDO UMA MATRIZ

PARA i 1 ATÉ 3 FAÇAINÍCIO

PARA j 1 ATÉ 5 FAÇAINICIO

ESCREVA “Digite o número da linha ”, i, “ e coluna ”, jLEIA x[i,j]

FIMFIM

Ficaria assim:

1 2 3 4 51 12 9 3 7 -23

X 2 15 4 2 34 -43 3 45 3 0 -3

EXIBINDO OS ELEMENTOS DE UMA MATRIZ

PARA i 1 ATÉ 3 FAÇA

Page 43: apostila de Algoritimo

Algoritmos pág. 43

INCIOPARA j 1 ATÉ 5 FAÇAINICIO

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 5x 0

1

ATRIBUINDO VALORES

x[1] [4] = 5

0 1 2 3 4 5x 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];

Page 44: apostila de Algoritimo

Início

I 1,20

a[ I ]

I 1,30

b[ I ]

I 1,50

i<=20

N S

c[i] b[i-20] c[i] a[i]

I 1,50

c[i]

Fim

Algoritmos pág. 44

}

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();}

EXEMPLOS1. 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.

ALGORITMODECLARE a[1,20], b,[1,30],

c[1,50], i NUMÉRICOPARA i 1 até 20 FAÇA

LEIA a[i]FIM_PARAPARA i 1 até 30 FAÇA

LEIA b[i]FIM_PARAPARA i 1 até 50 FAÇA

SE (i <= 20) ENTÃO c[i] a[i] SENÃO c[i] b[i - 20] FIM_SEFIM_PARAPARA i 1 ATÉ 50 FAÇA ESCREVA c[i]FIM_PARA

FIM_ALGORITMO

#include <stdio.h>int main(){ int i;

Page 45: apostila de Algoritimo

Algoritmos pág. 45

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

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.

Page 46: apostila de Algoritimo

Algoritmos pág. 46

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 IMPOSTOAté R$ 50,00 5Entre R$ 50,01 e R$ 100,00 10Acima de R$ 100,00 20

8. 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.

9. 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.

10. 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]

Page 47: apostila de Algoritimo

Algoritmos pág. 47

Índice ... 0 1 2 3 4 5 6 7 8 ...Valor ... A L G O R I T M O ...

Posiçãomemó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(); }

Page 48: apostila de Algoritimo

Algoritmos pág. 48

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ÍCIO1. 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.

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

DECLARE nome_variável REGISTRO (campo TIPO_CAMPO)Exemplo: DECLARE conta REGISTRO (num, saldo NUMERICO, nome LITERAL)

Page 49: apostila de Algoritimo

Algoritmos pág. 49

O registro declarado é chamado de conta e possui três campos: num, saldo (NUMÉRICO) e nome (literal).

Conta num conta.numsaldo conta.saldonome conta.nome

DECLARAÇÃO DE REGISTROS EM C/C++

São definidos pela palavra struct. Sintaxe:struct nome_do_tipo_da_estrutura

{ tipo_1 nome_1; tipo_2 nome_2; ... tipo_n nome_n;

} variáveis_estrutura;

A partir desta estrutura definida podemos considerar a existência de um novo tipo de dado para ser utilizado. Esse novo tipo é capaz de armazenar os campos definidos chamados de campos de estrutura. Exemplo:

struct produto{ int código; char descrição[30];}

DECLARAÇÃO DE VARIÁVEIS DO TIPO REGISTRO EM C/C++

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];

ACESSO A MEMBROS DE ESTRUTURAS

Após a declaração da variável podemos manipular seu conteúdo, ou seja, valores armazenados em cada membro da estrutura, para isso, informamos o nome da variável e o campo que será manipulado. Exemplo:

produto x;x.codigo = 1;strcpy(x.descricao, “geladeira”);

EXEMPLOS

1. Utilizar as estruturas declaradas na seção anterior para escrever um programa que preencha uma ficha.

#include <stdio.h>#include <string.h>struct tipo_endereco{

Leitura

Page 50: apostila de Algoritimo

Algoritmos pág. 50

char rua [50]; int numero; char bairro [20]; char cidade [30]; char sigla_estado [3]; long int CEP;};

struct ficha_pessoal{ 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

1. Faça um programa que realize o cadastro de contas bancárias com as seguintes informações: número da conta, nome do cliente e saldo. O banco permitirá o cadastramento de apenas 15 contas e não pode haver mais de uma conta com o mesmo número. Crie o menu de opções:MENU DE OPÇÕES1. CADASTRAR CONTAS2. VISUALIZAR TODAS AS CONTAS DE UM DETERMINADO CLIENTE3. EXCLUIR CONTA COM MENOR SALDO (não pode haver saldos iguais)4. SAIR

2. Faça um programa que utilize os registros a seguir:CLIENTE DOCUMENTOScod_cli num_docnome cód_clifone data_vencendereço data_pag

valorjuros

Sabe-se que um documento só pode ser cadastrado para um cliente que já exista. Considere que podem existir no máximo 15 clientes e 10 documentos. Crie um vetor para clientes e outro para documentos. Crie um menu para a realização de cada uma das operações especificadas a seguir.a) Cadastrar clientes - não pode existir mais de um cliente com o mesmo código.b) Cadastrar documentos - ao cadastrar um documento, se a data de pagamento for maior que a data de vencimento, calcular o campo 'juros' do registro documentos (5% sobre o valor original do documento).c) Excluir clientes - um cliente só pode ser excluído se não existir documento algum associado a ele.

Escrita

Page 51: apostila de Algoritimo

Algoritmos pág. 51

d) Excluir documentos individuais - por meio de seu número. Caso o documento não exista, mostre a mensagem Documento não encontrado.e) Excluir documentos por cliente — informar o código do cliente e excluir todos os seus documentos. Caso o cliente não exista, mostre a mensagem Cliente não encontrado.f) Excluir documentos por período - informar a data inicial e a data final e excluir todos os documentos que possuírem data de vencimento nesse período.g) Alterar as informações sobre os clientes - só não pode ser alterado o código do cliente, h) Mostrar o total de documentos de um determinado cliente.Quando forem excluídos clientes ou documentos, os vetores devem ser reorganizados, ou seja, todas as posições não preenchidas dos vetores devem ficar no final. Exemplo: se for necessário excluir o número 8 do vetor a seguir, tanto o 9 quanto o I devem ser movidos uma casa para a esquerda e a última posição deve ficar livre para uma nova inclusão.Vetor inicial

12 5 8 9 1

Vetor reordenado com uma posição livre ao final

12 5 9 1

3. ma empresa contratou J 5 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. Sabe-se que esses funcionários trabalharão nos meses de novembro de 2000 a janeiro de 2001. Faça um programa que:a) cadastre os nomes dos funcionários e suas respectivas vendas mensais;b) calcule e mostre a pontuação geral de cada funcionário nos três meses. Sabe-

se que R$ 100,00 equivalem a l ponto;c) calcule e mostre a pontuação geral de todos os funcionários a cada mês;d) determine e mostre a maior pontuação atingida nos três meses, mostrando o

nome do funcionário. Desconsiderar empates;e) determine e mostre o valor total vendido.

Page 52: apostila de Algoritimo

Algoritmos pág. 52

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;

COMANDOS DE ARQUIVOS EM C/C++

fopen()Abre um arquivo retornando o ponteiro associado a esse arquivo. Sintaxe: FILE * fopen(char * arquivo, char *modo_abertura);Modo de Aberturar abre um arquivo de teto onde são realizadas apenas leituras;w cria um arquivo de texto onde realiza apenas de escrita;a anexa novos dados a um arquivo texto;rb arquivo binário realiza apenas leituras;wb arquivo binário realiza apenas escritas;ab novos dados a um arquivo binário;r+ abre um arquivo texto onde são realizadas leitura e escrita;w+ abre um arquivo texto onde são realizadas escrita e leitura;a+ anexa novos dados ou cria um arquivo texto onde são

realizadas escrita e leitura;rb+ abre um arquivo binário onde são realizadas escrita e leitura;wb+ cria um arquivo binário onde são realizadas escrita e leitura;ab+ anexa novos dados a um arquivo binário de leitura e escrita.

Exemplo: FILE *arquivo;arquivo = fopen(“arquivo1.dat”, “w”);if (arquivo == NULL) { printf(“\nOcorreu um erro, arquivo não foi aberto.”

getch();}else { /* outras instruções */}

Obs.: Quando usamos os modos w e wb, se o arquivo não existir será criado ou, se já existir será sobreposto por um arquivo vazio.

fclose()Fecha um arquivo aberto, se ocorrer um erro poderá haver perda de dados.

Page 53: apostila de Algoritimo

Algoritmos pág. 53

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; SEEK_END: movimentação de qtde_bytes a partir da posição final 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().

Page 54: apostila de Algoritimo

Algoritmos pág. 54

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); }

LENDO E ESCREVENDO CARACTER EM ARQUIVOS EM C/C++

putcFunção de escrita que escreve um caractere no arquivo informado.Sintaxe: int putc(int ch, FILE *arquivo)Exemplo: Lê uma string e escreve em um arquivo em disco (arquivo.txt):#include <stdio.h>#include <stdlib.h>main (void){ FILE *fp; char string[100]; int i; fp = fopen("arquivo.txt","w"); /* arquivo ASCII para escrita*/ if (!fp) { printf("Erro na abertura do arquivo."); exit(0); }

Page 55: apostila de Algoritimo

Algoritmos pág. 55

printf("Entre com a string a ser gravada no arquivo: "); gets(string); for (i=0;string[i]; i++) putc(string[i], fp); /* grava a string, caractere a caractere*/ fclose(fp); getch(0); }

getcRetorna um caractere lido do arquivo.Sintaxe: int getc (FILE *arquivo);

feofEOF (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

Permitem ao programador ler e escrever em arquivos da maneira padrão com a qual já o havíamos lido e escrevidos na tela.

fprintfSemelhante 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,...)

fscanfSemelhante a função scanf(), lê de um arquivo e não de um teclado.Sintaxe: int fscanf(FILE *arquivo, char *str,...)

EXEMPLOS1) 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>

Page 56: apostila de Algoritimo

Algoritmos pág. 56

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);

/*abre novamente o arquivo para leitura*/ p = fopen(str,"r"); c = getc(p); /* le o primeiro caracter*/ while (!feof(p)) /* enquanto não for o fim do arquivo */ { printf("%c", c); /* imprime o caracter na tela*/ c = getc(p); /* le um novo caracter no arquivo */ } fclose(p); /* fecha o arquivo*/ getch();}

2) Exemplifique a utilização dos comandos fprint e fscanf:#include <stdio.h>#include <stdlib.h>int main(){ FILE *p; char str[80],c; /* le um nome para o arquivo a ser aberto*/ printf("\n\n Entre com um nome para o arquivo: \n"); gets(str); if(!(p = fopen(str,"w"))) /* caso ocorra algum erro na abertura*/ { printf("Erro! Impossível abrir o arquivo!\n"); exit(1); /* aborta automaticamente */ } /* se não houver erro, prime no arquivo, fecha...*/ fprintf(p, "Este e um arquivo chamado:\n%s\n", str); fclose(p); /* abrir novamente para leitura */ p = fopen(str, "r"); while (!feof(p)) { fscanf(p,"%c",&c); printf("%c",c); } fclose(p); getch();}

Page 57: apostila de Algoritimo

Algoritmos pág. 57

EXERCÍCIOS

1. Faça um programa que crie um arquivo chamado ALUNOS.DAT onde cada registro será composto pelos seguintes campos: número, nome, curso, nota1, nota2.

2. Faça um programa para incluir alunos no arquivo criado no exercício anterior. Não podem existir dois alunos com o mesmo número.

3. Faça um programa para alterar as notas dos alunos criado no exercício 1.4. Faça um programa para alterar o curso dos alunos do arquivo criado no

exercício 1.5. Faça um programa para excluir os alunos do arquivo criado no exercício 1.6. Faça um programa para consultar o número, nome e a média de todos os alunos

cadastrados no arquivo do exercício 1.7. Faça um programa para consultar o número, o nome e a média de todos os

alunos cadastrados no arquivo do exercício 1 e que estejam aprovados, ou seja, com a média igual ou maior que 7,0.

8. Faça um programa para consultar o número, o nome e o curso de todos os alunos cadastrados no arquivo do exercício 1 e que estejam reprovados ou seja, com média inferior a 3,0.

9. Faça um programa para consultar o nome de todos os alunos cadastrados no arquivo do exercício 1 e que estejam de exame, ou seja, com média entre 3,0 e 7,0.

10. Faça um programa para consultar o nome de todos os alunos de um determinado curso.

11. Faça um programa para criar um arquivo chamado VENDAS.DAT onde cada registro será composto pelos seguintes campos: código do vendedor, nome do vendedor, valor de venda e mês.

12. Faça um programa para incluir um vendedor no arquivo criado no exercício anterior que não podem existir dois vendedores com o mesmo código e mesmo mês de vendas.

13. Faça um programa para alterar o valor de uma venda no arquivo VENDAS.DAT.14. Faça um programa para excluir um vendedor no arquivo VENDAS.DAT.15. Faça um programa para consultar o valor da venda de um vendedor em um

determinado mês no arquivo VENDAS.DAT.16. Faça um programa para consultar o total das vendas de um determinado

vendedor do arquivo VENDAS.DAT.17. Faça um programa para consultar o nome e o código do vendedor que mais

vendeu em um determinado mês no arquivo VENDAS.DAT.18. Faça um programa para consultar o mês com o maior valor de vendas e qual o

nome do vendedor que efetuou essas vendas no arquivo VENDAS.DAT.

Page 58: apostila de Algoritimo

Algoritmos pág. 58

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:

Exemplo: recebe o valor do salário de um funcionário e calcula o novo salário.

ALGORITMO DECLARE sal NUMERICO LEIA sal aum calculo (sal) novo_sal sal + aum ESCREVA “Novo salário: “, novo_salFIM_AGORTIMO

SUB_ROTINA calculo(sal NUMERICO) DECLARE perc, valor LEIA perc valor sal * perc/100 RETORNE valorFIM_SUBROTINA calculo

SUB-ROTINAS (FUNÇÕES) EM C/C++

Utiliza recursos de modularização, o qual podemos particionar em sub-rotinas. Estruturas que permitem ao usuário separar seus programas em blocos. Se

não as tivéssemos, os programas teriam que ser curtos e de pequena complexidade.

Sintaxe: tipo_retorno nome_função(declaração dos argumentos){ corpor_da_função}

Onde: o tipo de retorno é o tipo de variável que a função vai retornar. O default é int. argumentos são declarados assim: tipo nome1, tipo nome2,..., tipo nomeN. No corpo é feita todas as entradas a serem processadas e as saídas.

Exemplo: int soma(int a, int b) {

s = a + b;return s;

}

COMANDO RETURN

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.

Page 59: apostila de Algoritimo

Algoritmos pág. 59

#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

1. Faça uma função que retorne 1 se o número digitado for positivo ou 0 se o número for negativo.

2. Faça uma função que receba dois números positivos por parâmetro e retorna a soma dos N números inteiros existentes entre eles.

3. Faça uma função que receba três números inteiros: A, B e C, onde A é maior que 1. A função deve somar todos os inteiros entre B e C que sejam divisíveis por A (inclusive B e C) e retornar o resultado para a função principal.

4. Faça uma função que transforme e exiba segundos em horas, minutos e segundos. Todas as variáveis devem ser passadas como parâmetro, não havendo variáveis globais.

5. Faça um procedimento que receba três notas de um aluno como parâmetros e uma letra. Se a letra for A o procedimento calcula a média aritmética das notas do aluno, se for P o procedimento calcula a média ponderada, com pesos 5, 3 r 2. A média calculada deve ser devolvida ao programa principal para então, ser exibida.

6. Faça um procedimento que leia cinco valores e retorne o maior e o menor deles.7. Faça uma função que receba, por parâmetro, dois vetores de dez elementos

inteiros positivos e exiba o vetor união dos dois primeiros.8. Faça uma função que receba, por parâmetro, um vetor A com cinco números

reais e retorne esses números ordenados em ordem crescente.9. Faça uma função que receba dois vetores A e B de dez elementos inteiros, por

parâmetro. O procedimento deve determinar e exibir um vetor C que contenha os elementos de A e B em ordem decrescente.

10. Faça uma função que receba por parâmetros, uma matriz A(5,5) e retorne a soma dos elementos.

11. Faça uma função que receba por parâmetros, uma matriz A(6,6) e retorne o menor elemento da sua diagonal secundária.

12. Faça uma função que receba por parâmetros, uma matriz A(6,6) e multiplique cada linha pelo elemento da diagonal principal daquela linha. A função deve retornar a matriz alterada para ser exibida no programa principal.