www.intellectuale.com.br
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.
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.
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.
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.
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.
ENTRADA
PROCESSAMENTO
SADA
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).
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.
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.
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.
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
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
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
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
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
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
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
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
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
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
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
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
www.intellectuale.com.br
Exerccio
www.intellectuale.com.br
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
www.intellectuale.com.br
www.intellectuale.com.br
Condio
Instrues
www.intellectuale.com.br
N1 > N2
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
A comando Seno determina o que ser feito quando a condio for Falsa.
www.intellectuale.com.br
Instrues
Instrues
www.intellectuale.com.br
Exemplo: Se (N1 > N2 ) ento Maior N1; seno Escreva (N2 o maior ou so iguais.);
F N1 > N2 V
Maior = N1
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
www.intellectuale.com.br
F Instrues
Condio
Instrues
Instrues
O O
www.intellectuale.com.br
www.intellectuale.com.br
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
Se (condio1) ento incio {InstruoC}; {InstruoD}; fim; Se (condio3) ento incio {InstruoE}; {InstruoF}; fim;
www.intellectuale.com.br
F X=1
UM
F X=2
DOIS
V X=3
TRS
www.intellectuale.com.br
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
www.intellectuale.com.br
www.intellectuale.com.br
Varivel
Instrues
Instrues
Instrues
www.intellectuale.com.br
Escreva ("Um")
Escreva ("Dois")
Escreva ("Trs")
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
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
www.intellectuale.com.br
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
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
Instrues
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);
www.intellectuale.com.br
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
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
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
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
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
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
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
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
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
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 }
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
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
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
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
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
www.intellectuale.com.br
NOME
ENDERECO
JOSE DA SILVA RUA CLELIA 95 MARIA CLARA MNICA RUA MIRANDA 77 RUA IGUATEMI 142
Registro 1
Registro 2
00002 00003 \*
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
Abrir ARQUIVO
ContRegistro = 0;
Ler ARQUIVO
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
Os arquivos podem ser acessados de duas formas: 1 Acesso sequencial; 2 - Acesso direto ou indexado;
www.intellectuale.com.br
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
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
Os arquivos podem ser acessados de duas formas: 1 Acesso sequencial; 2 - Acesso aleatrio;
www.intellectuale.com.br
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
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 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
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
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
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
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
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
www.intellectuale.com.br
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
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
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
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
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
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