advertisement

Lógica De Programação

50 %
50 %
advertisement
Information about Lógica De Programação
Technology

Published on October 23, 2008

Author: rodrigo.piovesana

Source: slideshare.net

Description

Apresentação Lógica de Programação Avançado - FAAT 2009
advertisement

Lógica de programação Avançado [email_address] Antes tarde do que mais tarde… Estou muito bem obrigado…e vocês?

Quem sou eu? Rodrigo C ésar Benaglia Piovesana Engenheiro de Computação - USF Especialista em Telecomunicações - FGV Aluno Mestrado - Unicamp Especialidades: redes de computadores, segurança da informação, VoIP e PABX Híbridos. Desenvolvimento em C/C++ para controlar dispositivos (drivers), Programação Orientada à objetos e UML. Diversas certificações em Redes de dados, Voz, PABX, Contact Center e Segurança.

Rodrigo C ésar Benaglia Piovesana

Engenheiro de Computação - USF

Especialista em Telecomunicações - FGV

Aluno Mestrado - Unicamp

Especialidades: redes de computadores, segurança da informação, VoIP e PABX Híbridos.

Desenvolvimento em C/C++ para controlar dispositivos (drivers), Programação Orientada à objetos e UML.

Diversas certificações em Redes de dados, Voz, PABX, Contact Center e Segurança.

Corinthiano ROXO!

Rumo ao Bi-Mundial

Bibliografia básica Algorítmos – Person Makron Books, 1998. Dirceu Douglas Salvetti e Lisbete Madsen Barbosa Linguagens de Programação – Java, C, C++ e outras – Campus, 2004. Flávio Varejão

Algorítmos – Person Makron Books, 1998.

Dirceu Douglas Salvetti e Lisbete Madsen Barbosa

Linguagens de Programação – Java, C, C++ e outras – Campus, 2004. Flávio Varejão

Bibliografia recomendada Ciência dos Computadores – Uma abordagem algorítmica – MacGraw-Hill, 1983. Jean Paul Tremblay e Richard B. Bunt C programação – Campus, 1993. Steve Holzner e Peter Norton Treinamento em Linguagem C – Curso completo 1 e 2 – McGraw-hill, 1990. Victorine Viviane (j á tem novas versão onde é unificado os livros)

Ciência dos Computadores – Uma abordagem algorítmica – MacGraw-Hill, 1983. Jean Paul Tremblay e Richard B. Bunt

C programação – Campus, 1993. Steve Holzner e Peter Norton

Treinamento em Linguagem C – Curso completo 1 e 2 – McGraw-hill, 1990. Victorine Viviane (j á tem novas versão onde é unificado os livros)

Revisão básica Alguem aqui lembra a matéria? Pelo menos o título??? Quais foram os principais tópicos estudados? Eee…eee..eee…eeee..hummmm…. Não! Conversão decimal <-> binário <-> octal <-> hexadecimal Algorítmos Descrição narrativa / Fluxograma Estruturas de decisão / Repetição Linguagem de programação C (comandos b ásicos em laboratório) Quais foram os exercícios executados? Quais foram os mais f á ceis e dif í ceis? Porque? Qual a principal diferença entra executar um programa direto no computador e realizar um algor í tmo antes de ir para o “pega-pra-capar”?

Alguem aqui lembra a matéria? Pelo menos o título???

Quais foram os principais tópicos estudados?

Eee…eee..eee…eeee..hummmm…. Não!

Conversão decimal <-> binário <-> octal <-> hexadecimal

Algorítmos

Descrição narrativa / Fluxograma

Estruturas de decisão / Repetição

Linguagem de programação C (comandos b ásicos em laboratório)

Quais foram os exercícios executados?

Quais foram os mais f á ceis e dif í ceis? Porque?

Qual a principal diferença entra executar um programa direto no computador e realizar um algor í tmo antes de ir para o “pega-pra-capar”?

O Que seria convers ão binário-décimal-octal-hexadecimal?? B ásicamente é representar a mesma informação em formatos diferentes. Por exemplo: 10 em decimal possui uma representação diferente em binário, 1010. Já em octal seria 12 e em Hexadecimal A. http://calculadoraonline.com.br/view/conversao-binario.php

B ásicamente é representar a mesma informação em formatos diferentes.

Por exemplo: 10 em decimal possui uma representação diferente em binário, 1010. Já em octal seria 12 e em Hexadecimal A.

http://calculadoraonline.com.br/view/conversao-binario.php

Descri ção Narrativa É solução estruturada do problema Se termo verdadeiro Repete at é termo ser falso Se não escrever “ Já era! Perdeu Playboy! ” Fim

É solução estruturada do problema

Se termo verdadeiro

Repete at é termo ser falso

Se não escrever

“ Já era! Perdeu Playboy! ”

Fim

Pseudo-c ódigo É a escrita do famoso “Portugol”, onde você irá escrever o código com palavras muito, MAS MUITO parecidas, com as utilizadas em algumas linguagens de programação. Se a<100 Então faça ate a = 100 A= a+1 Senão Escrever “número já é maior pó” fim

É a escrita do famoso “Portugol”, onde você irá escrever o código com palavras muito, MAS MUITO parecidas, com as utilizadas em algumas linguagens de programação.

Se a<100

Então faça ate a = 100

A= a+1

Senão

Escrever “número já é maior pó”

fim

Linguagem C Aqui o bicho pega!!!!! Temos N tipos de linguagens compat íveis com C ANSI. Algumas são proprietárias ou implatanções melhoradas de C. http://en.wikipedia.org/wiki/ANSI_C C++ (plus plus) é um C com classes(orientaçao a objetos, etc) C# ISO/IEC 23270

Aqui o bicho pega!!!!!

Temos N tipos de linguagens compat íveis com C ANSI. Algumas são proprietárias ou implatanções melhoradas de C.

http://en.wikipedia.org/wiki/ANSI_C

C++ (plus plus) é um C com classes(orientaçao a objetos, etc)

C# ISO/IEC 23270

Como funfa as provas e trabalho de conclus ão de curso? Sim, teremos 1 prova com 5 quest ões E sim …teremos um projeto de conclus ão de curso, onde o objetivo é desenvolver um aplicativo comercial… … anos anteriores já foram produzidos: sistemas para farmácias, hotéis, livrarias, fábricas de transformação, etc, etc, etc… … talvez esse ano o projeto ser á para administração escolar…

Sim, teremos 1 prova com 5 quest ões

E sim …teremos um projeto de conclus ão de curso, onde o objetivo é desenvolver um aplicativo comercial…

… anos anteriores já foram produzidos: sistemas para farmácias, hotéis, livrarias, fábricas de transformação, etc, etc, etc…

… talvez esse ano o projeto ser á para administração escolar…

Então “Vamo manda bala!” Vetores e Matrizes São estruturas de dados indexados do mesmo tipo. Onde cada espaço será preenchido com um tipo único de dados. Indexados???? O que é isso? É um í ndice para a posição onde será armazeda a informação. Tem como finalidade criar uma capacidade de armazenamento do mesmo tipo. Podemos ter vários í ndices. Por convenção o primeiro í ndice identifica a linha e o segundo identifica a coluna. Podemos ainda ter um terceiro indice que indicaria o plano. Teste [limite1][limite2][limite3] O incremento de í ndices requer mais capacidade de armazenamento limite1 X limite 2 x limite 3 = total de memória 1 caracter = 1 byte - > 10 x 10 = 100 bytes de memória para armazenar 100 caracteres diferentes. Caso fosse do tipo inteiro duplo seriam 200 bytes.

São estruturas de dados indexados do mesmo tipo. Onde cada espaço será preenchido com um tipo único de dados.

Indexados???? O que é isso? É um í ndice para a posição onde será armazeda a informação.

Tem como finalidade criar uma capacidade de armazenamento do mesmo tipo.

Podemos ter vários í ndices.

Por convenção o primeiro í ndice identifica a linha e o segundo identifica a coluna. Podemos ainda ter um terceiro indice que indicaria o plano.

Teste [limite1][limite2][limite3]

O incremento de í ndices requer mais capacidade de armazenamento limite1 X limite 2 x limite 3 = total de memória

1 caracter = 1 byte - > 10 x 10 = 100 bytes de memória para armazenar 100 caracteres diferentes. Caso fosse do tipo inteiro duplo seriam 200 bytes.

Vetor ou Matriz unidimensional com 7 posições Caracter letras[7]; AHH..isso é um indice! E esse é o valor armazenado! G F E D C B A 6 5 4 3 2 1 0

Como ficaria a declara ção usando a linguagem dos algorítmos??!?!?!!?!? Caracter Letras[7]; Letras[0]=‘A’; Letras[1]=‘B’; Letras[2]=‘C’; … ou eu posso usar um laço para fazer o preenchimento desse vetor… afff…credo!

Caracter Letras[7];

Letras[0]=‘A’;

Letras[1]=‘B’;

Letras[2]=‘C’;

… ou eu posso usar um laço para fazer o preenchimento desse vetor… afff…credo!

Vetor/Matriz unidimencional Exemplo #define LIMITE 20 Inicio (){ Inteiro m, m1[LIMITE],i; LER(“%d”,&m); Se (m < LIMITE) Para(i=0;i<m;i++){ m1[i]=i; escrever(“%d”,m1[i]); } Senão Escreva(“Fora do limite”); Fim Definindo o tamanho do vetor Iniciando o programa Declarando variaveis Atrinbuindo um valor para a variavel m Realizando um teste para validação do vetor Laço para preenchimento do vetor Escrevendo o conteúdo do vetor Se estiver fora do valor limite exibe mensagem fim

Exemplo

#define LIMITE 20

Inicio (){

Inteiro m, m1[LIMITE],i;

LER(“%d”,&m);

Se (m < LIMITE)

Para(i=0;i<m;i++){

m1[i]=i;

escrever(“%d”,m1[i]);

}

Senão

Escreva(“Fora do limite”);

Fim

Definindo o tamanho do vetor

Iniciando o programa

Declarando variaveis

Atrinbuindo um valor para a variavel m

Realizando um teste para validação do vetor

Laço para preenchimento do vetor

Escrevendo o conteúdo do vetor

Se estiver fora do valor limite exibe mensagem

fim

Como ficaria em C? Exemplo #define LIMITE 25 main(){ int m,m1[LIMITE],i; scanf(&quot;%d&quot;,&m); if(m<LIMITE){ for(i=0; i<m; i++){ m1[i]=i; printf(&quot;%d&quot;,m1[i]); } }else printf(“Fora do limite&quot;); system(&quot;PAUSE&quot;); }

Exemplo

#define LIMITE 25

main(){

int m,m1[LIMITE],i;

scanf(&quot;%d&quot;,&m);

if(m<LIMITE){

for(i=0; i<m; i++){

m1[i]=i;

printf(&quot;%d&quot;,m1[i]);

}

}else

printf(“Fora do limite&quot;);

system(&quot;PAUSE&quot;);

}

Vetor Mais um exemplo main(){ char str [7]; int i; for(i=0; i<7; i++){ str[i]= 'A'+i; printf(&quot;%c&quot;,str[i]); } system(&quot;PAUSE&quot;); } OUUUU main(){ char str [7]; gets(str); printf(&quot;%s&quot;,str); system(&quot;PAUSE&quot;); }

Mais um exemplo

main(){

char str [7];

int i;

for(i=0; i<7; i++){

str[i]= 'A'+i;

printf(&quot;%c&quot;,str[i]);

}

system(&quot;PAUSE&quot;);

}

OUUUU

main(){

char str [7];

gets(str);

printf(&quot;%s&quot;,str);

system(&quot;PAUSE&quot;);

}

Exercício 1. Mas que diabos este programa esta fazendo? #include<stdio.h> main(){ int exemplo [10], i, media; printf(&quot; Informe os números X[i] a medida que forem solicitados: &quot;); for(i=0; i<10; i++){ printf(&quot;X[%d]? &quot;,i); scanf(&quot;%d&quot;, &exemplo[i]) ; } media=0; for (i=0; i<10; i++) { media = media+exemplo[i]; } printf(&quot;A media é %f &quot;,(float)media/10); }

#include<stdio.h>

main(){

int exemplo [10], i, media;

printf(&quot; Informe os números X[i] a medida que forem solicitados: &quot;);

for(i=0; i<10; i++){

printf(&quot;X[%d]? &quot;,i);

scanf(&quot;%d&quot;, &exemplo[i]) ;

}

media=0;

for (i=0; i<10; i++) {

media = media+exemplo[i];

}

printf(&quot;A media é %f &quot;,(float)media/10);

}

“ Perdeu Playboy! Tem mais exercício !” 1. Dada uma seqüência de números, imprimir a ordem inversa da leitura. 2. Escrever um algorítmo que declare um vetor de reais e leia as notas de 20 alunos. 3. Altere o algoritmo para calcular a média. 4. Escrever um algorítmo que calcule e escreva o somatório dos valores armazenados numa variável composta unidimensional A de 100 elementos numéricos 5. Escrever um algorítmo que leia um vetor de 30 elementos numéricos e verifique se existem valores iguais a 24, se existirem escrever quantas vezes aparecem e quais as posições em que estão armazenados. Obs: Desenvolver somente o algorítmo! NO PAPEL MANO! Obs2: Nada de C por enquanto!

1. Dada uma seqüência de números, imprimir a ordem inversa da leitura.

2. Escrever um algorítmo que declare um vetor de reais e leia as notas de 20 alunos.

3. Altere o algoritmo para calcular a média.

4. Escrever um algorítmo que calcule e escreva o somatório dos valores armazenados numa variável composta unidimensional A de 100 elementos numéricos

5. Escrever um algorítmo que leia um vetor de 30 elementos numéricos e verifique se existem valores iguais a 24, se existirem escrever quantas vezes aparecem e quais as posições em que estão armazenados.

Obs: Desenvolver somente o algorítmo! NO PAPEL MANO!

Obs2: Nada de C por enquanto!

Correção – Exercício 1 inicio (){ inteiro m[3] [2], I , j ; m[0][0]=1; m[0][1]=2; m[1][0]=3; m[1][1]=4; m[2][0]=5; m[2][1]=6; PARA (I igual a 0 ; I menor que 3 ; I = I + 1){ PARA (j igual a 0 ; j menor que 2 ; j = j + 1) ESCREVA ( “ %2d “ , m [ I ] [ j ]); } ESCREVER (&quot; &quot;); PARA ( I igual a 2; I maior e igual a 0 ; I = I -1 ){ PARA (j igual a 1; j maior e igual a 0; j = j -1) ESCREVER (“ %2d &quot;, m [ I ] [ j ] ); } ESCREVER (&quot; &quot;); PAUSA }

inicio (){

inteiro m[3] [2], I , j ;

m[0][0]=1; m[0][1]=2; m[1][0]=3; m[1][1]=4; m[2][0]=5; m[2][1]=6;

PARA (I igual a 0 ; I menor que 3 ; I = I + 1){

PARA (j igual a 0 ; j menor que 2 ; j = j + 1)

ESCREVA ( “ %2d “ , m [ I ] [ j ]);

}

ESCREVER (&quot; &quot;);

PARA ( I igual a 2; I maior e igual a 0 ; I = I -1 ){

PARA (j igual a 1; j maior e igual a 0; j = j -1)

ESCREVER (“ %2d &quot;, m [ I ] [ j ] );

}

ESCREVER (&quot; &quot;);

PAUSA

}

Exercício 2 inicio(){ Real str [20]; Inteiro i; PARA (I igual a 0; I menor que 20; i=i+1){ LER( “ %f &quot;, &str[i] ); } PAUSA; }

inicio(){

Real str [20];

Inteiro i;

PARA (I igual a 0; I menor que 20; i=i+1){

LER( “ %f &quot;, &str[i] );

}

PAUSA;

}

Exercício 3 INICIO () { REAL str [20], media; INTEIRO I; PARA (I igual a 0; I menor que 20; I = I + 1){ LER( “ %f &quot;, &str[i] ); } media=0; PARA (I igual a 0; I menor que 20; I = I + 1){ media = media + str[i]; } media = media/20; PAUSA }

INICIO () {

REAL str [20], media;

INTEIRO I;

PARA (I igual a 0; I menor que 20; I = I + 1){

LER( “ %f &quot;, &str[i] );

}

media=0;

PARA (I igual a 0; I menor que 20; I = I + 1){

media = media + str[i];

}

media = media/20;

PAUSA

}

Exercício 4 INICIO ( ) { inteiro A[100] , soma , i; PARA ( I igual a ; I menor que 100; i++){ A[i] = 1+A[i]; } soma=0; PARA ( I igual a ; I menor que 100; i++){ soma = soma + A[i]; } ESCREVER ( “ %d “ , soma); PAUSA }

INICIO ( ) {

inteiro A[100] , soma , i;

PARA ( I igual a ; I menor que 100; i++){

A[i] = 1+A[i];

}

soma=0;

PARA ( I igual a ; I menor que 100; i++){

soma = soma + A[i];

}

ESCREVER ( “ %d “ , soma);

PAUSA

}

Exercício 5 – Primeira solução INICIO ( ) { inteiro A [ 30 ] , aux = 0 , I , posicao; PARA ( I igual a 0 ; I menor que 30 ; I = I + 1 ) { LER ( “ %d “ , & A [ I ] ) ; } PARA ( I igual a 0 ; I menor que 30 ; I = I + 1 ) { SE ( A [ I ] == 24) { aux = aux+1; posicao=i; } SENÃO ESCREVER (&quot;Nada no indice A[%d] &quot;,i); } ESCREVER ( “ % d % d &quot;, aux , posicao); PAUSA; } QUAIS SÃO AS LIMITAÇÕES DESSA SOLUÇÃO? 1 – Somente uma variavel pode ser encontrada 2 – Não possui memória para armazenar mais de uma posição 3 – Não escreve todas as posições caso encontre mais de um número 24

INICIO ( ) {

inteiro A [ 30 ] , aux = 0 , I , posicao;

PARA ( I igual a 0 ; I menor que 30 ; I = I + 1 ) {

LER ( “ %d “ , & A [ I ] ) ;

}

PARA ( I igual a 0 ; I menor que 30 ; I = I + 1 ) {

SE ( A [ I ] == 24) {

aux = aux+1;

posicao=i;

}

SENÃO ESCREVER (&quot;Nada no indice A[%d] &quot;,i);

}

ESCREVER ( “ % d % d &quot;, aux , posicao);

PAUSA;

}

QUAIS SÃO AS LIMITAÇÕES DESSA SOLUÇÃO?

1 – Somente uma variavel pode ser encontrada

2 – Não possui memória para armazenar mais de uma posição

3 – Não escreve todas as posições caso encontre mais de um número 24

6 -Alterar o exercício anterior para armazenar quantos números forem necessários para dar uma solução completa!

Só um detalhe INICIO ( ) { inteiro a,I; LER (“ % d “ , &a); inteiro matriz[a]; Para ( I igual a 0; I menor que a ; i++) Ler ( “ % d “ , &matriz[I]) ; Para ( I igual a 0; I menor que a ; i++) Ler ( “ %d “ , matriz[i]); PAUSA; }

INICIO ( ) {

inteiro a,I;

LER (“ % d “ , &a);

inteiro matriz[a];

Para ( I igual a 0; I menor que a ; i++)

Ler ( “ % d “ , &matriz[I]) ;

Para ( I igual a 0; I menor que a ; i++)

Ler ( “ %d “ , matriz[i]);

PAUSA;

}

Ordenação de um vetor Não é mágica e sim lógica! 6 1 5 2 3 4 5 4 3 2 1 0 6 5 4 3 2 1 5 4 3 2 1 0

Não é mágica e sim lógica!

Como eu já disse em aula e repito…é mais f ácil do que ganhar do Palmeiras e Santos …esses times sem estruturas! SPFC=caf é com leite… Um algor í tmo de ordenação consiste na comparação de cada elemento com todos os elementos subseqüentes. O elemento será trocado com o outro a depender dele ser menor ou maior. Esse é um dos tipos mais simples!!!

Um algor í tmo de ordenação consiste na comparação de cada elemento com todos os elementos subseqüentes. O elemento será trocado com o outro a depender dele ser menor ou maior.

Esse é um dos tipos mais simples!!!

REALIZAR NO PAPEL “BRODI” A ORDENAÇÃO DE VETORES Início tipo vetor[LIMITE], I,J, AUX; para (I=0; I < LIMITE; I++){ ler (vetor[I]); para (I=0; i<LIMITE;I++){ para (J=i; J<LIMITE; J++){ se (vetor [I] > vetor [J]) então { AUX = vetor[I]; vetor[I] = vetor[J]; vetor [J] =AUX; } } // fim para } //fim para

Início

tipo vetor[LIMITE], I,J, AUX;

para (I=0; I < LIMITE; I++){

ler (vetor[I]);

para (I=0; i<LIMITE;I++){

para (J=i; J<LIMITE; J++){

se (vetor [I] > vetor [J]) então {

AUX = vetor[I];

vetor[I] = vetor[J];

vetor [J] =AUX;

}

} // fim para

} //fim para

E como fica a pesquisa em vetores? Para encontrar um valor em vetor você deve realizar uma “Pesquisa Sequencial” e testar esse valor. Qual é o problema desta pesquisa? Temos um outro modelo que se chama Pesquisa Binária . PESQUISAR!

Para encontrar um valor em vetor você deve realizar uma “Pesquisa Sequencial” e testar esse valor.

Qual é o problema desta pesquisa?

Temos um outro modelo que se chama Pesquisa Binária . PESQUISAR!

Matriz Bidimensional X o ç o r t 5 X X E s s e 4 X X X X X E 3 X X O c a s 2 X X X E u q 1 X X X S a M 0 5 4 3 2 1 0

Caracter festas[6][6]; Temos duas maneiras de inserir informações em matrizes com mais de um indice: Na mão: festas[5][3] = ‘ç’; ou podemos utilizar dois laços: um para controlar as colunas e um para controlar as linhas.

Caracter festas[6][6];

Temos duas maneiras de inserir informações em matrizes com mais de um indice:

Na mão: festas[5][3] = ‘ç’;

ou podemos utilizar dois laços: um para controlar as colunas e um para controlar as linhas.

Exemplo Inicio inteiro M[3][2], i,j; M [0,0] =1; M [0,1] = 2; M [1,0] = 3; M [1,1] = 4; M [2,0] = 5; M [2,1] = 6; para (i igual 0; i menor que 3; i = i + 1 ) //linha para(j igual 0; j menor que 2; j = j + 1) //coluna escreva ( “ %d ”, M[ j, i ]); // ANALISAR ESTA LINHA!!! Fim

Inicio

inteiro M[3][2], i,j;

M [0,0] =1;

M [0,1] = 2;

M [1,0] = 3;

M [1,1] = 4;

M [2,0] = 5;

M [2,1] = 6;

para (i igual 0; i menor que 3; i = i + 1 ) //linha

para(j igual 0; j menor que 2; j = j + 1) //coluna

escreva ( “ %d ”, M[ j, i ]); // ANALISAR ESTA LINHA!!!

Fim

Matrizes bidimensionais Define limite 5 Inteiro I,j,mat[limite][limite]; Para (i = 0; i < m; i = i + 1) Para (j = 0; j < n; j = j + 1) ler(&quot;%d&quot;, &mat[i][j]);

Define limite 5

Inteiro I,j,mat[limite][limite];

Para (i = 0; i < m; i = i + 1)

Para (j = 0; j < n; j = j + 1)

ler(&quot;%d&quot;, &mat[i][j]);

EXEMPLO #include <stdio.h> #include <stdlib.h> main(){ int i,j,matriz[3][2]; for(i=0; i<3;i++){ for(j=0;j<2;j++){ scanf(&quot;%d&quot;,&matriz[i][j]); } } for(i=0; i<3;i++){ printf(&quot; &quot;); for(j=0;j<2;j++){ printf(&quot;[%d]&quot;,matriz[i][j]); } } system(&quot;pause&quot;); }

#include <stdio.h>

#include <stdlib.h>

main(){

int i,j,matriz[3][2];

for(i=0; i<3;i++){

for(j=0;j<2;j++){

scanf(&quot;%d&quot;,&matriz[i][j]);

}

}

for(i=0; i<3;i++){

printf(&quot; &quot;);

for(j=0;j<2;j++){

printf(&quot;[%d]&quot;,matriz[i][j]);

}

}

system(&quot;pause&quot;);

}

O que esta faltando????? 7. Analisar as linhas de comando do programa matriz2d.cpp 8. Dada duas matrizes de inteiros com m linhas e n colunas calcular soma dos elementos. Dica: Você tem que ler as duas matrizes e somar em uma terceira. 9. Realizar o mesmo exercício acima só que deve realizar o produto entre as matrizes! 10. Dada uma matriz real  A m x n , verificar se existem elementos repetidos em A .

7. Analisar as linhas de comando do programa matriz2d.cpp

8. Dada duas matrizes de inteiros com m linhas e n colunas calcular soma dos elementos. Dica: Você tem que ler as duas matrizes e somar em uma terceira.

9. Realizar o mesmo exercício acima só que deve realizar o produto entre as matrizes!

10. Dada uma matriz real  A m x n , verificar se existem elementos repetidos em A .

Extra Classe Faça um programa que leia a idade de 50 pessoas e apresente a média de todas, além de identificar a mais velha e a posição que em que ela se encontra na matriz. Escrever um programa que solicite e leia letra por letra o nome completo de uma pessoa. O caractere sustenido “#” indica o fim do nome. Depois apresentar o nome limpo (sem o “#”, no centro da tela). Escrever um programa que leia uma matriz 4x4, multiplique os elementos da sua diagonal principal por uma constante K , também lida, e escreva a matriz resultante.

Faça um programa que leia a idade de 50 pessoas e apresente a média de todas, além de identificar a mais velha e a posição que em que ela se encontra na matriz.

Escrever um programa que solicite e leia letra por letra o nome completo de uma pessoa. O caractere sustenido “#” indica o fim do nome. Depois apresentar o nome limpo (sem o “#”, no centro da tela).

Escrever um programa que leia uma matriz 4x4, multiplique os elementos da sua diagonal principal por uma constante K , também lida, e escreva a matriz resultante.

Podemos ter ainda mais uma dimensão Caracter Matrix [5][9][3]; Claro que teremos 3 laços para controlar esse tipo 1 2 3 ‘ o’ ‘ h’ 1 2 3 4 5 1 2 3 4 5 6 7 8 9 ‘ a’

Caracter Matrix [5][9][3];

Claro que teremos 3 laços para controlar esse tipo

Strings – Não é bicho de 7 cabeças String nada mais é do que um conjunto de caracteres (ou um vetor, só isso). C/C++ possui comando próprios para manipulação desse conjunto. Uma &quot;string&quot; é definida como sendo constituida de um vetor de caracteres (tipo de dado char - 1 byte) que é terminada por um &quot;nulo&quot;. Um nulo é especificado usando-se '' que é zero. Por exemplo, se quisermos declarar um vetor &quot;str&quot; que possa armazenar uma string de 10 caracteres, escrevemos: caracter str [11]; Não é necessario adicionar manualmente o nulo (“”) no final das constantes string - o compilador faz isso automaticamente.

String nada mais é do que um conjunto de caracteres (ou um vetor, só isso).

C/C++ possui comando próprios para manipulação desse conjunto.

Uma &quot;string&quot; é definida como sendo constituida de um vetor de caracteres (tipo de dado char - 1 byte) que é terminada por um &quot;nulo&quot;. Um nulo é especificado usando-se '' que é zero.

Por exemplo, se quisermos declarar um vetor &quot;str&quot; que possa armazenar uma string de 10 caracteres, escrevemos:

caracter str [11];

Não é necessario adicionar manualmente o nulo (“”) no final das constantes string - o compilador faz isso automaticamente.

Funções especificas para manipulação de strings getstr() – Recebe uma string - dev-cpp gets() strcpy() – Copia uma string strcat() – Concatena duas strings strlen() – Retonar o comprimento de uma string strcmp() – Compara a ordenação alfabética de uma string Biblioteca <string.h>

getstr() – Recebe uma string - dev-cpp gets()

strcpy() – Copia uma string

strcat() – Concatena duas strings

strlen() – Retonar o comprimento de uma string

strcmp() – Compara a ordenação alfabética de uma string

Biblioteca <string.h>

Exemplo int main(){ char produto[ ]={'a','b','a','c','a','x','i',''}; printf(&quot;%s&quot;,produto); system(&quot;PAUSE&quot;); } Ou – Há autores que consideram esta forma ilegal! int main(){ char produto[ ]=“abacaxi”; printf(&quot;%s&quot;,produto); system(&quot;PAUSE&quot;); } Inicio (){ Caracter produto[ ]={a,b,a,c,a,x,i}; Escrever (“%s”,produto); }

int main(){

char produto[ ]={'a','b','a','c','a','x','i',''};

printf(&quot;%s&quot;,produto);

system(&quot;PAUSE&quot;);

}

Ou – Há autores que consideram esta forma ilegal!

int main(){

char produto[ ]=“abacaxi”;

printf(&quot;%s&quot;,produto);

system(&quot;PAUSE&quot;);

}

Inicio (){

Caracter produto[ ]={a,b,a,c,a,x,i};

Escrever (“%s”,produto);

}

Copiar uma string… Basta ler e copiar para uma variavel que recebe este valor. strcpy(string_que_recebe,string_lida); Inicio(){ Caracter string_que_recebe[80],string_lida[80]; Ler(string_lida); strcpy(string_que_recebe,string_lida); Escrever(“%s”,string_que_recebe); }

Basta ler e copiar para uma variavel que recebe este valor.

strcpy(string_que_recebe,string_lida);

Inicio(){

Caracter string_que_recebe[80],string_lida[80];

Ler(string_lida);

strcpy(string_que_recebe,string_lida);

Escrever(“%s”,string_que_recebe);

}

Analisar as linhas do código abaixo #include <string.h> main(){ char string_que_recebe[80],string_lida[80],base[10]=&quot;teste&quot;; char concatena[80]; int r; gets(string_lida); strcpy(string_que_recebe,string_lida); r=strlen(string_que_recebe); if(strcmp(string_que_recebe,base)==0){ strcat(string_lida,string_que_recebe); printf(&quot;%s &quot;,string_que_recebe); printf(&quot;%s &quot;,string_lida); printf(&quot;%d &quot;,r); }else printf (&quot; String diferente!&quot;); system(&quot;PAUSE&quot;); }

#include <string.h>

main(){

char string_que_recebe[80],string_lida[80],base[10]=&quot;teste&quot;;

char concatena[80];

int r;

gets(string_lida);

strcpy(string_que_recebe,string_lida);

r=strlen(string_que_recebe);

if(strcmp(string_que_recebe,base)==0){

strcat(string_lida,string_que_recebe);

printf(&quot;%s &quot;,string_que_recebe);

printf(&quot;%s &quot;,string_lida);

printf(&quot;%d &quot;,r);

}else printf (&quot; String diferente!&quot;);

system(&quot;PAUSE&quot;);

}

EXERCÍCIO – NO LAB 12. Verificar o funcionamento das seguintes funções escrevendo um programa para testar as funções. Verifique o exemplo string1.cpp strcpy() strcat() strlen() strcmp()

12. Verificar o funcionamento das seguintes funções escrevendo um programa para testar as funções. Verifique o exemplo string1.cpp

strcpy()

strcat()

strlen()

strcmp()

Fun ção??!?!?!?!?!?!? AFFFF…

Fun ção??!?!?

Fun ção?!?!?!?!? Esse é chic…

Funções - ahhh bom… São expressões para auxiliar na programação, onde são executados repetidamente uma série de passos, podemos ter funções para qualquer tipo de objetivo. Portanto podemos “economizar” na digitação ou melhor ainda, deixar o algorítmo mais limpo, sendo este mais simples e fácil de entender.

São expressões para auxiliar na programação, onde são executados repetidamente uma série de passos, podemos ter funções para qualquer tipo de objetivo.

Portanto podemos “economizar” na digitação ou melhor ainda, deixar o algorítmo mais limpo, sendo este mais simples e fácil de entender.

Onde que entra e como fica? #Bibliotecas Funcao teste( ); Funcao teste2( ); INICIO ( ) { Programa… teste( ); teste2( ); Programa… } Funcao teste( ){ Programa… } Funcao teste2( ){ Programa… }

#Bibliotecas

Funcao teste( );

Funcao teste2( );

INICIO ( ) {

Programa…

teste( );

teste2( );

Programa…

}

Funcao teste( ){

Programa…

}

Funcao teste2( ){

Programa…

}

Exemplo #BIBLIOTECAS funcao limpa_tela(); INICIO ( ) { limpa_tela( ); ESCREVER (&quot;Vai ser impresso depois&quot;); limpa_tela( ); } INICIO limpa_tela(){ Sistema (&quot;cls&quot;); ESCREVER (&quot;Teste&quot;); Sistema (&quot;cls&quot;); }

#BIBLIOTECAS

funcao limpa_tela();

INICIO ( ) {

limpa_tela( );

ESCREVER (&quot;Vai ser impresso depois&quot;);

limpa_tela( );

}

INICIO limpa_tela(){

Sistema (&quot;cls&quot;);

ESCREVER (&quot;Teste&quot;);

Sistema (&quot;cls&quot;);

}

#include <stdio.h> #include <conio.h> #include <stdlib.h> void limpa_tela(); main(){ limpa_tela(); printf(&quot;Vai ser impresso depois&quot;); getch( ); limpa_tela( ); system(&quot;PAUSE&quot;); } void limpa_tela(){ system(&quot;cls&quot;); printf(&quot;Teste&quot;); getch( ); system(&quot;cls&quot;); }

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

void limpa_tela();

main(){

limpa_tela();

printf(&quot;Vai ser impresso depois&quot;);

getch( );

limpa_tela( );

system(&quot;PAUSE&quot;);

}

void limpa_tela(){

system(&quot;cls&quot;);

printf(&quot;Teste&quot;);

getch( );

system(&quot;cls&quot;);

}

E Quando quero realizar uma conta? Imagine que você terá que realizar N vezes um cálculo numérico para uma determinada atividade. Como realizar isto com uma função? Quando realizarmos a “chamada da função” nos passamos as variaveis que serão utilizadas nesta parte do cálculo. Ex: funcao(a); funcao2(b); … “a” e “b” são letras ou números que foram recebidos pelo computador. E como fica a função??? Do mesmo jeito? Não! No inicio do programa você tem que dizer quantas variaveis serão utilizadas e na função em si e qual o seu nome. funcao (inteiro); funcao2 (caracter); Inicio funcao (inteiro a) ou Inicio funcao2 (caracter b)

Imagine que você terá que realizar N vezes um cálculo numérico para uma determinada atividade. Como realizar isto com uma função?

Quando realizarmos a “chamada da função” nos passamos as variaveis que serão utilizadas nesta parte do cálculo.

Ex: funcao(a); funcao2(b); … “a” e “b” são letras ou números que foram recebidos pelo computador.

E como fica a função??? Do mesmo jeito? Não!

No inicio do programa você tem que dizer quantas variaveis serão utilizadas e na função em si e qual o seu nome.

funcao (inteiro);

funcao2 (caracter);

Inicio funcao (inteiro a) ou

Inicio funcao2 (caracter b)

Exemplo #biblioteca <math.h> real operador ( real x, real y); INICIO ( ) { real x,y,r; ESCREVER (&quot; Digite um numero a ser elevado&quot;); LER (&quot;%f,&quot;,&x); ESCREVER (&quot; Digite o expoente&quot;); LER(&quot;%f,&quot;,&y); r= operador(x,y); ESCREVER (&quot; Resultado %f&quot;,r); &quot;PAUSA&quot;; } real operador( real x, real y){ real resultado; resultado=expoente ( log ( x ) * y ); returna resultado; }

#biblioteca <math.h>

real operador ( real x, real y);

INICIO ( ) {

real x,y,r;

ESCREVER (&quot; Digite um numero a ser elevado&quot;);

LER (&quot;%f,&quot;,&x);

ESCREVER (&quot; Digite o expoente&quot;);

LER(&quot;%f,&quot;,&y);

r= operador(x,y);

ESCREVER (&quot; Resultado %f&quot;,r);

&quot;PAUSA&quot;;

}

real operador( real x, real y){

real resultado;

resultado=expoente ( log ( x ) * y );

returna resultado;

}

13. Lembra da ordenação? ANALISAR LINHA A LINHA

void limpa_tela(); void ordena(char[]); main(){ char s[30]; char opcao='s'; limpa_tela(); while (opcao=='s'){ printf(&quot;Digite uma string&quot;); gets(s); ordena(s); printf(&quot;Caracteres ordenados&quot;); printf(&quot;%s&quot;,s); printf(&quot;Outra vez?&quot;); opcao=getch(); } system(&quot;PAUSE&quot;); } void limpa_tela(){ system(&quot;cls&quot;); printf(&quot;Programa de ordenação de um vetor&quot;); getch(); system(&quot;cls&quot;); } void ordena(char v[]){ int i,j,aux; for(i=0;i<strlen(v)-1;i++) for (j=i+1;j<strlen(v);j++){ if(v[i]>v[j]){ aux=v[i]; v[i]=v[j]; v[j]=aux; } } }

void limpa_tela();

void ordena(char[]);

main(){

char s[30]; char opcao='s'; limpa_tela();

while (opcao=='s'){

printf(&quot;Digite uma string&quot;);

gets(s); ordena(s);

printf(&quot;Caracteres ordenados&quot;);

printf(&quot;%s&quot;,s);

printf(&quot;Outra vez?&quot;); opcao=getch();

}

system(&quot;PAUSE&quot;);

}

void limpa_tela(){

system(&quot;cls&quot;); printf(&quot;Programa de ordenação de um vetor&quot;);

getch(); system(&quot;cls&quot;);

}

void ordena(char v[]){

int i,j,aux;

for(i=0;i<strlen(v)-1;i++)

for (j=i+1;j<strlen(v);j++){

if(v[i]>v[j]){

aux=v[i]; v[i]=v[j]; v[j]=aux;

}

}

}

AHHHH… Realizar os algorítmos abaixo 14. Realizar uma função para troca de valores entre duas variaveis. 15. Realizar uma função para tirar a média de um vetor. 16. Realizar um função para verificar se a matriz é simétrica.

14. Realizar uma função para troca de valores entre duas variaveis.

15. Realizar uma função para tirar a média de um vetor.

16. Realizar um função para verificar se a matriz é simétrica.

Ponteiros Um ponteiro proporciona um modo de acesso a variáveis sem referenciá-las diretamente O mecanismo usado para isto é o endereço da variável, que age como intermediário entre a variável e o programa que a acessa. Ponteiro = representação simbólica de um endereço

Um ponteiro proporciona um modo de acesso a variáveis sem referenciá-las diretamente

O mecanismo usado para isto é o endereço da variável, que age como intermediário entre a variável e o programa que a acessa.

Ponteiro = representação simbólica de um endereço

Por que usamos ponteiros? São usados situações em que a passagem de valores é dificil ou indesejável. Razões: Fornecem maneiras com as quais funções podem realmente modificar os argumentos que recebem Para passar matrizes e strings mais convenientemente de uma função para outra Manipular matrizes mais facilmente através da movimentação de ponteiros para elas, em vez da própria matriz Criar estruturas de dados complexas, como listas encadeadas e árvores binárias, onde uma estrutura referencia uma outra Para comunicar informações sobre a memória (malloc) O mais importante, códigos mais rápidos e eficientes.

São usados situações em que a passagem de valores é dificil ou indesejável.

Razões:

Fornecem maneiras com as quais funções podem realmente modificar os argumentos que recebem

Para passar matrizes e strings mais convenientemente de uma função para outra

Manipular matrizes mais facilmente através da movimentação de ponteiros para elas, em vez da própria matriz

Criar estruturas de dados complexas, como listas encadeadas e árvores binárias, onde uma estrutura referencia uma outra

Para comunicar informações sobre a memória (malloc)

O mais importante, códigos mais rápidos e eficientes.

Mas e o algorítmo? Tem uma particularidade o “*” e o “&” * indica ao compilador que a variável não irá armazenar um valor e sim um endereço & indica o endereço da variavel. Inteiro contador=10; //inteiro com valor 10 Inteiro *ponteiro; //ponteiro para um inteiro ponteiro=&contador; //nos dá o endereço do contador que esta armazenando em ponteiro *ponteiro=12; //o valor do contador agora é 12!

Tem uma particularidade o “*” e o “&”

* indica ao compilador que a variável não irá armazenar um valor e sim um endereço

& indica o endereço da variavel.

Inteiro contador=10; //inteiro com valor 10

Inteiro *ponteiro; //ponteiro para um inteiro

ponteiro=&contador; //nos dá o endereço do contador que esta armazenando em ponteiro

*ponteiro=12; //o valor do contador agora é 12!

Algorítmo de exemplo Inicio() inteiro numero,valor; inteito *p; numero=55; p=&num; valor=*p; escrever (valor); escrever (p); escrever (*p); Pausa; }

Inicio()

inteiro numero,valor;

inteito *p;

numero=55;

p=&num;

valor=*p;

escrever (valor);

escrever (p);

escrever (*p);

Pausa;

}

Em C #include <stdio.h> #include <stdlib.h> int main (){ int num,valor; int *p; num=55; p=&num; valor=*p; printf (&quot; %d &quot;,valor); printf (&quot;Endereco para onde o ponteiro aponta: %p &quot;,p); printf (&quot;Valor da variavel apontada: %d &quot;,*p); system(&quot;pause&quot;); }

#include <stdio.h>

#include <stdlib.h>

int main (){

int num,valor;

int *p;

num=55;

p=&num;

valor=*p;

printf (&quot; %d &quot;,valor);

printf (&quot;Endereco para onde o ponteiro aponta: %p &quot;,p);

printf (&quot;Valor da variavel apontada: %d &quot;,*p);

system(&quot;pause&quot;);

}

Mais um exemplo Inicio (){ inteiro numero,*p; numero=55; p=&num; escrever(numero); *p=100; escrever(numero); Pausa; }

Inicio (){

inteiro numero,*p;

numero=55;

p=&num;

escrever(numero);

*p=100;

escrever(numero);

Pausa;

}

Em C #include <stdio.h> #include <stdlib.h> int main (){ int num,*p; num=55; p=&num; printf (&quot; Valor inicial: %d &quot;,num); *p=100; printf (&quot; Valor final: %d &quot;,num); system(&quot;pause&quot;); }

#include <stdio.h>

#include <stdlib.h>

int main (){

int num,*p;

num=55;

p=&num;

printf (&quot; Valor inicial: %d &quot;,num);

*p=100;

printf (&quot; Valor final: %d &quot;,num);

system(&quot;pause&quot;);

}

Acabou? Pesquisar: incremento e decremento de ponteiros.

Pesquisar: incremento e decremento de ponteiros.

E o que esta fazendo este código? #include <stdio.h> #include <stdlib.h> int main() { int y, *p, x; y = 0; p = &y; x = *p; x = 4; (*p)++; x--; (*p) += x; printf (&quot;y = %d &quot;, y); system(&quot;pause&quot;); }

#include <stdio.h>

#include <stdlib.h>

int main()

{

int y, *p, x;

y = 0;

p = &y;

x = *p;

x = 4;

(*p)++;

x--;

(*p) += x;

printf (&quot;y = %d &quot;, y);

system(&quot;pause&quot;);

}

Estruturas Qual é o problema das matrizes quando queremos adicionar vários tipos diferentes? Quando usamos dados desiguais usamos estruturas. “ É uma coleção de uma ou mais variáveis, possivelmente de tipos diferentes, colocadas juntas sob um único nome. (estruturas são chamadas de registro em algumas linguagens)”. Pode-se usar várias matrizes para armazenar diversos tipos de dados, não é a maneira mais recomendado pela dificuldade de manipulação.

Qual é o problema das matrizes quando queremos adicionar vários tipos diferentes?

Quando usamos dados desiguais usamos estruturas.

“ É uma coleção de uma ou mais variáveis, possivelmente de tipos diferentes, colocadas juntas sob um único nome. (estruturas são chamadas de registro em algumas linguagens)”.

Pode-se usar várias matrizes para armazenar diversos tipos de dados, não é a maneira mais recomendado pela dificuldade de manipulação.

Declarando uma estrutura Primeiro você deve definir o tipo de estrutura que você quer criar. Uma estrutura pode conter qualquer número de membros de diferentes tipos. Struct facil { int numero; char caracter; } Especificação do tipo de dado Struct Nome da estrutura Facil Membros da estrutura Int numero; Char caracter;

Primeiro você deve definir o tipo de estrutura que você quer criar.

Uma estrutura pode conter qualquer número de membros de diferentes tipos.

Struct facil {

int numero;

char caracter;

}

Especificação do tipo de dado

Struct

Nome da estrutura

Facil

Membros da estrutura

Int numero;

Char caracter;

Acabamos que criar um novo tipo de dados chamado “Facil” Composto por dois elementos: uma variavel chamada numero e outra caracter. Tenha isso na cabeça: “uma estrutura é um tipo de dado cujo formato é definido pelo programador”.

Acabamos que criar um novo tipo de dados chamado “Facil”

Composto por dois elementos: uma variavel chamada numero e outra caracter.

Tenha isso na cabeça: “uma estrutura é um tipo de dado cujo formato é definido pelo programador”.

Declarando variaveis Agora devemos declarar as variaveis. Struct facil x; Struct – é uma estrutura Facil – é o tipo de estrutura X – é o nome da variavel. Acessando os membros da estrutura. x.numero =2; x.caracter = ‘R’; O Ponto conecta o nome da variavel estrutura a um membro da estrutura.

Agora devemos declarar as variaveis.

Struct facil x;

Struct – é uma estrutura

Facil – é o tipo de estrutura

X – é o nome da variavel.

Acessando os membros da estrutura.

x.numero =2;

x.caracter = ‘R’;

O Ponto conecta o nome da variavel estrutura a um membro da estrutura.

Exemplo Inicio () { estrutura tipo { inteiro numero; caracter letra; }; estrutura tipo x1; estrutura tipo x2; x1.numero =2; x1.letra=‘R’; x2.numero =3; x2.letra=‘o’; Escrever (“%d %d“, x1.numero, x2.numero); Escrever (“%c %c“, x1.letra, x2.letra); } #include <stdio.h> #include <stdlib.h> main () { struct tipo { int numero; char letra; }; struct tipo x1; struct tipo x2; x1.numero =2; x1.letra='R'; x2.numero =3; x2.letra='o'; printf (&quot;%d %d&quot;, x1.numero, x2.numero); printf (&quot;%c %c&quot;, x1.letra, x2.letra); system (&quot;pause&quot;); }

Inicio () {

estrutura tipo {

inteiro numero;

caracter letra;

};

estrutura tipo x1;

estrutura tipo x2;

x1.numero =2;

x1.letra=‘R’;

x2.numero =3;

x2.letra=‘o’;

Escrever (“%d %d“, x1.numero, x2.numero);

Escrever (“%c %c“, x1.letra, x2.letra);

}

#include <stdio.h>

#include <stdlib.h>

main () {

struct tipo {

int numero;

char letra;

};

struct tipo x1;

struct tipo x2;

x1.numero =2;

x1.letra='R';

x2.numero =3;

x2.letra='o';

printf (&quot;%d %d&quot;, x1.numero, x2.numero);

printf (&quot;%c %c&quot;, x1.letra, x2.letra);

system (&quot;pause&quot;);

}

OU… Inicio () { estrutura tipo { inteiro numero; caracter letra; } x1,x2; x1.numero =2; x1.letra=‘R’; x2.numero =3; x2.letra=‘o’; Escrever (“%d %d“, x1.numero, x2.numero); Escrever (“%c %c“, x1.letra, x2.letra); }

Inicio () {

estrutura tipo {

inteiro numero;

caracter letra;

} x1,x2;

x1.numero =2;

x1.letra=‘R’;

x2.numero =3;

x2.letra=‘o’;

Escrever (“%d %d“, x1.numero, x2.numero);

Escrever (“%c %c“, x1.letra, x2.letra);

}

Exercício Elaborar uma estrutura para armazenar uma lista de livros. Antes de realizar a estrutura você deve perguntar: “Quais são as caracteristicas de um livro?” Título, autor, editora, número de páginas, registro, preço, etc…

Elaborar uma estrutura para armazenar uma lista de livros. Antes de realizar a estrutura você deve perguntar: “Quais são as caracteristicas de um livro?”

Título, autor, editora, número de páginas, registro, preço, etc…

#include <stdio.h> #include <stdlib.h> #include <conio.h> main () { struct tipo { int registro; char titulo[30]; }; struct tipo l1; struct tipo l2; fflush(stdin); printf (&quot;Digite o número do livro:&quot;); scanf(&quot;%d&quot;,&l1.registro); printf (&quot; Digite o nome do livro:&quot;); fflush(stdin); gets(l1.titulo); printf (&quot;%d&quot;, l1.registro); printf (&quot; %s&quot;, l1.titulo); system (&quot;pause&quot;); }

#include <stdio.h>

#include <stdlib.h>

#include <conio.h>

main () {

struct tipo {

int registro;

char titulo[30];

};

struct tipo l1;

struct tipo l2;

fflush(stdin);

printf (&quot;Digite o número do livro:&quot;);

scanf(&quot;%d&quot;,&l1.registro);

printf (&quot; Digite o nome do livro:&quot;);

fflush(stdin);

gets(l1.titulo);

printf (&quot;%d&quot;, l1.registro);

printf (&quot; %s&quot;, l1.titulo);

system (&quot;pause&quot;);

}

main () { struct tipo { int registro; char titulo[30]; }; struct tipo l1[5]; int i; for(i=0;i<5;i++){ fflush(stdin); printf (&quot; Digite o número do livro:&quot;); scanf(&quot;%d&quot;,&l1[i].registro); printf (&quot; Digite o nome do livro:&quot;); fflush(stdin); gets(l1[i].titulo); } for(i=0;i<5;i++){ printf (&quot; %d&quot;, l1[i].registro); printf (&quot; %s&quot;, l1[i].titulo); } system (&quot;pause&quot;); }

main () {

struct tipo {

int registro;

char titulo[30];

};

struct tipo l1[5];

int i;

for(i=0;i<5;i++){

fflush(stdin);

printf (&quot; Digite o número do livro:&quot;);

scanf(&quot;%d&quot;,&l1[i].registro);

printf (&quot; Digite o nome do livro:&quot;);

fflush(stdin);

gets(l1[i].titulo);

}

for(i=0;i<5;i++){

printf (&quot; %d&quot;, l1[i].registro);

printf (&quot; %s&quot;, l1[i].titulo);

}

system (&quot;pause&quot;);

}

Para casa Pesquisar os seguintes temas: Estruturas aninhadas Estruturas para funções Matrizes de estruturas Ponteiros em estruturas

Pesquisar os seguintes temas:

Estruturas aninhadas

Estruturas para funções

Matrizes de estruturas

Ponteiros em estruturas

Não acabou ainda… Criar uma estrutura para descrever restaurantes. Os membros devem armazenar o nome, endereço, preço médio e tipo de comida. Criar uma matriz de estruturas e escrever uma função que imprima todos os restaurantes de um certo tipo de comida.

Criar uma estrutura para descrever restaurantes. Os membros devem armazenar o nome, endereço, preço médio e tipo de comida. Criar uma matriz de estruturas e escrever uma função que imprima todos os restaurantes de um certo tipo de comida.

Arquivos É a capacidade de produzir informações que estão sendo executadas em determinados momentos e transformar em informações permanentes. Mesmo após que nos desligamos o computador. Chamamos isso de arquivos. Podemos ter dois tipos de arquivos em C – os Binários e os arquivos ASCII.

É a capacidade de produzir informações que estão sendo executadas em determinados momentos e transformar em informações permanentes. Mesmo após que nos desligamos o computador. Chamamos isso de arquivos.

Podemos ter dois tipos de arquivos em C – os Binários e os arquivos ASCII.

A estrutura FILE FILE é uma estrutura pré definida para compor o ponteiro para as ações com os arquivos. Inicio () { FILE *ponteiro; … . }

FILE é uma estrutura pré definida para compor o ponteiro para as ações com os arquivos.

Inicio () {

FILE *ponteiro;

… .

}

Como inserir dados nos arquivos??? Caracter – insere um a um no arquivo. Utiliza técnicas de Buffers para não ficar escrevendo toda a hora no HD. Binário – Ideal quando estamos trabalhando com String, matrizes e estruturas.

Caracter – insere um a um no arquivo. Utiliza técnicas de Buffers para não ficar escrevendo toda a hora no HD.

Binário – Ideal quando estamos trabalhando com String, matrizes e estruturas.

Diferenças entre ASCII e Binários Um arquivo aberto em modo texto é interpretado em C como sequências de caracteres agrupadas em linhas. As linhas são separadas por um único caractere chamado caractere de nova linha ou LF (linefeed). ASCII 10. O mesmo ocorre quando o SO abre este arquivo e procura dois caracteres CR (13) e LF (10). O compilador converter o par CR/LF em um único caractere de nova linha um arquivo aberto de texto é lido. Há ainda um indicador de final de arquivo chamado EOF (end of file). Binário é mais simples, não há conversão. Não é reconhecida a indicação de fim de linha. Um outra diferença é como os binários interpretam os números. No arquivo texto os números são gravados como caractere e em binário são gravados como estão na memória.

Um arquivo aberto em modo texto é interpretado em C como sequências de caracteres agrupadas em linhas. As linhas são separadas por um único caractere chamado caractere de nova linha ou LF (linefeed). ASCII 10.

O mesmo ocorre quando o SO abre este arquivo e procura dois caracteres CR (13) e LF (10).

O compilador converter o par CR/LF em um único caractere de nova linha um arquivo aberto de texto é lido.

Há ainda um indicador de final de arquivo chamado EOF (end of file).

Binário é mais simples, não há conversão. Não é reconhecida a indicação de fim de linha. Um outra diferença é como os binários interpretam os números. No arquivo texto os números são gravados como caractere e em binário são gravados como estão na memória.

Tipos de acessos e operações com arquivos Podemos ter de baixo-nível, onde todas as informações são passadas de uma forma unitária. Alto-nivel, executamos um comando para abrir/fechar/ler/gravar

Podemos ter de baixo-nível, onde todas as informações são passadas de uma forma unitária.

Alto-nivel, executamos um comando para abrir/fechar/ler/gravar

fopen Função para abertura de um arquivo. Fopen(“nome do arquivo”,”opção”); Exemplo: Inicio () { FILE *ponteiro; Se ((ponteiro = abrir (“teste.txt”,”w”)!=NULL)){ escrever(“Escreve ai! ”); fechar(ponteiro);} Senão escrever (“Não foi possivel”); }

Função para abertura de um arquivo.

Fopen(“nome do arquivo”,”opção”);

Exemplo:

Inicio () {

FILE *ponteiro;

Se ((ponteiro = abrir (“teste.txt”,”w”)!=NULL)){

escrever(“Escreve ai! ”);

fechar(ponteiro);}

Senão escrever (“Não foi possivel”);

}

Opções de Abertura de arquivos PROCURAR OUTROS CÓDIGOS!!!! Abrir arquivo binário para acrescimo ab Abrir arquivo binário para escrita wb Abrir arquivo binário para leitura rb Abrir arquivo para leitura e acrescimo (cria se necessário) a+ Criar e abrir arquivo para leitura e escrita w+ Abrir arquivo para leitura e escrita (existente) r+ Abrir arquivo para acrescimo (idem) a Abrir arquivo para escrita (cria se necessário) w Abrir arquivo para leitura (existente) r

Detalhes importantes Quanto tentamos abrir um arquivo nos devemos testar para verificar se o programa conseguiu realizar a operação, pois se podemos ter um programa travado por causa de uma falha de programação. Quando abrimos um arquivo e NÃO foi bem sucessida a operação um NULL é retornado como valor. NULL – constante pré-definida com valor 0.

Quanto tentamos abrir um arquivo nos devemos testar para verificar se o programa conseguiu realizar a operação, pois se podemos ter um programa travado por causa de uma falha de programação.

Quando abrimos um arquivo e NÃO foi bem sucessida a operação um NULL é retornado como valor.

NULL – constante pré-definida com valor 0.

Ponteiros entram na história??? SIM Quando criamos um arquivo teste.txt, por exemplo, o ponteiro para este arquivo estará apontando para a posição inicial do arquivo. SEMPRE!!!! Ponteiro do arquivo teste.txt

Quando criamos um arquivo teste.txt, por exemplo, o ponteiro para este arquivo estará apontando para a posição inicial do arquivo. SEMPRE!!!!

Ponteiro do arquivo

Funções Fopen fopen (&quot;teste.dat&quot;,&quot;ab+&quot;) Fclose fclose(ponteiro); Fwrite fwrite(&l1,sizeof(l1),1,ponteiro); Fread fread(&l1,sizeof(l1),1,ponteiro); Fseek Fseek(ponteiro,offset,0); // 0 inicio, 1 corrente, 2 fim do arq.

Fopen

fopen (&quot;teste.dat&quot;,&quot;ab+&quot;)

Fclose

fclose(ponteiro);

Fwrite

fwrite(&l1,sizeof(l1),1,ponteiro);

Fread

fread(&l1,sizeof(l1),1,ponteiro);

Fseek

Fseek(ponteiro,offset,0); // 0 inicio, 1 corrente, 2 fim do arq.

Exemplo Fopen if ((ponteiro = fopen (&quot;teste.dat&quot;,&quot;ab+&quot;))) if (!ponteiro){ printf (&quot;Não consegui abrir&quot;); } else { fclose(ponteiro); }

if ((ponteiro = fopen (&quot;teste.dat&quot;,&quot;ab+&quot;)))

if (!ponteiro){

printf (&quot;Não consegui abrir&quot;);

}

else {

fclose(ponteiro);

}

Exemplo Fread if ((ponteiro = fopen (&quot;teste.dat&quot;,&quot;ab+&quot;))) if (!ponteiro){ printf (&quot;Não consegui abrir&quot;); } else { fread(&l1,sizeof(l1),1,ponteiro); printf(&quot;%d&quot;,l1.registro); printf(&quot;%s&quot;,l1.titulo); fclose(ponteiro); }

if ((ponteiro = fopen (&quot;teste.dat&quot;,&quot;ab+&quot;)))

if (!ponteiro){

printf (&quot;Não consegui abrir&quot;);

}

else {

fread(&l1,sizeof(l1),1,ponteiro);

printf(&quot;%d&quot;,l1.registro);

printf(&quot;%s&quot;,l1.titulo);

fclose(ponteiro);

}

Exemplo Fwrite if ((ponteiro = fopen (&quot;teste.dat&quot;,&quot;ab+&quot;))) if (!ponteiro){ printf (&quot;Não consegui abrir&quot;); } else { fwrite(&l1,sizeof(l1),1,ponteiro); fclose(ponteiro); }

if ((ponteiro = fopen (&quot;teste.dat&quot;,&quot;ab+&quot;)))

if (!ponteiro){

printf (&quot;Não consegui abrir&quot;);

}

else {

fwrite(&l1,sizeof(l1),1,ponteiro);

fclose(ponteiro);

}

Add a comment

Related presentations

Presentación que realice en el Evento Nacional de Gobierno Abierto, realizado los ...

In this presentation we will describe our experience developing with a highly dyna...

Presentation to the LITA Forum 7th November 2014 Albuquerque, NM

Un recorrido por los cambios que nos generará el wearabletech en el futuro

Um paralelo entre as novidades & mercado em Wearable Computing e Tecnologias Assis...

Microsoft finally joins the smartwatch and fitness tracker game by introducing the...

Related pages

Curso de Lógica de Programação - Curso online com ...

O objetivo desse curso é ensinar sobre as fases de um algoritmo, a formação de variáveis e os tipos de dados. Além disso, você aprenderá sobre a ...
Read more

Lógica de Programação - Aula 01 - YouTube

Nesta aula, vamos fazer uma breve introdução à Lógica de Programação, e praticar alguns exercícios para melhor assimilação da aula ...
Read more

Introdução à programação/Definições sobre Lógica de ...

Lógica de Programação é a técnica de desenvolver algoritmos (sequências lógicas) para atingir determinados objetivos dentro de certas regras ...
Read more

Lógica de Programação - facebook.com

Lógica de Programação. 12,489 likes · 74 talking about this. Pagina dedicada a estudantes de Programação em geral Meu Blog, fonte de todo material:...
Read more

Programação lógica – Wikipédia, a enciclopédia livre

Programação lógica é um paradigma de programação que faz uso da lógica matemática. John McCarthy [1958] foi o primeiro a publicar uma proposta de ...
Read more

Curso online de Lógica de Programação Completo | TreinaWeb

Lógica de programação é um pré-requisito para praticamente todos os programadores que queiram aprender uma linguagem de programação.
Read more

Introdução à Lógica de Programação - Wikiversidade

Bem vindo ao curso Introdução à Lógica de Programação. Objetivo Introduzir o aluno na Lógica de Programação através do uso do Português Estruturado.
Read more

Lógica de Programação - Informática - InfoEscola

Lógica de programação é o modo como se escreve um programa de computador, um algoritmo. Um algoritmo é uma sequência de passos para se executar uma ...
Read more

Logica De Programacao | LinkedIn

View 283 Logica De Programacao posts, presentations, experts, and more. Get the professional knowledge you need on LinkedIn.
Read more

Logica De Programaçao | LinkedIn

View 294 Logica De Programaçao posts, presentations, experts, and more. Get the professional knowledge you need on LinkedIn.
Read more