Вы находитесь на странице: 1из 61

# Algoritmos

## Simone Maria Viana simone_viana@yahoo.com.br

2006

Algoritmos

pg. 2

NDICE
INTRODUO.................................................................................................................6 LGICA........................................................................................................................6 COMPUTADOR...........................................................................................................6 PROGRAMA.................................................................................................................7 LINGUAGENS DE PROGRAMAO.......................................................................7 TCNICAS ATUAIS DE PROGRAMAO..............................................................7 AO............................................................................................................................7 ESTADO.......................................................................................................................7 PROCESSO OU EVENTO...........................................................................................7 PADRES DE COMPORTAMENTO.........................................................................7 EXERCCIO..................................................................................................................7 CONCEITOS BSICOS...................................................................................................9 DEFINIES................................................................................................................9 COMO FAZER UM ALGORITMO.............................................................................9 TESTE DE MESA.........................................................................................................9 CLASSIFICAO DOS ALGORITMOS....................................................................9 DESCRIO NARRATIVA....................................................................................9 DIAGRAMA DE BLOCOS....................................................................................10 FLUXOGRAMA.....................................................................................................10 PSEUDOCDIGO ou PORTUGOL.......................................................................10 SIMBOLOGIA BSICA PARA DIAGRAMA DE BLOCOS ..............................10 TIPOS DE DADOS.................................................................................................11 VARIVEIS............................................................................................................11 CONSTANTES.......................................................................................................12 IDENTIFICADORES..............................................................................................12 EXEMPLOS............................................................................................................12 EXERCCIOS..............................................................................................................13 LINGUAGEM C/C++.....................................................................................................14 BIBLIOTECAS.......................................................................................................14 ETAPAS DA IMPLEMENTAO............................................................................15 include.....................................................................................................................15 DIRETIVAS define e undef....................................................................................15 EXEMPLO..............................................................................................................16 Dev-C++......................................................................................................................16 LISTA DE RECURSOS..........................................................................................16 INSTALAO E CONFIGURAO DO DEV-C++...........................................17 ESTRUTURA SEQENCIAL .......................................................................................17 DECLARAO DE VARIVEIS EM ALGORITMOS...........................................17 COMANDO DE ATRIBUIO EM ALGORITMOS..............................................17 COMANDO DE ENTRADA EM ALGORITMOS....................................................17 COMANDO DE SADA EM ALGORITMOS...........................................................17 REQUERIMENTOS NECESSRIOS....................................................................17 TIPOS DE DADOS.....................................................................................................18 ESTRUTURA SEQENCIAL EM C/C++.................................................................18 DECLARAO DE VARIVEIS EM C/C++..........................................................18

Algoritmos

pg. 3

STRINGS.................................................................................................................18 getche()....................................................................................................................19 Exemplos.................................................................................................................19 COMANDO DE ATRIBUIO EM C/C++..............................................................19 COMANDOS DE ENTRADA EM C/C++.................................................................19 cin............................................................................................................................20 gets...........................................................................................................................20 scanf.........................................................................................................................20 COMANDOS DE SADA EM C/C++........................................................................20 cout..........................................................................................................................20 printf........................................................................................................................20 puts...........................................................................................................................21 COMENTRIOS EM C/C++.....................................................................................21 OPERADORES E FUNES PREDEFINIDAS EM C/C++....................................21 Matemticos.............................................................................................................21 Relacionais...............................................................................................................22 Matemticas.............................................................................................................22 Lgicos....................................................................................................................22 EXEMPLO..................................................................................................................23 EXERCCIOS..............................................................................................................23 RECURSIVIDADE.........................................................................................................25 ESTRUTURA CONDICIONAL (Controle de Fluxo)....................................................27 ALGORITMOS...........................................................................................................27 ESTRUTURA CONDICIONAL COMPOSTA......................................................27 C/C++..........................................................................................................................27 SIMPLES - IF..........................................................................................................27 COMPOSTA IF/ELSE.........................................................................................28 ESTRUTURA CASE - SWITCH............................................................................28 OPERADORES LGICOS.....................................................................................29 EXEMPLO..................................................................................................................29 EXERCCIOS..............................................................................................................30 ESTRUTURA DE REPETIO....................................................................................33 ALGORITMOS...........................................................................................................33 NMERO DEFINIDO DE REPETIES (ESTRUTURA PARA)......................33 NMERO INDEFINIDO DE REPETIES E TESTE DE INCIO (ESTRUTURA ENQUANTO)................................................................................33 NMERO INDEFINIDO DE REPETIES E TESTE NO FINAL (ESTRUTURA REPITA)........................................................................................33 C/C++..........................................................................................................................34 for.............................................................................................................................34 break........................................................................................................................35 continue...................................................................................................................35 while........................................................................................................................35 do-while...................................................................................................................35 EXEMPLOS................................................................................................................36 EXERCCIOS..............................................................................................................36 VETORES.......................................................................................................................39 ALGORITMOS...........................................................................................................39 DECLARAO DO VETOR.................................................................................39 ATRIBUINDO VALORES AO VETOR................................................................39 CARREGANDO UM VETOR................................................................................39 C/C++..........................................................................................................................39 DECLARAO DO VETOR.................................................................................39

Algoritmos

pg. 4

ATRIBUINDO VALORES AO VETOR................................................................39 CARREGANDO UM VETOR................................................................................40 IMPRIMINDO UM VETOR...................................................................................40 EXEMPLO..................................................................................................................40 EXERCCIOS..............................................................................................................42 MATRIZ..........................................................................................................................44 DEFINIO................................................................................................................44 DECLARAO DE MATRIZ...............................................................................44 EXEMPLO DE MATRIZ........................................................................................44 ATRIBUINDO VALORES MATRIZ.................................................................44 CARREGANDO UMA MATRIZ...........................................................................44 EXIBINDO OS ELEMENTOS DE UMA MATRIZ..............................................45 C/C++..........................................................................................................................45 DECLARAO DE MATRIZ...............................................................................45 ATRIBUINDO VALORES.....................................................................................45 EXIBINDO ELEMENTOS DA MATRIZ..............................................................45 EXEMPLOS................................................................................................................46 EXERCCIOS..............................................................................................................48 MANIPULANDO CARACTERES EM C/C++..............................................................49 FUNO strcpy()...................................................................................................49 FUNO strcat()....................................................................................................49 FUNO strlen()....................................................................................................49 FUNO strchr()....................................................................................................50 FUNO strstr().....................................................................................................50 FUNO strcmp()..................................................................................................50 EXERCCIO............................................................................................................50 REGISTROS (Estruturas)................................................................................................51 DECLARAO - ALGORITMOS............................................................................51 DECLARAO DE REGISTROS EM C/C++..........................................................51 DECLARAO DE VARIVEIS DO TIPO REGISTRO EM C/C++.....................51 ACESSO A MEMBROS DE ESTRUTURAS............................................................51 EXEMPLOS................................................................................................................52 EXERCCIOS..............................................................................................................52 ARQUIVOS.....................................................................................................................54 DECLARAO EM C/C++.......................................................................................54 COMANDOS DE ARQUIVOS EM C/C++...............................................................54 fopen().....................................................................................................................54 fclose().....................................................................................................................55 ferror().....................................................................................................................55 fputc()......................................................................................................................55 fgetc().......................................................................................................................55 fputs().......................................................................................................................55 fgets().......................................................................................................................55 fwrite().....................................................................................................................55 fread()......................................................................................................................55 fseek()......................................................................................................................55 feof()........................................................................................................................56 rewind()...................................................................................................................56 remove()...................................................................................................................56 fflush().....................................................................................................................56 exit().........................................................................................................................56 LENDO E ESCREVENDO CARACTER EM ARQUIVOS EM C/C++...................56 putc..........................................................................................................................56

Algoritmos

pg. 5

getc...........................................................................................................................57 feof...........................................................................................................................57 FLUXOS PADRO....................................................................................................57 fprintf.......................................................................................................................57 fscanf.......................................................................................................................57 EXEMPLOS................................................................................................................58 EXERCCIOS..............................................................................................................59 SUB-ROTINAS...............................................................................................................60 ALGORITMO:............................................................................................................60 SUB-ROTINAS (FUNES) EM C/C++......................................................................60 COMANDO RETURN............................................................................................60 EXERCCIOS..........................................................................................................61

Algoritmos

pg. 6

INTRODUO
Voc sabe usar o raciocnio lgico? Isto depende de vrios fatores: calma, conhecimento, vivncia, versatilidade, experincia, criatividade, ponderao, responsabilidade etc. Para utilizar a lgica preciso ter domnio do pensamento e saber pensar. Ento, o que raciocnio lgico? Conjunto de estudos que visa determinar os processos intelectuais que so as condies gerais do conhecimento verdadeiro. Ou ainda: Seqncias coerentes, regulares e necessrias dos acontecimentos, das coisas ou dos fatos, at mesmo, que maneira do raciocnio particular que cabe a um indivduo ou a um grupo. Mas os profissionais de Tecnologia de Informao acreditam que seja um esquema sistemtico que define as interaes de sinais no equipamento automtico do processamento de dados ou computador cientfico com o critrio e princpios formais de raciocnio e pensamento.

LGICA
Conclumos que lgica a cincia que estuda as leis e critrios de validade que regem o pensamento e a demonstrao, ou seja, cincia dos princpios formais do raciocnio. Usar a lgica um fator importante na rea de tecnologia de informao, pois os profissionais no dia-a-dia solucionam problemas e atingem os objetivos apresentados por seus usurios com eficincia e eficcia, utilizando recursos computacionais e/ou automatizados. Porm, ningum ensina ningum a pensar, pois todas as pessoas normais possuem esse dom.

Algoritmos

pg. 7

PROGRAMA
Um programa um algoritmo escrito em uma linguagem computacional.

LINGUAGENS DE PROGRAMAO
So Softwares que permitem o desenvolvimento de programas. Possuem um poder de criao ilimitado, desde jogos, editores de texto, sistemas empresariais at sistemas operacionais. Existem vrias linguagens de programao, cada uma com suas caractersticas prprias. Exemplos: Pascal, Clipper, C, Visual Basic, Delphi e etc.

## TCNICAS ATUAIS DE PROGRAMAO

AO
Evento que ocorre num perodo de tempo finito, estabelecendo um efeito intencionado e bem definido. Exemplos: Caminhar at a prxima esquina. Colocar um livro em cima de uma mesa. Atribuir o valor 3.14 a uma varivel. Estamos interessados primeiramente nos efeitos que as aes produzem. Aes de efeito imprevisveis no nos interessam. Algoritmos determinsticos.

Conjunto de propriedades do objeto que so relevantes para ns na situao desejada. Exemplos: Batatas com casca ou descascadas. Valor de uma varivel em um certo instante de execuo.

PROCESSO OU EVENTO
Uma seqncia temporal de aes. Exemplos: Trazer a cesta com batatas; Pegar a panela do armrio; Descascar as batatas; Guardar a cesta;

Vamos supor que no dia seguinte a um evento, algum o repita. Podemos dizer que temos o mesmo evento? No, pois ocorreram em MOMENTOS DIFERENTES. O que ento, eles tm em comum? O mesmo PADRO DE COMPORTAMENTO.

EXERCCIO

Algoritmos

pg. 8

## 1, 1, 2, 3, 5, 8, 13, 21, 34, 55

Algoritmos

pg. 9

CONCEITOS BSICOS
DEFINIES
Algoritmo uma seqncia de passos que visa atingir um objetivo bem definido (FORBELLONE, 1999). Algoritmo a descrio de uma seqncia de passos que deve ser seguida para a realizao de uma tarefa (ASCENCIO, 1999). Algoritmo uma seqncia finita de instrues ou operaes cuja execuo, em tempo finito, resolve um problema computacional, qualquer que seja sua instncia (SALVETTI, 1999). Algoritmo so regras formais para a obteno de um resultado, ou a soluo de um problema, englobando frmulas de expresses aritmticas (MANZANO, 1997). Conclumos que, no nosso dia-a-dia, executamos vrios algoritmos como: fazer um caf da manh, trocar a lmpada, ir faculdade etc.

## COMO FAZER UM ALGORITMO

Precisamos ler atentamente o enunciado, definir os dados de entrada1, o processamento2 e os dados de sada3, utilizar um dos tipos de algoritmo e testar atravs de simulaes.

TESTE DE MESA
Seguir as instrues do algoritmo de maneira precisa para verificar se o procedimento utilizado est correto ou no. Exemplo: Nota da Prova 1 Nota da Prova 2 Nota da Prova 3 Nota da Prova 4 Utilize a tabela abaixo: PROVA1 PROVA2 PROVA3 PROVA4 MDIA

## CLASSIFICAO DOS ALGORITMOS

DESCRIO NARRATIVA
Aps analisar o enunciado do problema o mesmo escrito, utilizando uma linguagem natural para descrever os passos para solucionar o problema. VANTAGEM: no necessrio aprender nenhum conceito. DESVANTAGEM: como utiliza uma linguagem natural pode haver vrias interpretaes.
1 2

Algoritmos

pg. 10

DIAGRAMA DE BLOCOS
Tambm chamado de diagrama de fluxo usado na programao com o objetivo de descrever o mtodo e a seqncia do processo dos planos num computador. Aps analisar o enunciado do problema o mesmo escrito utilizando grficos predefinidos para descrever os passos para solucionar o problema. VANTAGEM: o entendimento mais padronizado. DESVANTAGEM: necessrio conhecimento da simbologia.

FLUXOGRAMA

PSEUDOCDIGO ou PORTUGOL
Aps 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 programao praticamente imediata. DESVANTAGEM: aprender as regras do pseudocdigo.

## SIMBOLOGIA BSICA PARA DIAGRAMA DE BLOCOS

Algoritmos

pg. 11

Teclado informaes recebidas ou fornecidas por um computador. Carto Perfurado. Preparao grupo de operaes no includas no fluxograma, bem como na elaborao de uma chave que modificar a execuo de um programa. Fita magntica armazenamento de dados. Tambor magntico armazenamento de dados. Disquete armazenamento de dados.

Todos os dados possuem um tipo que pode ser classificado como: NUMRICO Divididos em dois grupos: inteiros e reais. INTEIROS: podem ser positivos ou negativos e no possuem parte decimal. Quando armazenado na memria, ocupa 2 bytes por isso temos 2 8 x 28 = 216 = 65.536 possibilidades de representao dos nmeros 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 memria do computador, ocupa 4 bytes, por isso temos 28 x 28 x 28x 28 = 232 = possibilidades de representao dos nmeros

reais. A faixa de valores maior tendo de 6 a 11 dgitos com sinal. Exemplos: 23,45, 9541,89, -78,98, -852,0. Os nmeros reais seguem a notao inglesa onde a parte decimal separada da parte inteira por um ponto. LGICO Tambm conhecidos como booleanos4 e assume verdadeiro ou falso, ocupando somente 1 byte, pois possui somente duas possibilidades. LITERAL ou CARACTERE Formados por um nico caractere ou por vrios. Podem ser letras, nmeros5 e caracteres especiais: \$, @, #,* e ?. Na memria, ocupa 1 byte que corresponde a um caractere. Exemplos: aluno, 951, @ informtica.

VARIVEIS
Os algoritmos recebem dados que sero processados, para isso, armazena os dados na memria. Os computadores trabalham no sistema numrico do tipo binrio6 e tudo que h nele (letra, nmero e caracteres especiais), formado para este sistema numrico e cada dgito binrio ocupa uma parte da memria chamada de bytes7 e
4 5

lgebra de Boole No podero ser utilizados para clculos 6 Formado pelos dgitos 0 e 1 7 Formado por um conjunto de 8 bits

Algoritmos

pg. 12

acessado por um endereo. Todos os caracteres possuem um correspondente da tabela ASCII que transformado em binrio pelo mtodo da diviso. Ento, varivel representa uma posio de memria, possuindo nome e tipo, com contedo variando ao longo do tempo, durante a execuo de um programa. Ela pode assumir diversos valores, mas somente um valor por vez.

CONSTANTES
um determinado valor fixo que no se modifica ao longo do tempo, durante a execuo de um programa. Conforme o seu tipo, a constante classificada como sendo numrica, lgica e literal. Exemplo: NOTA = 7;

Nomes dos programas, das variveis, das constantes, das rotinas etc. Como: Podemos utilizar nmeros, letras e o caractere sublinhado (_); O primeiro caractere s pode ser uma letra; No so permitidos caracteres especiais e espao em branco; No permitido usar palavras reservadas8. Exemplos: A, NOTA1, NOME, ENDERECO, X10.

EXEMPLOS
1. Faa um algoritmo que exiba o resultado da multiplicao de dois nmeros. DESCRIO NARRATIVA Passo 1 Receber dois nmeros que sero multiplicados. Passo 2 Multiplicar os dois nmeros. Passo 3 Exibir o resultado. FLUXOGRAMA M = N1 * N2

INCIO

N1, N2

FIM

PSEUDOCDICO ALGORITMO DECLARE N1, N2, M NUMRICO ESCREVA Digite dois nmeros LEIA N1, N2 M N1 * N2 ESCREVA Multiplicao = , M FIM_ALGORITMO.

## Palavras que pertencem a uma linguagem de programao. Exemplo: PRINTF.

Algoritmos

pg. 13

EXERCCIOS
1. 2. 3. 4. 5. 6. 7. 8. 9. Crie um algoritmo para sacar dinheiro no banco 24 horas. Crie um algoritmo para assistir um filme no cinema. Crie um algoritmo de um assunto escolhido por voc. Diferencie varivel de constante e d um exemplo de cada. Quais so os tipos de dados e d um exemplo de cada um. Como esto classificados os algoritmos? Quais so as vantagens e desvantagens do pseudocdigo? Quais so as vantagens e desvantagens da descrio narrativa? Crie um algoritmo (pseudocdigo, descrio narrativa e fluxograma) que entre com o nome e exiba. 10. Crie um algoritmo (pseudocdigo, descrio narrativa e fluxograma) que entre com quatro notas bimestrais e exiba a mdia aritmtica. 11. Faa um teste de mesa de acordo com o fluxograma abaixo:

Algoritmos

pg. 14

LINGUAGEM C/C++

BIBLIOTECAS
Conjunto padro de funes que realizam as tarefas necessrias mais comuns, como por exemplo escrever no vdeo (printf), ler um caractere do teclado (getch), entre outras. O padro ANSI C (American National Standards Institute) especifica o conjunto mnimo de funes que estar contido na biblioteca. No entanto seu compilador provavelmente conter outras funes que podem no estar includa em um compilador de outro fabricante.
9

## American National Standards Institute

Algoritmos

pg. 15

ETAPAS DA IMPLEMENTAO

include
Informa ao compilador que deve incluir no momento da compilao 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: Funes de entrada e sada stdio.h; Funes padro stdlib.h; Funes matemticas math.h; Funes do sistema system.h; Funes 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 seqncia de caracteres fornecida. Sintaxe: #define nome_macro seqncia_caracteres Exemplo: #include <stdio.h> #define PI 3.1416 #define VERSAO "2.02" int main() { printf("Programa verso %s ", VERSAO); printf("O numero pi vale: %f ", PI);

Algoritmos

pg. 16

getch(); } #undef Apaga a macro informada da tabela interna que armazena os macros. O compilador passa a partir deste ponto a no conhecer mais este macro. Sintaxe: #undef nome_macro

EXEMPLO
#include <stdio.h> /* exemplo */ int main() { printf(Bem vindo ao curso de Algoritmos!\n); return(0); }

Dev-C++
Ambiente integrado de desenvolvimento para as linguagens C e C++. Ele usa a implementao 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 distribudo e copiado vontade. O programa cria executveis nativas no Win32, console ou GUI. Dev-C++ tambm pode ser usado juntamente com Cygwin. DevC++ gratuito e de cdigo aberto e totalmente escrito em Delphi, que ironia no? Por ser um trabalho em constante desenvolvimento, as verses disponveis 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 extenso .c (c sources files).

LISTA DE RECURSOS
Suporte a compiladores baseados em GCC. Depurao integrada (usando GDB). Navegador de classes. Recurso de completar cdigos. Navegador de depurao de variveis. Gerenciador de Projetos. Editor com destaque de sintaxe personalizvel. Suporte a modelos para criao dos seus prprios projetos. Edio e compilao de arquivos de recursos. Gerenciador de Ferramentas. Suporte a impresso. Facilidades de encontrar e substituir. Gerenciador de pacotes para facilitar a instalao e adio de bibliotecas. Suporte CVS. Lista de coisas a fazer.

Algoritmos

pg. 17

Janela de CPU.

## INSTALAO E CONFIGURAO DO DEV-C++

Baixe o arquivo de instalao devcpp-4.9.9.2_setup.exe [9326468 bytes ou 9108 kb ou 8.9M] para uma pasta temporria. Esse arquivo pode ser removido depois da instalao. Para comear a instalao, 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 OPES DO COMPILADOR e em ADICIONAR OS SEGUINTES COMANDOS QUANDO CHAMAR O COMPILADOR, digite Wall ansiO2.

ESTRUTURA SEQENCIAL
ALGORITMO DECLARE Bloco de comandos FIM_ALGORITMO.

## DECLARAO DE VARIVEIS EM ALGORITMOS

So declaradas aps a palavra DECLARE e os tipos mais usados so o numrico, literal e lgico. Exemplo: X NUMERICO;

## COMANDO DE ATRIBUIO EM ALGORITMOS

Atribui valores ou operaes a variveis ( ). Exemplo: X 4.

## COMANDO DE SADA EM ALGORITMOS

Exibe dados no monitor ou na impressora (ESCREVA). Exemplo: ESCREVA X. ESCREVA Contedo de X = , X

REQUERIMENTOS NECESSRIOS
Arquivo MSVCRT.DLL (vem com o Windows 95 OSR 2 ou superior).

Algoritmos

pg. 18

O C/C++ possui cinco tipos: int, float, double, void e char, com base temos: TIPO char Unsigned char signed char Int Unsigned int Signed int Short int Unsigned Short Int Signed Short Int Long Int Unsigned Long Int Signed Long Int Float Double Long double VALORES -127 a 127 0 a 255 -127 a 127 -32.767 a 32.767 0 a 65.535 -32.767 a 32.767 -32.767 a 32.767 0 a 65,535 -32.767 a 32.767 -2.147.483.647 a 2.147.483.647 0 a 4.294.967.295 -2.147.483.647 a 2.147.483.647 3.4E 38 a 3.4E + 38 1.7E 308 a 1.7E + 308 3.4E 4.932 a 1.1E + 4.932

Obs.: de acordo com a verso do compilador a faixa de valores pode variar. A faixa acima est de acordo com o padro ANSI (valor mnimo).

## ESTRUTURA SEQENCIAL EM C/C++

#include <nome da biblioteca> void main() { bloco de comandos } BIBLIOTECAS so arquivos contendo vrias funes 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 so bibliotecas utilizadas em comandos de entrada e sada.

## DECLARAO DE VARIVEIS EM C/C++

So declaradas aps a especificao do seu tipo. Os tipos de dados so: int nmeros inteiros; float nmeros reais; char um caractere. No existe o tipo de dados booleano (que assume verdadeiro ou falso), pois qualquer valor diferente de 0 como sendo verdadeiro. No existe um tipo para guardar uma seqncia de caracteres (string). Quando necessrio utilizar um vetor contendo vrios 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(cdigo ASCII), podendo ser escrito assim \0. Sintaxe: char nome_string[tamanho];

Algoritmos

pg. 19

Declara um vetor de caracteres(string) com nmero de posies (tamanho), sempre tendo um caractere nulo reservado. Para ler uma string fornecida pelo usurio usamos a funo gets(): #include <stdio.h> int main() { char string[100]; printf ("Digite uma string: "); gets(string); printf("\n\nFoi digitado: %s",string); getch(); }

getche()
Usado para entrada de apenas um caracter pelo teclado e exibio 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 funes (encontradas na biblioteca conio.h) getch() e getche(), e ambas retornam o caractere pressionado, porm getche() imprime o caractere na tela antes de retorn-lo e getch() apenas retorna o caractere pressionado sem imprimi-lo na tela. Elas no fazem parte do padro ANSI e podem ser substitudas pela funo scanf() sem as mesmas funcionalidades.

Exemplos
1) Podemos usar o tipo char com nmeros inteiros, que, quando colocado %d representa o cdigo 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 ATRIBUIO EM C/C++

A atribuio em C/C++ feita com o sinal de igualdade (=). Os caracteres so apresentados entre apstrofos () 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 usurio que so armazenados em variveis, e, em C/C++ usamos os seguintes comandos:

Algoritmos

pg. 20

cin
Armazena um valor digitado a uma varivel. Exemplo: cin >> y; Os valores so armazenados at que seja encontrado o primeiro espao em branco (os posteriores sero desprezados).

gets
Um ou vrios caracteres digitados a uma varivel. Exemplo: gets(NOME); Utilizamos quando temos uma cadeira de caracteres contendo espao em branco.

scanf
Armazena um valor digitado a varivel. Exemplo: scanf(&Y); Obs.: & na frente da varivel indica o seu endereo. 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 SADA EM C/C++

Como tambm j foi dito, usado para exibir os dados (tanto na tela como na impressora) e so usados os seguintes comandos:

cout
Exibe o valor que est armazenado na varivel. Exemplo: cout << Y; cout << Contedo de Y = << Y;

printf
Exibe o nmero inteiro ou real armazenado em uma varivel. Sintaxe: printf(%d,Y); (nmero inteiro) printf(%f, Y);(nmero real). Argumentos Entradas que a funo recebe. atravs dos argumentos que passamos parmetros para a funo. O primeiro argumento uma string (seqncia de caracteres) entre aspas, que pode ou no conter comando de formato (representado pelo % na frente da letra):

Algoritmos

pg. 21

## Exemplo: printf(Contedo: %d, Y); printf(%7.8f, Y);

puts
Exibe somente textos. Sintaxe: puts(char *string); Exemplo: #include <stdio.h> void main() { puts("Exemplo de utilizacao"); puts("da funcao"); puts("puts..."); getch(); }

COMENTRIOS EM C/C++
So textos que servem para documentar o programa e totalmente ignorados pelo compilador. Podem ocupar uma (//) ou vrias linhas (/* ..... */) inserindo estes smbolos na frente ou entre os textos comentados. Exemplos: // comentrio /* comentrio1 */

## OPERADORES E FUNES PREDEFINIDAS EM C/C++

Possui operadores e funes predefinidas destinadas a clculos matemticos e manipulao de caracteres.

Matemticos
OPERADOR + * / % ++ -EXEMPLO a+b ab a*b a/b a%b a++ a-EXPLICAO Soma o contedo de a com b. Subtrai o contedo de a pelo valor de b. Multiplica o contedo de a pelo valor b. Divide o valor de a pelo valor de b. Resto da diviso de a por b. Somente usado em valores inteiros. Aumenta o contedo de a em um valor. Diminui o contedo de a em um valor.

Algoritmos

pg. 22

+= -= *= /= %= ^

a += b a -= b a *= b a /= b a %= b a ^b

## a=a+b a=ab a=a*b a=a/ b a= a % b a exponenciao em b.

Os +=, -=, *=, /= e %= so chamados de operadores matemticos de atribuio representa de uma maneira sinttica uma operao aritmtica(+, -, /, *, %) e posteriormente uma de atribuio (=).

Relacionais
OPERADOR == != <= >= < > EXEMPLO a == b a != b a <= b a >= b a < b a>b O O O O O O contedo contedo contedo contedo contedo contedo de de de de de de a a a a a a EXPLICAO igual ao contedo de b. diferente do contedo de b. menor ou igual ao contedo de b. maior ou igual ao contedo de b. menor que o contedo de b. maior que o contedo de b.

Matemticas
FUNO SINTAXE EXPLICAO

ceil cos exp fabs floor log log10 modf pow sin sqrt tan

ceil(a) ceil(3.2) fica 4 cos(a) exp(a) fabs(a) floor(a) floor(3.2) 3 log(a) log10(a) modf(a, b) pow(a, b) sen(a) sqrt(a) tan(a)

Arredonda um nmero real para cima. Calcula o cosseno de a (radianos). Obtm o logaritmo natural elevado a potncia de a. Valor absoluto de a. Arredonda um nmero real para baixo. Logaritmo natural de a. Logaritmo de base 10 de a. Decompe um determinado nmero real em duas partes: a (parte fracionria) e b (parte inteira). Potncia de a elevado a b. Calcula seno de a (radianos). Calcula a raiz quadrada de a. Calcula a tangente de a (radianos).

Lgicos
Permitem que mais de uma condio seja testada em uma nica expresso, ou seja, pode-se fazer mais de uma comparao (teste) ao mesmo tempo. Temos: NO, E, OU e XOR (l-se OU EXCLUSIVO), apresentados em ordem de prioridade, ou seja, se na mesma expresso tivermos o operador OU e depois o operador NO, primeiro ser executado o NO e depois o OU. Operadores: AND OR NOT XOR (E) (OU) (NO) (OU EXCLUSIVO) && || ! ^

AeB

A ou B

no A

A xou B

Algoritmos

pg. 23

F F V V

F V F V

F F F V

F V V V

V V F F

F V V F

EXEMPLO
Faa um algoritmo que calcule em graus Celsius e apresent-la convertida em graus Fahrenheit. A frmula de converso F (9 * C + 160)/5 (F em Fahrenheit e C em Celsius). ALGORITMO DECLARE C, F : real LEIA C F ( 9 * C + 160)/ 5 ESCREVA F FIM_ALGORITMO. Incio

#include <stdio.h> F (9 * C +160)/5 main() { int C, F; F printf("Entre com a temperatura em graus Celsius: "); scanf("%d",&C); F = ((9 * C + 160)) /5; printf("Temperatura em Fahrenheit = %d", F); Fim getch(); }

EXERCCIOS
1. Resolva as expresses abaixo de acordo com os tipos e valores das variveis. 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-----------A++; A +=100; A *= 2; A = --A 200; A = !A ; A = A++ + ++A;

Valor A /*

## ______________________________________ ______________________________________ ______________________________________ ______________________________________ ______________________________________ ______________________________________

Algoritmos

pg. 24

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 usurio, imprima este caractere e o cdigo ASCII correspondente. 5. Faa um programa (pseudocdigo e C/C++) que receba quatro nmeros inteiros, calcule e mostra a soma desses nmeros. 6. Faa um programa (pseudocdigo e C/C++) receba trs notas, calcule e mostre a mdia aritmtica entre elas. 7. Faa um programa (pseudocdigo e C/C++) que receba trs notas e seus respectivos pesos, calcule e exiba a mdia ponderada.

## 8. Faa um programa (pseudocdigo e C/C++) que receba o salrio de um

funcionrio, calcule e exiba o novo salrio com um aumento de 25%. 9. Faa um programa (pseudocdigo e C/C++) que receba o salrio de um funcionrio e o percentual de aumento, calcule e exiba o valor do aumento e o novo salrio. 10. Faa um programa (pseudocdigo e C/C++) que receba o salrio-base de um funcionrio, calcule e mostre o salrio a receber, sabendo-se que esse funcionrio tem gratificao de 5% sobre o salrio-base e paga imposto de 7% sobre o salrio-base. 11. Faa um programa (pseudocdigo e C/C++) que receba o salrio-base de um funcionrio, calcule e mostre o seu salrio a receber, sabendo-se que esse funcionrio tem gratificao de R\$ 50,00 e paga imposto de 10% sobre o salrio-base.

## 12. Faa um programa (pseudocdigo e C/C++) que receba o valor de um

depsito e o valor da taxa de juros e calcule e exiba o valor do rendimento e o valor total depois do rendimento. (BASE * ALTURA) / 2. R2). 15. Faa um programa que receba um nmero positivo e maior que zero, calcule e exiba: a) nmero digitado ao quadrado; b) nmero digitado ao cubo; c) raiz quadrada do nmero digitado; d) raiz cbica do nmero digitado. 16. Faa um programa (pseudocdigo e C/C++) que receba dois nmeros maiores que zero, calcule e mostre um elevado ao outro. 17. Faa um programa (pseudocdigo e C/C++) ps, faa as converses e exiba os resultados: que receba uma medida de

13. Faa um programa que calcule e exiba a rea de um tringulo (AREA = 14. Faa um programa que calcule e mostre a rea de um crculo. (AREA =

Algoritmos

pg. 25

## 23. Cada degrau de uma escada tem n de altura. Faa um programa

(pseudocdigo e C/C++) que receba essa altura e a altura que o usurio deseja alcanar subindo essa escada. Calcule e exiba quantos degraus o usurio dever subir para atingir seu objetivo, sem se preocupar com a altura do usurio. 24. Faa um programa (pseudocdigo e C/C++) que receba o custo de um espetculo teatral e o preo do convvio desse espetculo. Deve calcular e exibir a quantidade de convites que devem ser vendidos para que pelo menos o custo do espetculo seja alcanado.

Podemos fazer com que uma funo chame a si prpria, a isto, chamamos de funo recursiva. Precisamos sempre, ter um critrio de parada, pois este, determina quando a funo deve parar de chamar a si mesma, impedindo que a funo fique infinita. Exemplo: Crie uma funo que calcule o fatorial de um nmero inteiro: #include <stdio.h> int fat(int n) { if (n) return n*fat(n-1); else return 1;
10 11

1 p = 12 polegadas 1 jarda = 3 ps 12 1 milha = 1.760 jardas 13 O custo ao consumidor de um carro novo a soma do preo de fbrica com o percentual de lucro do distribuidor e dos impostos aplicados ao preo de fbrica.

Algoritmos

pg. 26

} 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 no for igual a 0, a funo fat chama a si mesma cada vez com um valor menor e, n=0 o critrio de parada da funo.

Algoritmos

pg. 27

## ESTRUTURA CONDICIONAL (Controle de Fluxo)

ALGORITMOS
SE condio ENTO comando Se a condio for verdadeira o comando executado. Essa condio ser uma comparao que possui dois valores: verdadeiro ou falso. SE condio ENTO INICIO Comando1 Comando2 Comando3 FIM

## ESTRUTURA CONDICIONAL COMPOSTA

SE condio ENTO INICIO FIM SENO INCIO FIM

## comando1 comando2 comando3 comando4

C/C++
SIMPLES - IF
IF (condio) { comando1; comando2; } Se a condio for verdadeira o comando ser executado. Quando h mais de um comando obrigatrio utilizar as chaves ({}). Ex.: Entre com um nmero 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(); }

Algoritmos

pg. 28

COMPOSTA IF/ELSE
if (condio) { comando1; comando2; } else { comando3; comando4; } Se a condio for verdadeira o comando ser executado, caso contrrio (se for falso) ser executado a segunda rotina. As condies devem estar entre parnteses. 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 opo: [ ]\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 opo correta"); getch(); }

## ESTRUTURA CASE - SWITCH

switch (varivel) { 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 varivel para decidir qual case ser executado. E cada case associado a uma varivel. O comando break utilizado para impedir que sejam executados os comandos definidos nos cases seguintes. Quando o valor da varivel no coincidir com aqueles especificados nos cases ser executado em default.

Algoritmos

pg. 29

Exemplo: Criao de menus #include <stdio.h> void main() { char opcao; puts ("MENU"); puts (""); puts ("1. Incluir "); puts ("2. Excluir "); puts ("3. Alterar "); puts ("4. Sair "); printf("Entre com a opo: [ ]\b\b"); opcao = getche(); switch (opcao) { case '1' : printf("\nInclusao"); case '2' : printf("\nExclusao"); case '3' : printf("\nAlteracao"); case '4' : printf("\nSair"); default : puts("\nEscolha uma opcao correta"); } getch(); }

## break; break; break; break; break;

Podem ser: &&, || e ! significam respectivamente e, ou e no (conjuno, disjuno e negao).

EXEMPLO
1. Faa um programa que receba as quatro notas bimestrais de um aluno e
imprima uma mensagem dizendo se est aprovado ou reprovado, se a mdia for maior ou igual a 4. Apresentar junto, a mensagem a mdia do aluno.
ALGORITMO DECLARE bim1, bim2, bim3, bim4, media : real LEIA bim1, bim2, bim3, bim4 media (bim1 + bim2 + bim3 + bim4)/ 4 SE (media >= 5) ENTO ESCREVA Aluno aprovado com mdia: , media SENO ESCREVA Aluno reprovado com mdia: , media FIM_SE FIM_ALGORITMO. #include <stdio.h> int main() { int media, bim1, bim2,bim3, bim4; printf("Entre com as 4 notas bimestrais: "); scanf("%d",&bim1); scanf("%d",&bim2); scanf("%d",&bim3); scanf("%d",&bim4); media = (bim1 + bim2 + bim3 + bim4)/4; if (media >= 5) printf("Aluno aprovado com media %d", media); else printf("Aluno reprovado com media %d", media); getch(); }

Algoritmos

pg. 30

Incio

## bim1, bim2, bim3, bim4

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

media >= 5

Fim

EXERCCIOS
1.
A mdia final de um estudante calculada com base em trs notas atribudas a um trabalho prtico (peso 2), avaliao semestral (peso 3) e exame final (peso 5). A mdia das trs notas dada com base nos pesos. Faa um programa (pseudocdigo e C/C++) que receba as trs notas, calcule, exiba a mdia ponderada e a conceito: MDIA PONDERADA CONCEITO 8,0 10,0 A 7,0 8,0 B 6,0 7,0 C 5,0 6,0 D 0,0 5,0 E Faa um programa (pseudocdigo e C/C++) que receba trs notas de um aluno, calcule e exiba a mdia aritmtica de acordo com a tabela. Para alunos de exame calcule e exiba a nota que dever ser tirada no exame para aprovao, considerando que a mdia no exame 6,0. MDIA PONDERADA MENSAGEM 0,0 3,0 Reprovado 3,0 7,0 Exame 7,0 10,0 Aprovado Faa um programa (pseudocdigo e C/C++) que receba dois nmeros e mostre o maior. Faa um programa (pseudocdigo e C/C++) que receba trs nmeros e mostre em ordem crescente. Faa um programa (pseudocdigo e C/C++) que receba trs nmeros obrigatoriamente em ordem crescente um quarto nmero que no siga esta regra. Exiba os quatro nmeros em ordem decrescente. Faa um programa (pseudocdigo e C/C++) que receba um nmero inteiro e verifique se esse nmero par ou mpar.

2.

3. 4. 5. 6.

Algoritmos 7.

pg. 31

8.

9. 10.

11.

12.

13.

14.

15.

Algoritmos

pg. 32

Acima de 90 G H I

Algoritmos

pg. 33

ESTRUTURA DE REPETIO
ALGORITMOS
NMERO DEFINIDO DE REPETIES (ESTRUTURA PARA)
Utilizada quando sabemos o nmero de vezes em que um trecho do algoritmo deve ser repetido (incrementando de um em um automaticamente). PARA I valor inicial AT valor final FAA INICIO comando1 comando2 comando3 FIM Exemplo: PARA I 1 AT 10 FAA comando1 // ser executado 10 vezes.

## NMERO INDEFINIDO DE REPETIES E TESTE DE INCIO (ESTRUTURA ENQUANTO)

Utilizada quando no se sabe o nmero de vezes em que um trecho do algoritmo deve ser repetido, embora tambm possa ser utilizada quando se sabe esse nmero. H situaes que o teste condicional no incio da estrutura repetio resulta em valor falso na primeira comparao sendo assim os comandos no so executados. ENQUANTO condio FAA INICIO comando1 comando2 FIM Exemplo: x 1 y5 ENQUANTO x < y FAA INCIO xx+2 yy+1 FIM Simulao X Y 1 5 Iniciais 3 6 5 7 7 8 9 9

## NMERO INDEFINIDO DE REPETIES E TESTE NO FINAL (ESTRUTURA REPITA)

Utilizada quando no se sabe o nmero de vezes em que um trecho do algoritmo deve ser repetido, embora tambm possa ser utilizada quando se sabe esse nmero.

Algoritmos

pg. 34

A diferena entre ENQUANTO e REPITA que na ltima os comandos sero repetidos pelo menos uma vez, j que a condio se encontra no final. REPITA Comandos AT condio Os comandos so repetidos enquanto a condio for verdadeira. Exemplo: x1 y5 REPITA xx+2 yy+1 AT x >= y Simulao X Y 1 5 Iniciais 3 6 5 7 7 8 9 9

C/C++
for
Utilizada quando conhecemos o nmero de vezes que um trecho dever ser repetido. Sintaxe: for (i=valor inicial; condio; incremento ou decremento de i) comando; atribudo um valor inicial varivel i que controla o nmero de repeties. Depois uma expresso relacional que quando for falso, finaliza a repetio. Por ltimo, altera o valor da varivel i (incrementando ou decrementando). Exemplo1: for (a=1;a<=20;a++)
printf("Digite um nmero %d", a);

Exemplo prtico: 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(); } Exerccio: Crie um programa que imprima o alfabeto de A at Z.

Algoritmos

pg. 35

break
Utilizado para interrompe qualquer tipo de repetio.

continue
Permite que no se execute o restante do bloco, passando para o prximo. No interrompe o loop apenas para para o prximo sem completar o atual.

while
Utilizada quando o nmero de repetio no fixo. Os comandos sero repetidos at a condio assumir o valor falso. Quando o teste condicional ocorre no incio, a possibilidade da repetio no ser executada, quando a condio for falsa. Sintaxe: WHILE (condio) { comando1; N comando2; .. } S Exemplo: soma todos nmeros inteiros entre 1 e 1000 #include <stdio.h> main() { long i = 1000, soma = 0; while (i) soma += i--; printf("\nSoma encontrada foi %ld", soma); getch(); }

do-while
Utilizada quanto o nmero de repeties necessrias no fixo. Os comandos sero repetidos at a condio assumir valor falso. Nesse tipo de estrutura o teste condicional ocorre no fim, garantindo a execuo de pelo menos uma vez. Sintaxe: do { comandos; } while (condio); Exemplo: Some todos os nmeros inteiros entre 1 e 100: #include <stdio.h> main() { long i = 1000, soma = 0; N do S soma += i--; while (i); printf("\nSoma encontrada foi %ld", soma); getch(); }

Algoritmos

pg. 36

EXEMPLOS
Apresentar o total da soma dos (1+2+3+4+5+6+7++97+98+100).
ALGORITMO DECLARE soma, contador : inteiro soma 0 PARA contador de 1 at 100 passo 1 FAA soma soma + contador FIM_PARA FIM_ALGORITMO #include <stdio.h> int main(void) { int soma, contador; soma = 0; (contador=1;contador<=100;contador++) { soma = soma + contador; } printf("%d", soma); getch(); } for

cem

primeiros Incio

nmeros

inteiros

Soma 0

Soma

fim

EXERCCIOS
1. Um funcionrio de uma empresa recebe aumento salarial anualmente. Sabe-se

Algoritmos

pg. 37

Sabendo-se que essa empresa deseja informatizar sua folha de pagamento, faa um programa que: a) Leia as informaes dos funcionrios, exceto o valor da hora trabalhada, no permitindo que sejam informados turnos nem categorias inexistentes. Trabalhar sempre com a digitao de letras maisculas; b) calcule o valor da hora trabalhada, conforme abaixo: CATEGORIA G G O O TURNO N M ou V N M ou V VALOR DA HORA TRABALHADA 18% do salrio mnimo 15% do salrio mnimo 13% do salrio mnimo 10% do salrio mnimo

Algoritmos

pg. 38

VALOR DA DVIDA R\$ 1000,00 R\$ 1100,00 R\$ 1150,00 JUROS 0 100 150

## % JUROS SOBRE O VALOR INICIAL DA DVIDA 0 10 15 20 25

QTDE PARCELAS 1 3 6 VALOR DA PARCELA R\$ 1000.00 R\$ 366,67 R\$ 191,67

## 17. Faa um programa que determine e exiba os cincos primeiros mltiplos de 3,

considerando nmeros maiores que 0. 18. Faa um programa para calcular a rea de um tringulo. Esse programa no pode permitir a entrada de dados invlidos, ou seja, medidas menores ou iguais a 0. 19. Faa um programa que receba o salrio de um funcionrio chamado Porsidonio. Sabe-se que o funcionrio Godofredo tem um salrio equivalente a um tero do salrio de Porsidonio e ele aplicar seu salrio integralmente na caderneta de poupana, que est rendendo 2% ao ms e Godofredo aplicar seu salrio integralmente no fundo de renda fixa, que est rendendo 5% ao ms. Calcule e exiba a quantidade de meses necessrios para que o valor pertencente a Joo iguale ou ultrapasse o valor pertencente a Carlos.

Algoritmos

pg. 39

VETORES
ALGORITMOS
Vetor ou array uma varivel composta homognea unidimensional formada por uma seqncia de variveis, todas do mesmo tipo, mesmo identificados (nome) e alocadas seqencialmente na memria. Uma vez que as variveis tm o mesmo nome, o que as distingue um ndice que referencia sua localizao dentro da estrutura.

DECLARAO DO VETOR
Declare nome [tamanho] tipo Exemplo: DECLARE x[5] NUMRICO X x[1] 1 2 3 4 5

## ATRIBUINDO VALORES AO VETOR

X[1] 50 X[4] 9 X 1 50 2 3 4 9 5

CARREGANDO UM VETOR
PARA i 1 AT 5 FAA INCIO ESCREVA Digite o , i, nmero LEIA X[i] FIM

C/C++
DECLARAO DO VETOR
Os vetores so identificados pela existncia de colchetes logo aps o nome da varivel no momento da declarao. Dentro dos colchetes deve-se colocar o nmero de posies do vetor. Exemplos: int ver[10]; Este vetor possui 10 posies iniciando com 0 e terminando em 9 em cada posio podemos armazenar nmeros inteiros (int) char x[5]; Este, possui cinco posies, comeando pela posio 0 e indo at a 4.

## ATRIBUINDO VALORES AO VETOR

Exemplos: vet[0] = 1; /*Atribui valor 1 ao primeiro elemento do vetor.*/

Algoritmos

pg. 40

strcpy(nome, Genoveva); Atribui o nome Genoveva ao vetor nome, declarado assim: char nome[6].

CARREGANDO UM VETOR
L os dados do teclado, atribuindo a um vetor. for (i = 0; i <10;i++) cin >> vetor[i];

IMPRIMINDO UM VETOR
for (i=0; i<10;i++) cout << vetor[i]; Exemplo: Receber cinco notas de aluno, calcular a mdia e exibir o resultado: #include <stdio.h> #include <conio.h> int main(void) { int i; float media; float nota[5]; for (i=0; i<5; i++) { printf("\nEntre com a %d nota: ", i+1); scanf("%f", &nota[i]); } media = (nota[0]+nota[1]+nota[2]+nota[3]+nota[4])/5; printf ("\nMedia das notas: %3.1f", media); getch(); }

EXEMPLO
1. Criar um programa que efetue a leitura dos nomes de 20 pessoas e em seguida apresentar na mesma ordem em que foram informados.
ALGORITMO DECLARE nome[20] : caractere i : inteiro PARA i de 1 at 20 passo 1 FAA LEIA nome[i] FIM_PARA PARA i de 1 at 20 passo 1 FAA ESCREVA nome[i] FIM_PARA FIM_ALGORITMO.

incio

i1,20 ,1

nome[i]

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

i1,20 ,1

nome[ i]

fim

Algoritmos

pg. 41

## 2. Receber as notas de cinco alunos, calcular a mdia geral da turma e verificar

quantos conseguiram ficar acima da mdia: ALGORITMO DECLARE soma, media, conta NUMERICO PARA x de 1 AT 5 FAA INICIO LER nota[x] soma soma + nota[x] FIM FIM_PARA Media soma / 10 PARA n de 1 AT 5 FAA SE nota[n] > media Ento Conta conta + 1 FIM_SE FIM_PARA FIM_ALGORITMO. #include <stdio.h> #include <string.h> int main() { int x, conta; double nota[5]; double soma, media; soma = 0.0; media = 0.0; conta = 0; for (x=0;x<5;x++) { scanf("%lf",&nota[x]); soma = soma + nota[x]; } media = soma / x; for (x=0;x<5;x++) { if (nota[x] > media) conta = conta + 1; } printf("%lf %d\n", media); printf("%lf %d\n", conta); getch(); } 3) Exemplo de ordenao de valores (ascendente) utilizando o define. #include <stdio.h> #define tamanho 10 main() { int a[tamanho] = {2, 4, 5, 6, 7, 89, 10, 12, 11,50}; int i, pass, hold; printf ("Itens na ordem original\n"); for (i=0;i<=tamanho-1;i++) printf("%4d",a[i]); for (pass=1;pass<=tamanho-1;pass++) /* passadas */ for (i=0;i<=tamanho-2;i++) /*uma passada*/ if (a[i] > a[i+1]) /* comparao*/

Algoritmos

pg. 42

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

EXERCCIOS
1. Faa um programa que carregue um vetor de nove elementos numricos inteiros, calcule e exiba os nmeros primos e suas respectivas posies. 2. Faa um programa que receba a quantidade de peas vendidas por vendedor e armazene essas quantidades em um vetor. Recebe tambm o preo da pea vendida de cada vendedor e armazene esses preos em outro vetor. Existem apenas 10 vendedores e cada vendedor pode vender apenas um tipo de pea, isto , para cada vendedor existe apenas um preo. Calcule e exiba a quantidade total de peas vendidas por todos os vendedores e para cada vendedor calcule e exiba o valor total da venda (quantidade de peas * preo de pea). 3. Faa um programa que carregue dois vetores de dez elementos numricos cada um e exiba um vetor resultante da intercalao desses dois vetores.
Ve to r1 3 1 Ve to r2 3 5 2 5 4 3 4 2 4 2 2 5 2 5 6 5 3 7 3 2 8 2 5 9 5 9 10 9

10

4. Faa um programa que carregue um vetor com oito nmeros inteiros, calcule e exiba dois vetores resultantes. O primeiro vetor resultante deve contar os nmeros positivos e o segundo, os nmeros negativos. Cada vetor resultante vai ter no mximo oito posies, sendo que nem todas devem ser obrigatoriamente utilizadas. 5. Faa um programa que carrega um vetor com 10 nmeros inteiros. Calcule e exiba um vetor resultante ordenando de maneira decrescente.
X 3 1 5 2 4 3 2 4 1 5 6 6 8 7 7 8 1 1 9 9 1 0 1 1 0

1 1 1

9 2

8 3

7 4

6 5

5 6

4 7

3 8

2 9

6. Faa um programa que no momento de carregar um vetor com oito nmeros inteiros j o carregue de maneira ordenada crescente. 7. Faa um programa que efetue reserva de passagens areas de uma certa companhia. O programa dever ler informaes sobre os vos (nmero, origem e destino) juntamente com o nmero de lugares disponveis para 12 avies (um

Algoritmos

pg. 43

Algoritmos

pg. 44

MATRIZ
DEFINIO
Varivel composta homognea bidimensional formada por uma seqncia de variveis, todas do mesmo tipo com o mesmo identificador (mesmo nome), alocadas seqencialmente na memria. Uma vez que as variveis tm o mesmo nome, o que as distingue so os ndices que referenciam sua localizao dentro da estrutura. Uma varivel do tipo matriz composta por linhas e colunas.

DECLARAO DE MATRIZ
DECLARE nome[linha,coluna] tipo Onde nome o nome da varivel, linha a quantidade de linhas que vo compor a matriz, coluna a quantidade de colunas que vo compor a matriz e tipo o nome do tipo de dados.

EXEMPLO DE MATRIZ
DECLARE a[3, 5] NUMRICO 1 a 1 2 3 a[1,1] a[3,4] 2 3 4 5

## ATRIBUINDO VALORES MATRIZ

Exemplos: a[1,1] 45 1 2 3 a[2,1] 13 a[2,5] 0 1 a 13 -4 2 45 3 a[3,3/ -4 4 5 0

## CARREGANDO UMA MATRIZ

PARA i 1 AT 3 FAA INCIO PARA j 1 AT 5 FAA INICIO ESCREVA Digite o nmero da linha , i, e coluna , j LEIA x[i,j] FIM FIM Ficaria assim: 1 2 3 1 12 15 3 2 9 4 45 3 3 2 3 4 7 34 0 5 -23 -4 -3

Algoritmos

pg. 45

## EXIBINDO OS ELEMENTOS DE UMA MATRIZ

PARA i 1 AT 3 FAA INCIO PARA j 1 AT 5 FAA INICIO ESCREVA x[i,j] FIM FIM

C/C++
Podemos declarar matrizes unidimensionais (vetores), bidimensionais e multidimensionais. O padro ANSI prev, no mnimo, 12 dimenses, entretanto, o limite de dimenses fica por conta da quantidade de recursos disponvel ao compilador. Apesar disso, as mais utilizadas so de duas dimenses.

DECLARAO DE MATRIZ
Sintaxe: tipo_dados nome_varivel [dimensao1] [dimensao2] [...] Exemplo: float x[2] [6]; Como os vetores, os ndices iniciam em 0. temos ento, duas linhas (0 e 1) e seis colunas (0 a 5): 0 x 0 1 1 2 3 4 5

ATRIBUINDO VALORES
x[1] [4] = 5 0 x 0 1 1 2 3 4 5 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

Algoritmos

pg. 46

Para exibir uma matriz declarada como por exemplo, float x[10] [6]: for (i=0;i<10;i++) { for (j=0;j<6;j++) cout << x[i] [j]; } Exemplo: Criar uma matriz de caracteres #include <stdio.h> void main() { int i; char lista_time[][12]={"SANTOS", "CORINTHIANS", "PALMEIRAS", "SAO PAULO", "FLAMENGO"}; for (i=0; i<5; i++) { printf("\nO time de indice %d e: %s", i, lista_time[i]); } getch(); }

EXEMPLOS
1. Ler duas matrizes do tipo vetor, sendo A com 20 elementos e B com 30 elementos. Construir uma matriz C, sendo esta a juno das duas outras matrizes. Desta forma, C dever ter a capacidade de armazenar 50 elementos. Apresentar a matriz C. ALGORITMO DECLARE a[1,20], b,[1,30], c[1,50], i NUMRICO PARA i 1 at 20 FAA LEIA a[i] FIM_PARA PARA i 1 at 30 FAA LEIA b[i] FIM_PARA PARA i 1 at 50 FAA SE (i <= 20) ENTO c[i] a[i] SENO c[i] b[i - 20] FIM_SE FIM_PARA PARA i 1 AT 50 FAA ESCREVA c[i] FIM_PARA FIM_ALGORITMO

Algoritmos

pg. 47 Incio

#include <stdio.h> int main() { int i; double a[20], b[30], c[50]; for (i=0;i<20;i++) { scanf("%lf",&a[i]); } for (i=0;i<30;i++) { scanf("%lf",&b[i]); } for (i=0;i<50;i++) { if (i <=20) c[i] = a[i]; else c[i] = b[i-20]; } for (i=0;i<50;i++) { printf("%lf",c[i]); } getch(); } N

I 1,20

a[ I ]

I 1,30

b[ I ]

I 1,50 S

i<=2 0

c[i] b[i-20]

c[i] a[i]

I 1,50

c[i]

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

Fim

Algoritmos

pg. 48

EXERCCIOS

Algoritmos

pg. 49

## MANIPULANDO CARACTERES EM C/C++

Em C/C++ no 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 posio 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 posio a mais para armazenar o caracteres nulo. Exemplo: ALGORITMO, devemos declarar um vetor do tipo char com 9 posies: char palavra[9] ndice Valor Posio memria ... ... ... 0 A 863 1 L 864 2 G 865 3 O 866 4 R 867 5 I 868 6 T 869 7 M 870 8 O 871 ... ... ...

FUNO strcpy()
Para armazenar uma cadeira de caracteres em uma varivel, usamos uma funo strcpy (varivel, 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 prtico: #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(); }

FUNO strcat()
Sintaxe: strcat(string_destino, string_origem); A origem continuar inalterada e ser anexada ao fim da string destino. Exemplo prtico: #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 contedo */ printf("\n\n%s",str2); getch(); }

FUNO strlen()
Sintaxe: strlen(string); Retorna o comprimento da string fornecida. O terminador nulo no contado. Exemplo prtico: #include <stdio.h>

Algoritmos

pg. 50

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

FUNO strchr()
Sintaxe: strchr(str1, ch) Retorna um ponteiro para a posio da cadeia str1, onde o ch o caractere encontrado pela primeira vez.

FUNO strstr()
Sintaxe: strstr(string1,string2); Retorna um ponteiro para a posio da cadeia str1, onde a cadeia str2 encontrada pela primeira vez.

FUNO strcmp()
Sintaxe: strcmp(string1,string2); Compara a string1 com a string2, se ambas forem idnticas a funo retorna 0, caso contrrio retorna no-zero. Exemplo prtico: #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 so diferentes."); else printf("\n\nA duas strings so iguais."); getch(); }

EXERCCIO
1. Faa 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. Faa um programa que receba uma frase, calcule e exiba a quantidade de palavras na frase digitada. 3. Faa um programa que receba o nome completo de uma pessoa e exiba os nomes intermedirios abreviados. Exemplo: SIMONE MARIA VIANA SIMONE M. VIANA. 4. Faa um programa que receba o nome completo de uma pessoa e reescreva conforme o exemplo: SIMONE MARIA VIANA VIANA, S. M. 5. Faa um programa que receba duas frases e gere uma terceira que representa a combinao das palavras das duas frases lidas. 6. Faa um programa que receba uma frase e coloque as palavras em ordem crescente.

Algoritmos

pg. 51

REGISTROS (Estruturas)
So estruturas que podem agregas diferentes informaes. Assim, so feitas de diferentes combinaes, gerando novos tipos de dados. Um registro uma coleo de campos, em que cada campo pode ser de um tipo de dado diferente. Por isso so conhecidos como variveis compostas heterogneas.

DECLARAO - ALGORITMOS
DECLARE nome_varivel REGISTRO (campo TIPO_CAMPO) Exemplo: DECLARE conta REGISTRO (num, saldo NUMERICO, nome LITERAL) O registro declarado chamado de conta e possui trs campos: num, saldo (NUMRICO) e nome (literal). Conta num saldo nome conta.num conta.saldo conta.nome

## DECLARAO DE REGISTROS EM C/C++

So definidos pela palavra struct. Sintaxe: struct nome_do_tipo_da_estrutura { tipo_1 nome_1; tipo_2 nome_2; ... tipo_n nome_n; } variveis_estrutura; A partir desta estrutura definida podemos considerar a existncia 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 cdigo; char descrio[30]; }

## DECLARAO DE VARIVEIS DO TIPO REGISTRO EM C/C++

Para o programa usar esse novo tipo de dados necessrio declarar uma varivel, por exemplo, produto x ou produto char[10] [6] (matriz bidimensional com 10 linhas e seis colunas). Podemos definir a varivel junto com a estrutura. Exemplo: struct produto { int cdigo; char descrio[30]; } x[8] [5];

## ACESSO A MEMBROS DE ESTRUTURAS

Algoritmos

pg. 52

Aps a declarao da varivel podemos manipular seu contedo, ou seja, valores armazenados em cada membro da estrutura, para isso, informamos o nome da varivel e o campo que ser manipulado. Exemplo: produto x; x.codigo = 1; strcpy(x.descricao, geladeira);

EXEMPLOS
1. Utilizar as estruturas declaradas na seo anterior para escrever um programa que preencha uma ficha. Leitura #include <stdio.h> #include <string.h> struct tipo_endereco { char rua [50]; int numero; char bairro [20]; char cidade [30]; char sigla_estado [3]; long int CEP; }; struct ficha_pessoal { 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(); }

Escrita

EXERCCIOS
1. Faa um programa que realize o cadastro de contas bancrias com as seguintes informaes: nmero da conta, nome do cliente e saldo. O banco permitir o cadastramento de apenas 15 contas e no pode haver mais de uma conta com o mesmo nmero. Crie o menu de opes: MENU DE OPES 1. CADASTRAR CONTAS 2. VISUALIZAR TODAS AS CONTAS DE UM DETERMINADO CLIENTE 3. EXCLUIR CONTA COM MENOR SALDO (no pode haver saldos iguais) 4. SAIR

Algoritmos

pg. 53

## Vetor reordenado com uma posio livre ao final 12 5 9 1

3. ma empresa contratou J 5 funcionrios temporrios. De acordo com o valor das vendas mensais, os funcionrios adquirem pontos que determinaro seus salrios ao final de cada ms. Sabe-se que esses funcionrios trabalharo nos meses de novembro de 2000 a janeiro de 2001. Faa um programa que: a) cadastre os nomes dos funcionrios e suas respectivas vendas mensais; b) calcule e mostre a pontuao geral de cada funcionrio nos trs meses. Sabe-se que R\$ 100,00 equivalem a l ponto; c) calcule e mostre a pontuao geral de todos os funcionrios a cada ms; d) determine e mostre a maior pontuao atingida nos trs meses, mostrando o nome do funcionrio. Desconsiderar empates; e) determine e mostre o valor total vendido.

Algoritmos

pg. 54

ARQUIVOS

DECLARAO EM C/C++
Um arquivo pode representar vrias 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 funes de manipulao de arquivos e definio de novos tipos de dados para serem usados. Os tipos de dados definidos na biblioteca so: size_t, fpos_t e FILE. O FILE identifica um arquivo no disco, direcionando todas as operaes. Exemplo: FILE *arquivo, *ponteiro;

## COMANDOS DE ARQUIVOS EM C/C++

fopen()

Algoritmos

pg. 55

fclose()
Fecha um arquivo aberto, se ocorrer um erro poder haver perda de dados. Sintaxe: int fclose(FILE *arquivo14);

ferror()
Detecta se ocorreu algum erro durante uma operao com arquivos. Sintaxe: int ferror(FILE *arquivo15); Retorna um nmero inteiro, se esse nmero for diferente de zero significa que ocorreu um erro durante a ltima operao realizada com o arquivo apontado por arquivo. Se for 0 no ocorreu erro.

fputc()
Escreve um caractere em um arquivo. Se for bem sucedida retorna o caractere escrito caso contrrio, 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 contrrio, 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 no apenas caracteres ou cadeias de caracteres. Sintaxe: int fwrite(&var, sizeof(double), 1, arquivo);

L qualquer tipo dado e no apenas caracteres ou cadeia de caracteres. Quando for bem sucedida vai gerar como retorno um valor igual ao nmero de leituras realizadas, caso contrrio, 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 endereo especfico, tornando possvel leituras e escritas aleatrias. Sintaxe: int fseek (FILE *arquivo, long quantidade_bytes, int posio); Posio: SEEK_SET: movimentao de qtde_bytes a partir da posio inicial do arquivo; SEEK_CUR: movimentao de qtde_bytes a partir da posio atual do arquivo;
14 15

o ponteiro obtido quando o arquivo for aberto com a funo fopen(). o ponteiro obtido quando o arquivo for aberto com a funo fopen().

Algoritmos

pg. 56

## SEEK_END: movimentao de qtde_bytes a partir da posio final do arquivo.

feof()
Retorna um nmero inteiro. Quando esse nmero for 0 significa que o fim do arquivo ainda no foi atingido e qualquer outro valor significa que foi encontrado.

rewind()
Posiciona o cursor (posio atual) de volta ao incio do arquivo. Sintaxe: void rewind(file *arquivo);

remove()
Apaga um arquivo. Se for executada com xito retorna o nmero 0. Sintaxe: int remove(char *arquivo);

fflush()
Escreva o contedo armazenado no buffer dentro de um arquivo. Sintaxe: int fflush(FILE *arquivo);

exit()
Aborta a execuo do programa. Podemos chamar de qualquer ponto e faz com que o programa termine e retorna para o sistema operacional, o cdigo de retorno. Sintaxe: void exit (int cdigo_retorno); Exemplo: Garante que o programa no 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++

putc
Funo 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*/

Algoritmos

pg. 57

if (!fp) { printf("Erro na abertura do arquivo."); exit(0); } 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); }

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

feof
EOF (end of file fim de arquivo). Usado para verificar se o arquivo chegou ao fim, retornando diferente de zero, caso contrrio 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 no for o final do arquivo*/ printf("%c", c); /*imprime o caractere lido */ fclose(fp); getch(0); }

Permitem ao programador ler e escrever em arquivos da maneira padro com a qual j o havamos lido e escrevidos na tela.

fprintf
Semelhante a funo printf() porm a sada em um arquivo e no no monitor. Especificando um arquivo atravs de um ponteiro. Sintaxe: int fprintf(FILE *arquivo, char *str,...)

fscanf
Semelhante a funo scanf(), l de um arquivo e no de um teclado. Sintaxe: int fscanf(FILE *arquivo, char *str,...)

Algoritmos

pg. 58

EXEMPLOS
1) Crie um programa que abra um arquivo para escrita, feche-o e o abra novamente para leitura: #include <stdio.h> #include <stdlib.h> #include <string.h> int main(void) { FILE *p; char c, str[30], frase[80] = "este um arquivo chamado: "; int i; /* L um nome para o arquivo a ser aberto */ printf("\n\nEntre com um nome para o arquivo: \n"); gets(str); if (!(p = fopen(str,"w"))) /* caso haja erro na abertura do arquivo*/ { printf ("Erro! Impossvel abrir o arquivo!\n"); exit(1); } /* se no 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 no 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 utilizao 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! Impossvel abrir o arquivo!\n"); exit(1); /* aborta automaticamente */ } /* se no 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))

Algoritmos

pg. 59

## { fscanf(p,"%c",&c); printf("%c",c); } fclose(p); getch(); }

EXERCCIOS

Algoritmos

pg. 60

SUB-ROTINAS
Tambm conhecidas como subprogramas, so blocos de instrues que realizam tarefas especficas. O cdigo de uma sub-rotina carregado uma vez e podem ser executadas quantas vezes for necessrio. Dessa maneira, os programas tendem a ficar menores e mais organizados, uma vez que o programa pode ser subdividido em pequenas tarefas. So executados linearmente at o final. Quando executamos sub-rotinas podemos realizar desvios na execuo natural dos programas atravs da chamada da funo pelo programa principal.

ALGORITMO:
Exemplo: recebe o valor do salrio de um funcionrio e calcula o novo salrio. ALGORITMO DECLARE sal NUMERICO LEIA sal aum calculo (sal) novo_sal sal + aum ESCREVA Novo salrio: , novo_sal FIM_AGORTIMO SUB_ROTINA calculo(sal NUMERICO) DECLARE perc, valor LEIA perc valor sal * perc/100 RETORNE valor FIM_SUBROTINA calculo

## SUB-ROTINAS (FUNES) EM C/C++

Utiliza recursos de modularizao, o qual podemos particionar em sub-rotinas. Estruturas que permitem ao usurio separar seus programas em blocos. Se no as tivssemos, os programas teriam que ser curtos e de pequena complexidade. Sintaxe: tipo_retorno nome_funo(declarao dos argumentos) { corpor_da_funo } Onde: o tipo de retorno o tipo de varivel que a funo vai retornar. O default int. argumentos so declarados assim: tipo nome1, tipo nome2,..., tipo nomeN. No corpo feita todas as entradas a serem processadas e as sadas. Exemplo: int soma(int a, int b) { s = a + b; return s; }

COMANDO RETURN

Algoritmos

pg. 61

Encerra a execuo da funo e, se o valor de retorno for informado, a funo retorna essa valor (precisa ser compatvel com o tipo de retorno declarada para a funo). Pode ter mais de um return. Sintaxe: return valor_retorno ou somente return; Exemplo: Criar uma funo que calcule a rea de um quadrado. #include <stdio.h> int quadrado(int a) { return (a * a); } int main() { int num; printf("Entre com um numero: "); scanf("%d", &num); num=quadrado(num); printf("\n\nO quadrado vale: %d\n", num); getch(); }

EXERCCIOS
1. Faa uma funo que retorne 1 se o nmero digitado for positivo ou 0 se o nmero for negativo. 2. Faa uma funo que receba dois nmeros positivos por parmetro e retorna a soma dos N nmeros inteiros existentes entre eles. 3. Faa uma funo que receba trs nmeros inteiros: A, B e C, onde A maior que 1. A funo deve somar todos os inteiros entre B e C que sejam divisveis por A (inclusive B e C) e retornar o resultado para a funo principal. 4. Faa uma funo que transforme e exiba segundos em horas, minutos e segundos. Todas as variveis devem ser passadas como parmetro, no havendo variveis globais. 5. Faa um procedimento que receba trs notas de um aluno como parmetros e uma letra. Se a letra for A o procedimento calcula a mdia aritmtica das notas do aluno, se for P o procedimento calcula a mdia ponderada, com pesos 5, 3 r 2. A mdia calculada deve ser devolvida ao programa principal para ento, ser exibida. 6. Faa um procedimento que leia cinco valores e retorne o maior e o menor deles. 7. Faa uma funo que receba, por parmetro, dois vetores de dez elementos inteiros positivos e exiba o vetor unio dos dois primeiros. 8. Faa uma funo que receba, por parmetro, um vetor A com cinco nmeros reais e retorne esses nmeros ordenados em ordem crescente. 9. Faa uma funo que receba dois vetores A e B de dez elementos inteiros, por parmetro. O procedimento deve determinar e exibir um vetor C que contenha os elementos de A e B em ordem decrescente. 10. Faa uma funo que receba por parmetros, uma matriz A(5,5) e retorne a soma dos elementos. 11. Faa uma funo que receba por parmetros, uma matriz A(6,6) e retorne o menor elemento da sua diagonal secundria. 12. Faa uma funo que receba por parmetros, uma matriz A(6,6) e multiplique cada linha pelo elemento da diagonal principal daquela linha. A funo deve retornar a matriz alterada para ser exibida no programa principal.