You are on page 1of 216

Lgica de Programao

Teoria e Prtica com Linguagem C

INTELLECTUALE TECNOLOGIA E TREINAMENTO

Prof. Eduardo Casavella

www.intellectuale.com.br

O que Lgica de Programao?

Lgica de Programao a tcnica de criar sequncias lgicas de aes para realizar uma determinada tarefa que ser executada por um programa de computador.

Algoritmo
Algoritmo uma sequncia finita de passos que visa atingir um determinado objetivo. Tipos de algoritmos:
Descrio narrativa Diagrama de blocos Pseudocdigo

Instrues
Instrues so um conjunto de regras ou normas definidas para a realizao ou emprego de algo. No jargo da informtica, uma instruo o que indica a um computador uma ao elementar a executar.

Sequncia Lgica

Sequncia Lgica so passos executados at atingir um objetivo ou soluo de um problema. necessrio escrever um conjunto de instrues na sequncia lgica, ou seja na ordem adequada para solucionar o problema.

Regras para a construo de algoritmos


Usar somente um verbo por frase; Ser objetivo; No utilizar palavras que possam ter duplo sentido. Sempre que possvel usar frases curtas.

Descrio Narrativa:
Consiste em analisar o problema ou tarefa e escrever usando a lngua portuguesa os passos a serem seguidos para resolver o problema, ou realizar a tarefa.
Vantagem: A lngua bem conhecida. Desvantagem: A lngua portuguesa permite vrias interpretaes, o que pode dificultar a transcrio do algoritmo para o programa.

Exemplo de Descrio narrativa: Ir para a escola


Acordar s 6 horas. Tomar banho. Secar-se. Escolher uma roupa no armrio. Vestir-se. Tomar caf. Sair de casa. Pegar onibus. Descer prximo escola. Entrar na escola.

Exerccio Descrio Narrativa


Elaborar a descrio narrativa para trocar uma lmpada

Diagrama de blocos
Consiste em analisar o problema e utilizar elementos grficos previamente definidos para representar os passos a serem executados para alcanar a soluo. Vantagens: Os elementos grficos so de fcil entendimento. Desvantagem: necessrio aprender a simbologia utilizada, e o diagrama no representa muitos detalhes, o que dificulta a transcrio para o programa.

Exemplo de diagrama de blocos


Diagrama de blocos para executar a tarefa de chupar uma bala.

Pseudocdigo
Consiste em escrever por meio de regras previamente definidas, os passos a serem seguidos para resolver um problema. Vantagem: O algoritmo em pseudocdigo bem prximo da linguagem de programao, o que facilita a transcrio para o programa. Desvantagem: necessrio aprender as regras do pseudocdigo.

Do algoritmo ao programa
Seqncia Lgica (Diagrama de Blocos) Algoritmo (Pseudocdigo) Linguagem de Programao Programa Executvel.

Solucionando Problemas
Devemos ter em mente que um algoritmo no a nica soluo de um problema. Diversos algoritmos podem levar a soluo de um mesmo problema. Ao identificar a melhor maneira de resolver o problema estaremos otimizando o algoritmo.

Formas de representao de algoritmos


Existem diversas formas para representar um algoritmo, por exemplo:
Usando uma lngua (portugus, ingls); Usando uma linguagem de programao; Utilizando formato grfico (Diagrama de Blocos); Pseudocdigo (Portugus Estruturado ou Portugol).

Pseudocdigo
uma representao de algoritmo feita utilizando comandos em lngua portuguesa.

Programa de computador
um algoritmo que ser executado por um computador. A particularidade do programa de computador que as instrues executadas so especficas para o computador.

Linguagem de Programao
A linguagem de programao o conjunto de instrues que o processador do computador entende. As instrues de uma linguagem de programao tambm so chamadas de comandos. So exemplos de linguagem de programao: Cobol, C, C++, C#, Pascal, Object Pascal (Delphi), Java, Visual Basic, etc.

Como construir um algoritmo?


Primeiramente devemos identificar claramente qual o problema a ser resolvido. Para resolver o problema e construir o algoritmo precisamos responder trs perguntas bsicas:
O que eu preciso? Como chegar ao resultado? Qual o resultado desejado?

Entrada, processamento e sada

ENTRADA

PROCESSAMENTO

SADA

Entrada: So os dados necessrios para iniciar a resoluo do problema.

Processamento: So os procedimentos para chegar ao objetivo.

Sada: So os dados processados, ou seja, o resultado ou os resultados.processados dados processados

O processo de programao
Vejamos como ocorre o processo de programao: Criamos a lgica do programa em pseudocdigo ou em diagrama de blocos. Transcrevemos a lgica do programa em uma linguagem de programao. Aps a digitao do cdigo em linguagem de programao, executamos a compilao do programa. Se a codificao estiver correta o programa ser compilado com sucesso e convertido em linguagem de mquina (0 e 1), ou seja linguagem que o processador entende. Nesse momento gerado um programa executvel (.exe).

Simbologia bsica para fluxogramas

Exerccio
Elaborar o pseudocdigo para calcular a mdia aritmtica de um aluno que realizou duas provas.

Linguagem de Mquina
Um computador transforma cada instruo da linguagem empregada na construo de um programa em sequncias de cdigos que sero executadas pelo microprocessador. Essas sequncias de cdigos esto em formato binrio, ou seja: sequncia de dgitos zero e um. A combinao desses cdigos determina qual conjunto de aes (instrues) sero executadas pela mquina.

Exemplo de cdigo binrio


Configurao binria para armazenar o nmero 7995:
1111100111011

Hexadecimais
Os primeiros computadores exigiam a codificao em cdigo de mquina, isto tornava a tarefa de programao extremamente trabalhosa. A fim de facilitar o processo de programao essa sequncia de zeros e uns da codificao binria pode ser convertida para cdigos hexadecimais. Isto facilita um pouco, porm no muito. Vejamos um exemplo:
Para convertermos 7995 para hexadecimal teramos o valor: 1F3B.

Linguagem Assembly
Foi a primeira linguagem de programao. Para cada instruo em Assembly tem uma correspondncia em cdigo de mquina. uma linguagem de difcil utilizao, porm extremamente rpida. Exemplo de cdigo em Assembly:
MOV DX 10C0 INT 21 MOV BX, [002C] CALL 01AC

Tipos de Linguagens
Podemos classificar as linguagens de programao em dois tipos:
1. Linguagens de alto nvel.
So mais prximas das linguagem humana. Possuem comandos de fcil assimilao. Ex: Pascal, C, C++, C#, Visual Basic, Java.

2. Linguagens de baixo nvel.


Aproximam-se do cdigo de mquina. Ex: Assembly.

Variveis
Variveis so locais na memria reservados para armazenar informaes. Uma varivel composta por dois elementos:
1. Contedo: valor da varivel. 2. Identificador: nome dado varivel para possibilitar sua manipulao.

Regras para criao de identificadores


Os identificadores, como o prprio nome diz, servem para identificar variveis. O primeiro caracter de um identificador deve ser obrigatoriamente uma letra, os demais caracteres podem ser letras ou nmeros. No permitido o uso de smbolos ou de sinais de pontuao, exceto o caracter _.

www.intellectuale.com.br

Tipos de variveis
Numricas: basicamente dividem-sem em: Inteiro: armazena nmeros inteiros Reais: armazena nmeros com casas decimais (ponto flutuante); Caracter: So variveis alfanumricas ou seja, conjuntos de caracteres (letras, dgitos ou smbolos) que devem ser colocados entre aspas.
www.intellectuale.com.br

Declarao de variveis
Ao declarar uma varivel, reservamos um espao na memria que armazenar o valor da varivel de acordo com o tipo da mesma. Esse espao referenciado por um identificador. Exemplo: Var Total:Real;
www.intellectuale.com.br

Comando de atribuio
Atribuio significa armazenar um valor em uma varivel. Exemplo: Atribuindo o valor 10 para a varivel X. X 10; Em linguagem C usamos o operador = para atribuir. X=10;
www.intellectuale.com.br

Declarao de variveis em linguagem C Exemplos


Em C devemos listar primeiro o tipo, depois o nome da varivel. Sintaxe: <tipo> <nome_da_varivel>; Declarando uma varivel inteira: int Quant; Declarando uma varivel Real: float Media; Declarando uma varivel do tipo caracter: char letra;
www.intellectuale.com.br

Constantes

So valores que so armazenados na memria do computador e permanecem os mesmos do incio ao fim do programa.

www.intellectuale.com.br

Entrada de dados
Os dados entram no computador por meio dos perifricos de entrada (como teclado, leitor de cdigo de barras, telas sensveis ao toque, etc). Na maioria dos nossos exemplos e exerccios, vamos supor que o usurio vai entram com os dados utilizando um teclado.

www.intellectuale.com.br

Exemplo entrada de dados


Pseudocdigo: Para armazenar um valor de entrada de dados feito via teclado usamos o comando: Leia(varivel); ou Receba(varivel); Representao no diagrama de blocos:
varivel

www.intellectuale.com.br

Sada de dados
Os dados saem do computador utilizando perifricos de sada de dados (monitor, impressora, etc). Na maioria de nossos exemplos e exerccios, vamos supor que os dados estejam saindo para o monitor, e certas vezes, para a impressora ou sendo gravados em um meio externo de armazenamento.
www.intellectuale.com.br

Exemplo sada de dados


Pseudocdigo: O comando escreva realiza a sada de dados, mostrando a mensagem no vdeo. Exemplo: Escreva(Bom Dia!); Representao no diagrama de blocos:
Bom Dia!

www.intellectuale.com.br

Expresses aritmticas

So as expresses que utilizam operadores aritmticos ou funes que envolvem o uso de variveis numricas ou constantes.

www.intellectuale.com.br

Operadores aritmticos

www.intellectuale.com.br

Prioridade entre operaes aritmticas

1.Potenciao, radiciao 2.Multiplicao, diviso 3.Adio, subtrao

www.intellectuale.com.br

Expresses relacionais

So expresses compostas por expresses ou variveis com operadores relacionais. As expresses relacionais retornam lgicos, ou seja: Verdadeiro ou Falso. valores

www.intellectuale.com.br

Operadores Relacionais

www.intellectuale.com.br

Operador relacional de igualdade

No confunda o operador relacional == que representa o valor de igualdade de comparao entre dois elementos com o smbolo de atribuio =.
www.intellectuale.com.br

Expresses lgicas

Denominamos expresses lgicas s expresses compostas por expresses relacionais com operadores lgicos. Expresses relacionais retornam valores lgicos.

www.intellectuale.com.br

Operadores Lgicos

www.intellectuale.com.br

Tabela da verdade - Operadores Lgicos

p
verdadeiro verdadeiro falso falso

q
verdadeiro falso verdadeiro falso

pEq
verdadeiro falso falso falso

p OU q
verdadeiro verdadeiro verdadeiro falso

www.intellectuale.com.br

Introduo Programao com Linguagem C

www.intellectuale.com.br

Estrutura de um programa em C
#include <stdio.h> //biblioteca padro main ( ) //esta funo principal de qualquer programa C { // inicia o corpo da funo (BEGIN) comandos ou corpo da funo } // termina a funo (END) Observe que a funo main ( ) sempre vai existir em um programa escrito em C.
www.intellectuale.com.br

Usando printf para escrever na tela


#include <stdio.h> main ( ) { // Incio // escrevendo uma mensagem na tela printf ("Ol Mundo!"); } // Final
www.intellectuale.com.br

Arquivo stdio.h
A linha #include <stdio.h> uma diretiva que informa ao compilador que ele deve incluir o arquivo (tambm chamado de bilioteca padro) stdio.h (Standard Input Output), pois nele existem definies de funes de I/O (entrada e sada padro). O arquivo stdio.h possui as funes: printf() usada para a sada de dados scanf() usada para entrada de dados
www.intellectuale.com.br

Padro ANSI C
Vejamos um programa escrito de acordo com a padronizao ANSI C: #include <stdio.h> int main(void) // funo main como int e retorno void { printf ("Ol Mundo!"); return(0); // retornando um valor zero para main }
www.intellectuale.com.br

Vantagem de seguir padro ANSI C


Observe que main definida como uma funo inteira, ento ideal incluir a linha com o return 0 para a funo antes de fechar chaves e terminar o programa. Fazendo isso evitamos receber mensagens do compilador dizendo que a funo tem que ter algum valor de retorno ao compilar o programa. Embora no seja errado escrever fora do padro ANSI C ou seja,o programa vai compilar e funcionar, alguns compiladores informam mensagens de advertncia caso voc no siga o padro.
www.intellectuale.com.br

Usando printf para um caracter e para string


#include <stdio.h> int main (void) { printf ("O caracter %c ", 'A'); printf ("a palavra %s.", "anta"); } return 0;

O cdigo de formatao para representar apenas um caracter %c. Para representar uma string, ou seja, uma sequncia de caracteres usamos %s.
www.intellectuale.com.br

Diferena entre e '


Observe no programa anterior que 'A' apenas um caracter e est representado entre apstrofes e a palavra "anta" representa uma cadeia de caracteres e est entre aspas. Isto feito para diferenciar um caracter de uma string, ou seja, uma cadeia de caracteres.

www.intellectuale.com.br

A funo printf()
Forma geral: printf (string_de_controle, lista_de_argumentos); A string de controle uma descrio de tudo que a funo vai colocar na tela. A string de controle mostra no apenas os caracteres que devem ser colocados na tela, mas tambm quais as variveis e suas respectivas posies. Isto feito usando-se os cdigos de controle, que usam a notao %. Na string de controle indicamos quais, de qual tipo e em que posio esto as variveis a serem apresentadas. muito importante que, para cada cdigo de controle, tenhamos um argumento na lista de argumentos.
www.intellectuale.com.br

Cdigos para impresso com printf


Principais cdigos para impresso formatada da funo printf ( ) e o que eles realmente expressam. Cdigo | %d | %f | %c | %s | %e | %g | Significado Inteiro (nmero inteiro decimal) Float (nmero reais) Caractere String (sequencia de caracteres) Nmero em notao cientfica Efetua a escrita de %e ou % f, no formato mais curto.
www.intellectuale.com.br

Funo scanf()
Permite realizar entrada de dados atravs do teclado.Requer a utilizao dos cdigos de formatao de tipos de variveis. scanf (string_de_controle, lista_de_variveis); printf (Digite um nmero: ); scanf (%f , &N1); Na funo scanf( ) utiliza-se o & (e comercial) antes de cada varivel para indicar o endereo de memria no qual o contedo da varivel estar armazenado. Este de uso obrigatrio quando tratamos variveis do tipo numrica (inteira ou real).
www.intellectuale.com.br

Regras para identificadores de variveis


O nome de uma varivel deve descrever o que ela armazena. Caso o nome seja composto utilize o _ (underscore) para ligar as palavras ou a diferena entre maisculas e minusculas para facilitar a leitura. O primeiro caracter de uma varivel jamais pode ser um nmero. No permitido usar palavras reservadas da linguagem como nome de variveis. Por exemplo no podemos chamar uma varivel de if.

www.intellectuale.com.br

Exerccio

Elabore um programa para somar dois nmeros e exibir o resultado na tela.

www.intellectuale.com.br

Programa para adicionar dois nmeros em C


#include <stdio.h> int main(void) { int A, B, Soma; // declarao de variveis inteiras printf("Digite um numero inteiro: "); scanf("%d", &A); // recebe um inteiro decimal e armazena na variavel A printf("Digite um numero inteiro: "); scanf("%d", &B); // recebe um inteiro decimal e armazena na variavel B Soma = A + B; // Efetua adio de A com B e armazena na var. Soma printf("O valor e = %d", Soma); // Mostra mensagem com o resultado printf("\n"); // desloca o cursor para prxima linha; system("PAUSE"); // parada de tela return(0);

www.intellectuale.com.br

Exerccio
Calcular o valor do salrio lquido de um profissional horista, j calculados os descontos. Suponha que o usurio vai digitar um valor percentual para definir o desconto.

www.intellectuale.com.br

#include <stdio.h> #include <stdlib.h> int main(void) { float HorasTrab, ValorHora, PercDesc, TotalDesc, SalBruto, SalLiq; // Entrada: Recebendo variveis de entrada printf("Quantas horas de trabalho? "); scanf("%f", &HorasTrab); printf("Qual o valor da hora? "); scanf("%f", &ValorHora); printf("Qual o percentual de desconto? "); scanf("%f", &PercDesc); // Processamento: Efetuando clculo do salrio SalBruto = HorasTrab * ValorHora; TotalDesc = (PercDesc/100) * SalBruto; SalLiq = SalBruto TotalDesc; //Sada: Mostrando resultados na tela printf("Salario Bruto ....: %f\n", SalBruto); printf("Desconto .........: %f\n", TotalDesc); printf("Salario liquido ..: %f\n", SalLiq); system("PAUSE"); return(0); www.intellectuale.com.br

Formatando a preciso de valores com ponto flutuante


Para formatar um float, colocamos antes do f na expresso de controle o total de casas a serem apresentadas e o total de casas decimais. Assim temos por exemplo: %8.2f que significa mostrar valores com um total de 8 digitos, sendo que destes oito, dois deles so decimais. O ponto tambm ocupa um dgito. Neste caso temos 5 casas para a parte inteira, e duas casas decimais. printf("Salario Bruto : %8.2f \n", SalBruto); printf("Desconto : %8.2f \n", TotalDesc); printf("Salario Liquido ..: %8.2f \n", SalLiq);
www.intellectuale.com.br

Estruturas de deciso ou Estruturas condicionais

www.intellectuale.com.br

Estrutura Condicional SE simples Pseudocdigo


Sintaxe:
Se (condio) ento {Instruo1}; Neste exemplo somente uma instruo ser executada quando a condio for verdadeira, por isso no h necessidade de colocar incio e fim. Se (condio1) ento incio {InstruoA}; {InstruoB}; Fim; Quando for necessrio executar mais que uma instruo, devemos obrigatoriamente escrever incio no comeo do bloco de instrues que ser executado e fim; ao terminar o bloco.

www.intellectuale.com.br

Estrutura Condicional SE Simples Diagrama de Blocos

Condio

Instrues

www.intellectuale.com.br

Estrutura Condicional SE simples


Exemplo: Se (N1 > N2) Incio Escreva (N1 o maior); Fim; Observe que o comando s ser executado quando a condio for Verdadeira, caso contrrio, nada ser feito, e o programa segue seu fluxo para a prxima instruo.
www.intellectuale.com.br

N1 > N2

Escreva ("O maior N1")

Estrutura de deciso simples Linguagem C - if


Em Portugus Estruturado temos: Se (condio) ento Incio instruo ou instrues para condio verdadeira; Fim; Em linguagem C o equivalente : if (condio) { instruo ou instrues para condio verdadeira; }
www.intellectuale.com.br

Exerccio estrutura de deciso if

Elabore o diagrama de blocos, o algoritmo e o programa que receba dois valores e depois mostre-os na tela em ordem decrescente.

www.intellectuale.com.br

Estrutura condicional SE composta


Pseudocdigo
Sintaxe:
Se (condio) ento Incio {instrues} Fim Seno Incio {instrues} Fim; Na estrutura SE composta, temos instrues a serem executadas quando a condio for Verdadeira e tambm quando for falsa.

A comando Seno determina o que ser feito quando a condio for Falsa.

www.intellectuale.com.br

Estrutura Condicional SE composta Diagrama de Blocos


F Condio V

Instrues

Instrues

www.intellectuale.com.br

Estrutura Condicional SE composta

Exemplo: Se (N1 > N2 ) ento Maior N1; seno Escreva (N2 o maior ou so iguais.);
F N1 > N2 V

Escreva ("O N2 maior ou so iguais")

Maior = N1

www.intellectuale.com.br

Estrutura de deciso composta Linguagem C - if else


Em Portugus Estruturado temos: Se (condio) ento Incio instruo ou instrues para condio Verdadeira; Fim Seno Instruo ou instrues para condio Falsa; Em linguagem C o equivalente : if (condio) { instruo ou instrues para condio Verdadeira; } else instruo ou instrues para condio Falsa;
www.intellectuale.com.br

Exerccio - if...else
Elabore o diagrama de blocos, o algoritmo e um programa que receba duas notas e calcule a mdia do aluno. Caso a mdia seja igual ou superior a 7,0 mostrar mensagem: Aluno Aprovado, seno mostrar mensagem Aluno Reprovado.

www.intellectuale.com.br

Estrutura Condicional SE Encadeada


Existem situaes onde precisamos testar vrias condies interdependentes a fim de poder executar determinadas instrues. Para ,tal, podemos encadear comandos SE. Se (condio 1) ento Se (condio2) ento Instruo A; Seno Instruo B; Seno Instruo C;

www.intellectuale.com.br

Estrutura Condicional Se Encadeada Diagrama de Blocos


F Condio V

F Instrues

Condio

Instrues

Instrues

O O

www.intellectuale.com.br

Estrutura Condicional SE Encadeada Exemplo


Se (N1 < > N2) ento Se (N1 > N2) ento Maior N1; Seno Maior N2; Seno Escreva (Os nmeros so iguais);

www.intellectuale.com.br

Estrutura Condicional SE Encadeada Exemplo


F N1 < > N2 V

Escrev a ("Os nmeros so iguais")

N1 > N2

Maior = N2

Maior = N1

O O

www.intellectuale.com.br

if encadeado linguagem C
if (condio) { comandos; } else if (condio) { comandos; } else if (condio) { comandos; } else { comandos; }

www.intellectuale.com.br

Mltipla Escolha com SE


Em certos casos, uma varivel assume somente um valor para cada estrutura SE, sendo que as instrues a serem executadas dependem do valor da varivel. Nesse caso, podemos usar vrias estruturas SE, uma aps a outra. Se (condio1) ento incio Sintaxe: {InstruoA}; Se (condio1) ento {InstruoB}; {Instruo}; fim;

Se (condio2) ento {Instruo}; Se (condio3) ento {Instruo};

Se (condio1) ento incio {InstruoC}; {InstruoD}; fim; Se (condio3) ento incio {InstruoE}; {InstruoF}; fim;

www.intellectuale.com.br

Mltipla escolha com SE


Execuo da instruo
Se (X = 1) ento Escreva (Um); Se (X = 2) ento Escreva (Dois); Se (X = 3) ento Escreva (trs);

F X=1

UM

F X=2

DOIS

V X=3

TRS

www.intellectuale.com.br

Estrutura Condicional de Mltipla Escolha ESCOLHA/CASO


A estrutura ESCOLHA...CASO uma variao simplificada da estrutura SE, muito utilizada na construo de menus.

A estrutura compara o contedo de uma varivel com um valor constante, e caso a comparao resulte verdadeira, uma determinada ao realizada. No so aceitas expresses condicionais, somente valores constantes.
www.intellectuale.com.br

Estrutura Condicional ESCOLHA/CASO


Sintaxe: Escolha (Varivel) Inicio Caso (Valor1): Instrues; Caso (Valor2): Instrues; Caso (ValorN): Instrues; Fim;

www.intellectuale.com.br

Estrutura Condicional Escolha/Caso


Exemplo de execuo da instruo: Escolha (A) Incio Caso (1): Escreva (Um); Caso (2): Escreva (Dois); Caso (3): Escreva (Trs); Fim;

www.intellectuale.com.br

Estrutura Condicional Escolha/Caso Diagrama de Blocos

Varivel

Instrues

Instrues

Instrues

www.intellectuale.com.br

Estrutura Condicional Escolha/Caso Diagrama de Blocos

Escreva ("Um")

Escreva ("Dois")

Escreva ("Trs")

www.intellectuale.com.br

Linguagem C Estrutura switch ...case


switch (varivel) { case constante1: comandos; break; case constante2: comandos; break; default } comandos;
www.intellectuale.com.br

Exemplo switch...case
#include <stdio.h> #include <stdlib.h> int main (void ) { char opcao; puts ("Entre com uma letra:"); opcao = getchar( ); switch ( opcao ) { case 'A' : printf ("Letra A\n"); break; case 'B' : printf ("Letra B\n"); break; case 'C' : printf ("Letra C\n"); break; default : printf ("No e A, B, nem C\n"); } system("PAUSE"); www.intellectuale.com.br return 0; }

Estruturas de Repetio

www.intellectuale.com.br

Estruturas de Repetio
Uma estrutura de repetio nos auxilia quando preciso repetir certos comandos de um algoritmo um determinado nmero de vezes. Estudaremos as estruturas de repetio: PARA ENQUANTO FAA...ENQUANTO Como determinar qual a estrutura mais adequada para determinado programa?

Para determinar a estrutura mais adequada para um caso especfico, preciso saber o nmero de vezes que o trecho do programa ser repetido ou ento conhecer a condio para que a repetio ocorra.
www.intellectuale.com.br

Controlando o nmero de repeties


Quando conhecemos previamente quantas vezes o conjunto de instrues ser repetido, podemos usar uma varivel contador, a fim de controlar a estrutura. O contador controla a repetio da estrutura at que o seu valor atinja o limite estipulado na condio da estrutura de repetio. Depois que o limite ultrapassado, ele deixa de executar as instrues seguindo o fluxo do programa.

www.intellectuale.com.br

Contador
uma varivel cujo contedo alterado pelo seu prprio valor adicionado ou subtrado de uma determinada constante (normalmente o valor da constante 1). O contador muito utilizado para contar a quantidade de vezes que o programa executa as instrues de uma estrutura de repetio. Exemplo: Cont Cont + 1;
www.intellectuale.com.br

Acumulador
a varivel cujo valor alterado pelo seu prprio valor adicionado do valor de outra varivel. Para evitar erros nos clculos, o acumulador dever ser iniciado com um valor zero. Sintaxe: NomeAcumulador NomeAcumulador + Varivel; Exemplo: Acum Acum + Valor; muito comum a utilizao de acumuladores dentro de laos, a fim de acumular um valor para fazer um teste, ou um clculo depois de sair do lao.
www.intellectuale.com.br

Simbologia para estruturas de repetio


O smbolo define onde a condio que controla o loop ser testada.

www.intellectuale.com.br

Estrutura de Repetio PARA


(Repetio controlada por contador)

Estrutura de repetio que utiliza varivel para controlar a contagem do loop, que ocorre de forma automtica na prpria estrutura. bem enxuta, pois a prpria estrutura se encarrega de iniciar, incrementar e encerrar a varivel que controla o lao de repetio. a estrutura mais indicada quando se conhece previamente o nmero de vezes que a repetio ser executada.
www.intellectuale.com.br

Estrutura de Repetio PARA


Para (Varivel = Valor Inicial at Valor Final passo + n) faa Incio {instrues} Fim;
Varivel = Incio, Fim, Passo

Observaes: O passo o valor que ser incrementado, ou decrementado a cada repetio no contador que controla o loop. Normalmente, quando o passo + 1, no precisa ser declarado, e o incremento +1 ser assumido automaticamente.
www.intellectuale.com.br

Instrues

Estrutura de Repetio Para


Exemplo de execuo da instruo:
Para (I = 1 at 10) faa Incio X = Y; Z = X; Fim;
Neste exemplo, o passo +1 e portanto foi omitido. O valor de da varivel de controle I incrementado cada vez que ocorre uma repetio, logo esta estrutura efetuar 10 repeties.
www.intellectuale.com.br
Varivel = Incio, Fim, Passo

Instrues

Estrutura de repetio FOR Linguagem C


Executa um conjunto de instrues, um determinado nmero de vezes, enquanto uma varivel de controle incrementada ou decrementada a cada passagem pelo loop. for(valor_inicial; condio_final; valor_incremento) comando;
www.intellectuale.com.br

Exerccio usando for

Faa um programa em linguagem C que calcule a tabuada de multiplicao para um nmero digitado pelo usurio.

www.intellectuale.com.br

/* Tabuada For */ #include <stdio.h> #include <conio.h> int main(void) { int I,Numero, Res; printf("Digite o valor para calcular a tabuada "); scanf("%d",&Numero); for (I = 1; I <= 10; I++) { Res = Numero * I; printf("%d X %d = %d ",Numero, I, Res); printf("\n"); } getch(); return(0); }
www.intellectuale.com.br

Conceito de Flag
Nem sempre possvel usar um contador para finalizar uma repetio. Existem casos em que no sabemos de antemo quantas vezes a repetio ser feita, pois o usurio quem vai decidir isso. Nesses casos utilizamos um flag. Chamamos de flag ao evento que deve ocorrer com a varivel de controle para indicar a finalizao de uma estrutura de repetio. Por exemplo, podemos fazer uma repetio, que ser realizada enquanto o valor da varivel de controle for diferente de 'S'.
www.intellectuale.com.br

Exemplo de flag
Neste trecho de algoritmo, o usurio decide quando deve sair ao teclar o caracter S para a varivel Resp. Quando este evento ocorre, a repetio finalizada. Faa Incio Escreva(Digite o nome do cliente: ); Receba(Cliente); Escreva(Tecle S para sair ou C para novo cadastro: ); Receba(Resp);

Fim Enquanto (Resp <> 'S');

www.intellectuale.com.br

Estrutura de repetio ENQUANTO


(Teste lgico no incio do lao)

Esta estrutura testa uma condio no incio do lao e pode executar um determinado nmero de instrues, enquanto a condio verificada para a varivel de controle permanecer verdadeira. Quando a condio se tornar falsa, o processamento desviado para fora do lao. Caso a condio seja falsa logo no incio, as instrues do lao so ignoradas.
www.intellectuale.com.br

Estrutura de Repetio ENQUANTO


Iniciar varivel de controle

Sintaxe: {Iniciar a varivel de controle} Enquanto (condio for verdadeira)faa Incio {instrues} {Atualizar a varivel de controle} Fim;
Atualizar varivel de controle Condio V

Instrues

www.intellectuale.com.br

Estrutura de Repetio ENQUANTO


Exemplo:
X 1; //Inicializando a varivel que controla o loop Enquanto (X < 10) faa Incio Escreva(O valor de X = ,X ); X = X + 1; Fim;
www.intellectuale.com.br

//atualizando a varivel de controle

Loop while Linguagem C


while (condio) { /*comandos*/ }
www.intellectuale.com.br

Exemplo While
#include <stdio.h> #include <conio.h> int main(void) { int contador = 1; // Inicializa a varivel de controle while (contador <= 100) // Testa a varivel de controle { // Incio do loop printf("%d ", contador); // Executa os comandos contador++; } // Fim do loop getch(); return 0; } // incrementa a varivel de controle

www.intellectuale.com.br

Estrutura de Repetio Faa/Enquanto (Teste lgico no final do lao)

Na estrutura Faa...Enquanto seu funcionamento controlado por deciso, porm as instrues so executadas no mnimo uma vez, antes de testar a condio da varivel que controla o lao no final do comando.

www.intellectuale.com.br

Faa...Enquanto
Sintaxe: {Iniciar a varivel de controle} Faa Incio

Fim Enquanto (condio for verdadeira);

{Instrues} {Atualizar a varivel de controle}

www.intellectuale.com.br

Faa...Enquanto - Execuo
Execuo da instruo: X 1; // Inicializando a varivel de controle Faa Incio
Escreva(O valor de X = ,X ); X = X + 1; //atualizando a varivel de controle

Fim Enquanto (X < = 10);


www.intellectuale.com.br

Faa...Enquanto - Diagrama de Blocos

www.intellectuale.com.br

LOOP DO ... WHILE Linguagem C


No comando do ... while a avaliao da expresso condicional ocorre sempre aps a execuo do comando. Isto faz com que o comando sempre execute pelo menos uma vez antes de realizar o teste da condio. Vejamos o exemplo: #include <stdio.h> #include <conio.h> int main (void) { int i = 1; // inicializando variavel de controle do printf ("%d \n", i); while ( ++i <= 10 ); // condio getch(); return(0); }
www.intellectuale.com.br

Exerccio do...while

Modifique o programa da tabuada para que proporcione ao usurio uma opo para calcular outra tabuada novamente. Caso o usurio queira calcular outra tabuada ele deve digitar 1, caso queira encerrar o programa, deve digitar 2.

www.intellectuale.com.br

#include <stdio.h> #include <stdlib.h> // biblioteca que permite usar o comando system("cls") int main(void) { int I,Numero, Res; int Continuar; do { system("cls"); // limpa a tela - somente para ambiente windows printf("Digite o valor para calcular a tabuada "); scanf("%d",&Numero); for (I = 1; I <= 10; I++) { Res = Numero * I; printf("%d X %d = %d ",Numero, I, Res); printf("\n\n"); } printf("Tecle 1 para fazer outra tabuada ou 2 para sair "); scanf("%d",&Continuar); } while(Continuar==1); return(0); } www.intellectuale.com.br

Exerccio Extra
Uma classe tem 20 alunos. Em uma determinada disciplina, os alunos fazem um total de 3 provas, valendo 100 pontos cada uma. A nota final de um aluno a mdia dos dois melhores resultados, dentre as trs notas recebidas. Deseja-se construir um programa para ler as notas atribudas a trs provas de cada aluno e calcular sua nota final. Calcular tambm a nota mdia da sala.
www.intellectuale.com.br

Funes de entrada de caracteres Linguagem C

www.intellectuale.com.br

Funo gets
Processa tudo que foi digitado at que a tecla ENTER seja pressionada. Suponha que o usurio vai digitar seu nome completo. Nesse caso para armazenarmos o valor interessante usar gets para armazenar o nome inteiro inclusive com o sobrenome. Exemplo: printf (Digite seu nome:); gets(nome); www.intellectuale.com.br

FUNO getchar( )

Funciona de forma semelhante a gets, porm usada para receber apenas um caracter, enquanto que gets l uma string toda. A leitura do caracter digitado ocorre quando o usurio pressionar a tecla <Enter>.

www.intellectuale.com.br

FUNO getche( )
A funo getche( ) edita um caracter do teclado e permite que ele seja mostrado na tela do computador sem que seja necessrio o pressionamento da tecla ENTER por parte do usurio. Isso j ocorre de forma automtica. #include <stdio.h> #include <conio.h> #include <stdlib.h> int main (void ) { char ch; printf ("Digite uma tecla:"); ch = getche( ); printf ("\n A tecla que voc pressionou foi %c. \n", ch); system("PAUSE"); return 0;

www.intellectuale.com.br

FUNO getch( )

Permite que o usurio fornea um caracter atravs do teclado. Este caracter no ser mostrado na tela do computador. No necessrio pressionar ENTER, pois a passagem para a prxima ocorre automaticamente. Tambm usamos esta funo como recurso de parada temporria da execuo do programa, semelhante ao comando Readkey da linguagem Pascal.

www.intellectuale.com.br

Funes de Sada de Dados Linguagem C

www.intellectuale.com.br

FUNO puts( )
Representa a sada de uma nica STRING por vez, seguida do caracter de nova linha, ou seja, a funo muda de linha automaticamente sem que haja a necessidade do pressionamento da tecla de entrada de dados, ENTER. Exemplos: puts (O rato); puts (roeu a roupa); puts (do rei de Roma.);
www.intellectuale.com.br

FUNO putchar ( )
Representa a sada de apenas um caracter na tela do computador e no acrescentauma nova linha automaticamente como a funo puts( ). As instrues seguintes so equivalentes: putchar ('c'); printf (%c, 'c');

www.intellectuale.com.br

Vetores Variveis indexadas unidimensionais

www.intellectuale.com.br

Um vetor uma estrutura de dados indexada, que pode armazenar mltiplos valores do mesmo tipo. Facilita a manipulao de um grande conjunto de dados do mesmo tipo, declarando apenas uma varivel. Pseudocdigo: NomeDoVetor: Vetor[inicio..final] de tipodevariavel Exemplo: V: vetor[0..9] de Real;

Vetor

www.intellectuale.com.br

ndices do vetor

Os endereos de armazenamento (ndices) de um vetor so numerados. Neste exemplo o vetor parte do ndice zero e sua posio final o ndice 9. Sendo assim temos um total de 10 posies para armazenamento.
www.intellectuale.com.br

Atribuindo valores a um vetor


Para atribuir valor a um vetor, devemos sempre informar o nome do vetor e o ndice. Por exemplo: V[0] 8.5; V[1] 10.0; Para acessar os valores, devemos colocar o nome do vetor seguido da posio.
www.intellectuale.com.br

Vetor em C
Em linguagem C um vetor indexado a partir da posio zero. Declarao do vetor: float V[10];

www.intellectuale.com.br

Exemplo 1: Vetor em C
#include <stdio.h> #include <stdlib.h> int main(void) { int notas[5] = {18, 12, 95, 99, 22}; // declarando e inicializando o vetor printf("Valores do Vetor \n"); printf("notas[0] %d\n", notas[0]); printf("notas[1] %d\n", notas[1]); printf("notas[2] %d\n", notas[2]); printf("notas[3] %d\n", notas[3]); printf("notas[4] %d\n", notas[4]); system("PAUSE");
www.intellectuale.com.br

Exemplo 2: Vetor em C
/* Calculo de Media da classe para 4 alunos */ #include <stdio.h> #include <stdlib.h> int main(void) { float Media[4]; float MediaSala, SomaNota = 0; int I; printf("\nCalculo de Media\n\n"); for (I = 0; I <= 3; I++) { printf("Informe a %da. nota: ", I+1); scanf("%f", &Media[I]); SomaNota = SomaNota+Media[I]; } MediaSala = SomaNota / 4; printf("\nA media da classe equivale a: %5.2f\n\n", MediaSala); system("PAUSE"); return(0); www.intellectuale.com.br }

Exerccio - Vetores

Elaborar um programa que some as posies correspondentes de dois vetores com 4 elementos cada um. Considere que os valores sero inseridos pelo usurio.

www.intellectuale.com.br

#define MAX 4 #include <stdio.h> #include <conio.h> int main (void) { int i, vetor1[MAX], vetor2[MAX]; printf("Somando dois vetores\n\n"); printf("\n\nDigite os dados para o vetor 1 \n\n"); for ( i=0; i<MAX; i++ ) { printf ("vetor1[%d]=", i); scanf ("%d", &vetor1[ i ]); } printf("\n\nDigite os dados para o vetor 2 \n\n"); for ( i=0; i<MAX; i++ ) { printf ("vetor2[%d]=", i); scanf ("%d", &vetor2[ i ]); } printf("\n\n******Somatoria*******\n\n"); for ( i=0; i<MAX; i++ ) printf ("vetor1[%d] + vetor2[%d] = %d\n", i, i, vetor1[ i ] + vetor2[ i ]); getch(); return(0); www.intellectuale.com.br }

Exerccio Extra - Vetor


Utilize uma varivel do tipo vetor para resolver o problema: Uma classe tem 20 alunos. Em uma determinada disciplina, os alunos fazem um total de 3 provas, valendo 100 pontos cada uma. A nota final de um aluno a mdia dos dois melhores resultados, dentre as trs notas recebidas.

Deseja-se construir um programa para ler as notas atribudas para as trs provas de cada aluno e calcular sua media final. Caso o aluno tenha media final maior que 70 pontos o programa deve avisar que o aluno est aprovado, caso contrrio emitir mensagem dizendo que o aluno est reprovado na disciplina. Calcular a nota mdia da classe, a maior mdia e tambm a menor mdia obtida pelos alunos .
www.intellectuale.com.br

Matrizes Variveis indexadas multidimensionais

www.intellectuale.com.br

Matriz
Chamamos de matriz a uma estrutura de dados homognea com duas ou mais dimenses. Na prtica, as matrizes formam tabelas na memria. Pseudocdigo: M:Matriz[inicioL...finalL,inicioC..finalC] de tipodedado; Exemplo: Representao Grfica

www.intellectuale.com.br

Matriz em C
Chamamos de matriz a uma estrutura de dados homognea com duas ou mais dimenses. Na prtica, as matrizes formam tabelas na memria. Exemplo de declarao de matriz com 2 dimenses: float Media[5][2]; O valor 5 representa a quantidade de linhas. O valor 2 representa a quantidade de colunas. Essa matriz do tipo 5 X 2 e tem capacidade para armazenar at 10 elementos do tipo float.
www.intellectuale.com.br

#include <stdio.h> #include <stdlib.h> int main(void) { float Media[5][2], N; int I, J; printf("\nLeitura e apresentacao de notas armazenadas na matriz\n"); /*Leitura das notas dos alunos */ for (I = 0; I <= 4; I++) { printf("\nInforme as notas do %do. aluno: \n\n", I+1); for (J = 0; J <= 1; J++) { printf("Nota %d: ", J+1); scanf("%f", &N); Media[I][J] = N; } } printf("\n\n******************* Saida de Notas ********************** \n\n"); for (I = 0; I <= 4; I++) { printf("\nAs notas do aluno %d sao : \n\n", I+1); for (J = 0; J <= 1; J++) printf("Nota %d: %5.2f\n", J+1, Media[I][J]); } system("PAUSE"); www.intellectuale.com.br return(0);

/* EXEMPLO DE MATRIZ: Armazenamento de notas para 5 alunos com 2 notas por aluno */

/* Faa o fluxograma e o teste de mesa para o programa da MATRIZ abaixo */ #include <stdio.h> #include <conio.h> int main (void ) { int matriz[2][2],i, j; printf ("\nDigite valor para os elementos da matriz\n\n"); for ( i=0; i<3; i++ ) for ( j=0; j<3; j++ ) { printf ("\nElemento[%d][%d]", i, j); scanf ("%d", &matriz[ i ][ j ]); } for ( i=0; i<3; i++ ) for ( j=0; j<3; j++ ) if ( i == j ) printf ("\n%d", matriz[ i ][ j ]); getch(); return(0);

www.intellectuale.com.br

Registros - Structs Matrizes heterogneas

www.intellectuale.com.br

Estrutura -struct
Para resumir, struct uma estrutura de dados em formato de tabela que tem capacidade de trabalhar com tipos de dados diferentes. Desta forma, podemos dizer que uma struct uma estrutura de dados heterognea. As structs da linguagem C so o equivalente ao que se denomina registros em outras linguagens. Os membros das structs, por sua vez, so o que se denomina campos em em outras linguagens. Na realidade, embora a nomenclatura seja diferente, os conceitos so exatamente os mesmos entre struct e registros.
www.intellectuale.com.br

Sintaxe - struct
struct<identificador> { <listagem dos tipos e membros>; } struct <identificador> <variavel>;

Exemplo:

struct CadastroAluno { char nome[50]; float nota1; float nota2; }; struct CadastroAluno ALUNO;
www.intellectuale.com.br

/* Exemplo do uso de uma struct */ #include <stdio.h> #include <stdlib.h> int main(void) { struct CadastroAluno { char Nome[40]; float Nota1; float Nota2; }; struct CadastroAluno Aluno; printf("\nCadastro de Aluno\n\n"); printf("Informe o Nome ......: "); fflush(stdin); fgets(Aluno.Nome, 40, stdin); printf("Informe a 1a. nota ..: "); scanf("%f", &Aluno.Nota1); printf("Informe a 2a. nota ..: "); scanf("%f", &Aluno.Nota2); printf("\n"); printf("\nLendo os dados da struct"); printf("Nome .....: %s\n", Aluno.Nome); printf("Nota 1 ...: %6.2f\n" , Aluno.Nota1); printf("Nota 2 ...: %6.2f\n" , Aluno.Nota2); printf("\n\n\n"); system("PAUSE"); www.intellectuale.com.br return(0); }

Arquivos

www.intellectuale.com.br

Arquivos de dados
Um arquivo um conjunto de registros armazenados em uma mdia. Vantagens da utilizao de arquivos:

As informaes so armazenadas na mdia de forma permanente, diferentemente de informaes armazenadas na memria RAM que so perdidas quando o programa termina de executar. As informaes podem ser consultadas a qualquer momento. A quantidade de informaes armazenadas maior do que aquela que poderia ser armazenada em uma tabela na mmoria, limitada apenas ao tamanho meio fsico usado para gravao.
www.intellectuale.com.br

Arquivos Conceitos Importantes

Arquivo um conjunto de registros. Registro um conjunto de campos. Cada campo contm um tipo de dado Arquivos so manipulados usando-se um ponteiro de registro. O ponteiro aponta para a localizao do registro. Chamamos de registro corrente, ao registro que est sendo manipulado no momento.
www.intellectuale.com.br

Campo
Denominamos campo a um espao reservado na memria para receber informaes. Exemplo: Campo Nome Representao do campo na memria:
NOME Jos da Silva

www.intellectuale.com.br

Registro
Um conjunto de campos formam um de registro. Exemplo: Registro de clientes, sendo um conjunto de campos formado pelos campos codigo, nome, endereo e telefone de um determinado cliente.
CODIGO 00001 NOME MARIA DA SILVA ENDEREO TELEFONE

RUA DAS MARIAS, 9765-9899 1986

www.intellectuale.com.br

Arquivo
um conjunto de registros armazenados de forma permanente em uma mdia digital. Exemplo: O arquivo de Clientes da Empresa.
ARQCLIENTES
Registro 1 Registro 2 Registro 3

www.intellectuale.com.br

Abertura de Arquivos
Para trabalhar com um arquivo, precisamos ABRIR o arquivo. primeiramente

O processo de abertura de arquivos aloca o perifrico em que o arquivo se encontra, prepara-o para leitura/gravao. Smbolo de abertura de arquivo:

ABRIR ARQUIVO

www.intellectuale.com.br

Fechamento de Arquivos

O processo de fechamento de um arquivo libera o perifrico que estava sendo usado. Smbolo de fechamento de arquivo
Fechar ARQUIVO

www.intellectuale.com.br

Leitura de Arquivos
Depois de abrir o arquivo, necessrio fazer a leitura dos dados que esto armazenados na mdia e transferi-los para memria. Representao de leitura de arquivo:

Ler ARQUIVO

www.intellectuale.com.br

BOF, EOF e Ponteiro


Ao abrir um arquivo, o ponteiro posicionado automaticamente no primeiro registro, ou seja, no inicio do arquivo. A rea de incio de arquivo denominada BOF (Begin of File). O final do arquivo denominado EOF - End Of File.

www.intellectuale.com.br

Representao grfica da leitura de um arquivo


BOF (Incio do Arquivo)
COD-CLI 00001
PONTEIRO

NOME

ENDERECO

TELEFONE 6534-3000 6543-8561 2288-8907

JOSE DA SILVA RUA CLELIA 95 MARIA CLARA MNICA RUA MIRANDA 77 RUA IGUATEMI 142

Registro 1
Registro 2

00002 00003 \*

EOF (Final do Arquivo)

Aps a leitura de um registro,o ponteiro desloca-se para o seguinte, a fim de efetuar a prxima leitura. www.intellectuale.com.br

INCIO

Processo de leitura de arquivo

Abrir ARQUIVO

ContRegistro = 0;

Ler ARQUIVO

F ContRegistro = ContRegistro + 1; EOF?

ContRegistro

Fechar ARQUIVO

www.intellectuale.com.br
FIM

Gravao de Arquivos
A gravao consiste na transferncia de um registro da memria, para uma mdia de armazenamento digital. Representao da gravao de arquivos:
GRAVAR REGISTRO

www.intellectuale.com.br

Formas de acesso de arquivos

Os arquivos podem ser acessados de duas formas: 1 Acesso sequencial; 2 - Acesso direto ou indexado;

www.intellectuale.com.br

Arquivo de Acesso Sequencial

No arquivo de acesso sequencial, os registros so gravados em formato sequencial, ou seja, um aps o outro. Para acessar um determinado registro, necessrio passar por todos os anteriores.

www.intellectuale.com.br

Arquivo de Acesso direto

Neste tipo de arquivo, os registros so gravados com uma referncia de localizao, ou seja, utiliza-se um campo-chave. Para acessar um registro especfico, torna-se necessria a indicao dessa chave.

www.intellectuale.com.br

Formas de acesso de arquivos

Os arquivos podem ser acessados de duas formas: 1 Acesso sequencial; 2 - Acesso aleatrio;

www.intellectuale.com.br

Linguagem C Operaes com arquivos

www.intellectuale.com.br

Operaes com arquivo


Na linguagem C um arquivo do tipo FILE, ou seja, uma estrutura que constituda de elementos do mesmo tipo organizados de forma sequencial. O arquivo comunica-se com a memria RAM e com os meios de armazenamento por meio do sistema operacional. Sintaxe: FILE<*ponteiro> A estrutura do arquivo est presente na biblioteca stdio.h
www.intellectuale.com.br

Leitura e escrita em arquivos


Para realizar operaes de leitura ou de escrita em arquivo, primeiramente devemos abrir o arquivo e assim que realizarmos as operaes de leitura ou escrita devemos fechar o arquivo. Sintaxe de abertura de arquivo: <ponteiro> = fopen(nome do arquivo,tipo de abertura); Sintaxe de fechamento de arquivo fclose<ponteiro>; Sendo que o ponteiro a mesma varivel ponteiro associada ao comando de abertura de arquivo.
www.intellectuale.com.br

Tipos de abertura de arquivos


Tipo de abertura r Descrio Permisso de abertura somente para leitura. necessrio que o arquivo j esteja presente no disco. Permite abrir um arquivo texto para escrita (gravao). Este cdigo cria o arquivo caso ele no exista, e caso o mesmo exista ele recria o arquivo novamente fazendo com que o contedo seja perdido. Portanto esse cdigo deve ser usado com cautela e moderao. a Permisso para abrir um arquivo texto para escrita(gravao), permite acrescentar novos dados ao final do arquivo. Caso no exista, ele ser criado.
www.intellectuale.com.br

Criao de arquivo texto


#include <stdio.h> int main(void) { FILE *PontArq; // ponteiro para o arquivo PontArq = fopen("ARQUIVO1.TXT", "a"); //abrindo arquivo fclose(PontArq); // fechando arquivo printf(Arquivo criado com sucesso!); return(0);

/* Este programa cria o arquivo texto no mesmo diretrio do executvel do programa*/


www.intellectuale.com.br

Abrindo, gravando e fechando arquivo


#include <stdio.h> int main(void) { FILE *PontArq; // cria varivel ponteiro para o arquivo char testeStr[15]; PontArq = fopen("ARQUIVO2.TXT", "w"); //abre arquivo printf("\n\nEscreva uma string para testar gravacao de arquivo: "); scanf("%s", testeStr); fprintf(PontArq, "%s", testeStr); // grava a informao no arquivo fclose(PontArq); // fecha arquivo printf(Dados gravados com sucesso!); } return(0);
www.intellectuale.com.br

Manipulao de arquivo Gravando vrios strings


#include <stdio.h> int main(void) { FILE *PontArq; char RES, texto[51]; RES = 'S'; PontArq = fopen("TextoArquivo.txt", "a"); while(RES == 'S' || RES == 's') { printf("\n\nDigite um texto qualquer\n\n"); fflush(stdin); fgets(texto, 51, stdin); fputs(texto, PontArq); printf("\nDeseja continuar (S/N)? "); fflush(stdin); scanf("%c", &RES); } fclose(PontArq); return(0); www.intellectuale.com.br }

Leitura de arquivos
#include <stdio.h> int main(void) { FILE *PontArq; char TextoStr[51]; PontArq = fopen("ARQUIVO2.TXT", "r"); while(fgets(TextoStr, 50, PontArq) != NULL) printf("%s", TextoStr); fclose(PontArq); getch(); return(0); }
www.intellectuale.com.br

Exerccio - Arquivos

Elabore um programa que leia, grave e exiba a apresentao de uma listagem dos nomes armazenados em arquivo texto. O programa deve conter um menu para as rotinas de criao de arquivo, cadastro e exibio.

www.intellectuale.com.br

Programao Estruturada Mdulos

www.intellectuale.com.br

Tcnicas de Programao Estruturada


A programao estruturada visa desenvolver programas confiveis, flexveis e de fcil manuteno utilizando as seguintes tcnicas: 1 Desenvolvimento de algoritmos por etapas; 2 Nmero limitado de estruturas de controle de fluxo de dados; 3 Refinamento do algoritmo em mdulos.
www.intellectuale.com.br

Modularizao
a tcnica que utiliza o conceito de refinamentos sucessivos para desenvolver algoritmos. Os refinamentos sucessivos, visam dividir um problema maior em partes menores, sendo que cada uma dessas partes tem uma tarefa bem definida. Mdulo um conjunto de comandos que constitui uma parte de um algoritmo principal, e que possui uma tarefa bem definida.
www.intellectuale.com.br

Execuo de mdulos
Existe um mdulo especial, denominado mdulo principal que existe sempre em qualquer algoritmo (programa) que inicia automaticamente sua prpria execuo. Ele o nico que inicia automaticamente, os outros mdulos para serem executados precisam ser chamados (ativados) por algum mdulo. A execuo comea sempre pelo mdulo principal, sendo desviada para qualquer outro mdulo que seja chamado pelo principal. Cada mdulo executado at o seu fim, depois o fluxo de execuo retorna ao ponto em que o mdulo foi chamado e segue a execuo do programa (algoritmo).
www.intellectuale.com.br

Mdulos e subrotinas
Os mdulos, tambm so subrotinas ou subprogramas. chamados de

Os mdulos devem ser o mais independente possvel entre si. Devido a isso eles podem possuir suas prprias variveis locais e a dependncia entre eles fica restrita ao cabealho (interface) do mdulo.
www.intellectuale.com.br

Mdulo: Retorno de valor


Retorno de valor a sada por meio da qual o mdulo d uma resposta ao mdulo que o chamou, ou seja que o ativou. Essa resposta, pode ser o resultado de uma operao, ou uma sinalizao de que a operao foi realizada com sucesso. De qualquer forma a resposta de retorno um valor pertencente a um tipo de varivel. O retorno precisa ser recebido dentro do mdulo chamador, ou seja, ativador, dentro do qual ser tratado. Comando de retorno: retorne(valor);
www.intellectuale.com.br

Retorno de valores e diferena entre procedimento e funo


Os mdulos podem (ou no) retornar valores. Caso um mdulo no retorne valores, dizemos que seu retorno neutro. Em algumas linguagens de programao (por exemplo: Pascal...) um mdulo que no retorna valor chamado de procedimento, enquanto que um mdulo que retorna valor chamado de funo. Na linguagem C, no existe esta distino entre procedimento e funo, logo independentemente de retornar ou no valores, em C todos os mdulos so denominados funes.
www.intellectuale.com.br

Mdulos: Procedimento e funo


De forma geral, podemos dizer que procedimentos e funes so comandos utilizados para gerar mdulos em um determinado algoritmo ou programa. Ambos esto subordinados a um algoritmo principal denominado mdulo principal ou programa principal.
www.intellectuale.com.br

Hierarquia dos mdulos


Programa Principal

Mdulo 1

Mdulo 2

Mdulo 3

Mdulo 4

www.intellectuale.com.br

Definio de Procedimento
um conjunto de comandos que realiza uma tarefa especfica e referenciado pelo programa principal por um nome. Quando o programa, ou mdulo principal referencia o procedimento, dizemos que est realizando a chamada do procedimento. Ao ser chamado o procedimento executado e aps sua execuo o programa principal reassume o controle do fluxo.
www.intellectuale.com.br

Simbologia de Procedimento Diagrama de blocos


Nome da Subrotina

Para representar a um procedimento usamos o smbolo de subrotina (processo pr-definido).

www.intellectuale.com.br

Definio de Funo

um conjunto de comandos que realiza uma tarefa especfica e referenciado pelo programa principal por um nome, e retornando obrigatoriamente um valor no prprio nome da funo.

www.intellectuale.com.br

Escopo de variveis

O chamado escopo de uma varivel est relacionado com a abrangncia da varivel, ou seja, em quais partes do algoritmos a varivel visvel e pode ser utilizada. Varivel local s pode ser utilizada dentro do mdulo onde foi declarada. declarada no incio do mdulo a qual pertence. Varivel global pode ser utilizada por todos os mdulos de um programa. declarada antes de todos os mdulos.
www.intellectuale.com.br

Utilizao de procedimento Pseudocdigo


Algoritmo Teste; //Algoritmo Principal Var N1, N2; // Variveis globais Procedimento Soma Var Resultado: Real; // Varivel local ao procedimento Inicio Resultado N1 + N2; Escreva(O resultado da soma : ,Resultado); Fim; Inicio Escreva(Digite os valores: ); Receba(N1,N2); Soma; //Chamada do procedimento Fim. www.intellectuale.com.br

Parmetros
Os parmetros permitem que os mdulos se comuniquem a fim de realizar determinada tarefa. Os parmetros classificam-se em:

Parmetro formal: declarado com o mdulo. Parmetro real: substitui o parmetro formal no programa principal.
www.intellectuale.com.br

Procedimento com passagem de parmetros


Algoritmo Ex; //Algoritmo Principal Procedimento Soma(N1,N2:REAL) //N1 e N2 parmetros formais Var Resultado: Real; Inicio Resultado N1 + N2; Escreva(O resultado da soma : ,Resultado); Fim; Var V1, V2; Inicio Escreva(Digite os valores: ); Receba(V1,V2); Soma(V1,V2); //chamada do procedimento // e passagem dos parmetros REAIS V1 e V2 Fim.
www.intellectuale.com.br

Procedimento - Exemplo Linguagem C


#include<stdio.h> #include<stdlib.h> Soma(float N1, float N2) /* N1 e N2 parmetros formais*/ { float resultado; resultado = N1 + N2; printf("Resultado = %8.2f\n",resultado); } int main(void) { float V1, V2; printf("Digite o primeiro valor:"); scanf("%f", &V1); printf("Digite o segundo valor:"); scanf("%f", &V2); Soma(V1,V2); /*chamada da funo e passagem de parmetros reais*/ system("pause"); return 0; www.intellectuale.com.br }

Procedimento Exemplo em Pascal


Program ExProcedimento; Procedure Multiplicar(A, B : integer); Var Resultado : integer; Begin Resultado := A * B; Writeln('Resultado = ',Resultado); End; Var X, Y : integer; Begin Write('Digite um valor: '); Readln(X); Write('Digite outro valor: '); Readln(Y); Multiplicar(X, Y); Readln(); www.intellectuale.com.br End.

Passagem de parmetros

o processo de substituio do parmetro formal pelo parmetro real. D-se de duas formas: Por valor Por referncia
www.intellectuale.com.br

Passagem de parmetros por valor


Nesse processo, uma cpia da varivel feita durante a ativao da subrotina (mdulo), sendo os argumentos atribudos aos parmetros de entrada da subrotina. Desta forma, as variveis locais do mdulo ativado ficam completamente independentes das variveis do mdulo chamador, ocorre um isolamento, ou seja mesmo que seus valores sejam alterados, essas alteraes no so refletidas no mdulo chamador.

www.intellectuale.com.br

Passagem de Parmetros por referncia


O endereo da varivel passado durante a ativao do mdulo. Neste processo, embora os identificadores das variveis sejam diferentes, os valores manipulados no mdulo ativado e do mdulo ativador so exatamente a mesma varivel. Deste modo, toda alterao feita refletida no mdulo ativador.
www.intellectuale.com.br

Funo

Funo um conjunto de aes para realizar uma tarefa especfica que chamada pelo programa principal, assim como o procedimento, porm a diferena bsica que a funo sempre retorna um valor. Sintaxe: funo<nome>(lista de parmetros): tipodevariavel;

www.intellectuale.com.br

Utilizando funo Pseudocdigo


Algoritmo Principal; Var N1,N2,R:inteiro; Funo Mult(V1,V2:Inteiro):Inteiro; Inicio Mult =V1 * V2; Fim; Inicio Escreva(Digite dois valores para multiplicar: ); Receba(N1,N2); R = Mult(N1,N2); // chamada da funo mult // o retorno da funo armazenado em R, ento agora mostre Escreva(R); Fim. www.intellectuale.com.br

Funo Exemplo em Pascal


PROGRAM EX_Funcao; USES CRT; VAR N1,N2,R: INTEGER; Function Mult(V1,V2:Integer):Integer; BEGIN Mult:=V1*V2; END; BEGIN // programa principal CLRSCR; WRITE('Digite dois valores para serem multiplicados: '); READLN(N1,N2); R:=Mult(N1,N2); Writeln('Resultado = ',R); Readln; www.intellectuale.com.br END.

Funo Linguagem C
#include<stdio.h> #include<stdlib.h> int Mult(int N1, int N2) //funo que recebe N1,N2 e retorna um int { int resultado; resultado = N1 * N2; return(resultado); //retornando o valor para main } int main(void) { int V1, V2, resultado; printf("Digite o primeiro valor:"); scanf("%d", &V1); printf("Digite o segundo valor:"); scanf("%d", &V2); resultado = Mult(V1,V2); //chama a funo e recebe o retorno printf("Resultado = %d\n", resultado); system("pause"); return 0; www.intellectuale.com.br }

Prottipo de funo em C
O prottipo de uma funo basicamente, uma declarao da interface da funo, ou seja, deve especificar:

Tipo da funo; Nome da funo; Lista de parmetros que a funo necessita; Exemplo: int Mult(int N1, int N2)
www.intellectuale.com.br

Exerccio - funo

Elabore um programa que utilize uma funo para calcular a mdia entre duas notas.

www.intellectuale.com.br

Clculo de mdia usando funo


#include<stdio.h> #include<stdlib.h> float Media(float N1, float N2); //prottipo da funo int main(void) { float V1, V2, M; printf("Digite o primeiro valor:"); scanf("%f", &V1); printf("Digite o segundo valor:"); scanf("%f", &V2); M = Media(V1,V2); //chama a funo e recebe o retorno printf("Media = %5.2f\n", M); system("pause"); return 0; } float Media(float N1, float N2) //funo recebe N1,N2 e retorna um int { float resultado; resultado = (N1 + N2)/2; return(resultado); //retornando o valor para main www.intellectuale.com.br }

Simbologia da funo Diagrama de blocos


Nome da Subrotina

Para representar a funo usamos o smbolo de subrotina (processo pr-definido).

www.intellectuale.com.br

Conceitos de Programao Orientada a Objetos

www.intellectuale.com.br

Programao Orientada a Objetos


Embora a programao orientada a objetos tenha sido mais divulgada a partir da dcada de 90, suas origens datam da dcada de 60. Atualmente existem diversas linguagens de programao orientadas a objetos por exemplo C++, Delphi, Java, C# e outras. O conceito de orientao a objetos, suportado por quatro pilares mestres, que so eles: classe, objeto, atributo e mtodo.
www.intellectuale.com.br

Conceitos de Programao Orientada a Objetos Atributo Caractersticas especficas de uma classe ou objeto. Classe Conjunto de objetos que possuem uma ou mais caractersticas comuns. Estado Situao do comportamento de um determinado objeto em um determinado momento.
www.intellectuale.com.br

Conceitos de Programao Orientada a Objetos Encapsulamento Definio de como implementar atributos e mtodos de uma classe Herana Capacidade de uma classe filho (subclasse) herdar um ou mais classes (classe pai). Instncia de classe uma ocorrncia especfica de uma determinada classe, ou seja um objeto.
www.intellectuale.com.br

Conceitos de Programao Orientada a Objetos


Mtodo a caracterstica que possibilita alterar a funcionalidade de um determinado atributo de um objeto. Objeto Representao de um elemento do mundo real, Instncia de uma classe que pode ser persistente ou transitria. Poliformismo Capacidade de interagir atributos de um objeto sem a necessidade de conhecer seu tipo. Capacidade que um objeto possui de mudar sua forma para outra forma. www.intellectuale.com.br

Exemplo de classe com C++


class TAluno: // Definio da classe TAluno { public: char Nome[50]; // atributo NOME float Notas[2]; // atributo NOTA float Media; // atributo MEDIA float CalcMed(void); // mtodo CalcMed } ALUNO; // nomeando o objeto ALUNO
www.intellectuale.com.br

Conceitos Bsicos de Banco de Dados

www.intellectuale.com.br

Banco de dados

Banco de dados um objeto capaz de armazenar informaes complexas e estruturadas e recuper-las rapidamente. No entanto, para que isso seja possvel, voc precisa projetar e implementar corretamente seu banco de dados a fim de ele possa ser consultado com rapidez.
www.intellectuale.com.br

Onde podemos usar um banco de dados?


O banco de dados usado para tomar decises de negcios. O interessante encontrar respostas para perguntas como: Qual foi o produto mais vendido na regio Sudeste? Em qual estado a maior venda ocorreu? Para qual cliente? Qual o ms de maior mdia de vendas do produto X? Normalmente para dar essas respostas, somos obrigados a consultar dados de vrias tabelas diferentes.
www.intellectuale.com.br

Banco de dados relacional


Os bancos de dados relacionais, tem por base relacionamentos entre seus dados. As tabelas representam entidades do mundo real, e dentro delas que os dados relacionados com as entidades ficam armazenados. O ideal, manter tabelas pequenas e facilmente gerenciveis.
www.intellectuale.com.br

Tabelas, campos e registros


As informaes de um banco de dados relacional so armazenadas em Tabelas. Uma tabela constituda por um conjunto de registros. Os registros por sua vez, so um conjunto de campos. Por exemplo, suponha uma tabela denominada "Clientes", onde seriam armazenadas informaes sobre os diversos clientes. Podemos armazenar informaes em diversos campos como: Nome,RG,CPF,Endereo,Data de Nascimento e outras. Um conjunto de campos relativo a um cliente forma o registro desse cliente.
www.intellectuale.com.br

Chave Primria
Chave primria um campo que identifica de maneira nica cada registro de uma tabela. Exemplo prtico: se o campo cdigo da tabela clientes a chave primria, isto significa que no podem ser cadastrados dois clientes com o mesmo cdigo.

www.intellectuale.com.br

Relacionamento entre a tabela clientes e a tabela pedidos

Relacionamento um para vrios entre Clientes e Pedidos.

Cada Cliente cadastrado uma nica vez na tabela de Clientes, portanto a tabela Clientes ser o lado um do relacionamento. Porm um cliente pode fazer vrios pedidos, sendo assim o mesmo cdigo de cliente poder aparecer vrias vezes na tabela de Pedidos: tantas vezes quantos forem os pedidos que o cliente tiver feito. www.intellectuale.com.br

ndice
Um ndice um mecanismo para agilizar buscas. Para isto usada uma tcnica chamada de indexao, que exige que os dados sejam mantidos em uma determinada ordem. Um SGBD pode manter vrios ndices para uma tabela. Suponhamos a tabela de clientes. Voc pode querer pesquisar por nome, CEP, cidade, pas, por exemplo. O ideal ento para acelerar essas pesquisas, que exista um ndice para cada campo que deseja pesquisar.
www.intellectuale.com.br

Linguagem SQL Structured Query Language


Linguagem padro para banco de dados. Possui trs objetivos principais:

Criar banco de dados e definir sua estrutura; Consultar o banco de dados a fim de obter dados necessrios para responder as questes; Controlar a segurana do banco de dados;
www.intellectuale.com.br

Arquitetura Cliente/Servidor 4 camadas

www.intellectuale.com.br

Referncias Bibliogrficas
AVILLANO, ISRAEL DE CAMPOS : Algoritmos e Pascal Manual de Apoio. Ed. Cincia Moderna, 2/2006 ZIVIANI, NIVIO :Projeto de Algoritmos com Implementao em Pascal e C. Ed. Thomson, 2/2004 GUIMARES/LAGES : Algoritmos e Estruturas de Dados. Ed. Livros Tcnicos e Cientficos BOENTE, ALFREDO : Aprendendo a Programar em Linguagem C. Ed. Brasport MANZANO, J.A.; Estudo Dirigido em Linguagem C. Editora Erica. ASCENCIO, ANA FERNANDA G.. Lgica de Programao com Pascal. Ed. Makron Books. So Paulo, 1999
www.intellectuale.com.br

You might also like