Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
revisaoav2.mp3 revisao_av2.ppt * * ALGORITMOS – REVISÃO AV2/ AV3 ANITA MACIEL Rio de Janeiro, 01 julho de 2011 * * Releia a Aula de Revisão da AV1 Relacione todas as dúvidas e poste no fórum de dúvidas AV2/ AV3 Refaça o maior número possível de exercícios das Listas * * Formas para representar um Algoritmo * * Semântica versus Sintaxe Palavras reservadas da linguagem Case Sensitive * * Pseudolinguagem ou linguagem interpretada? * * * * * * Estruturas da Linguagens O início do algoritmo começa com a primeira ordem e o término, com a última ordem que poderão ser, ou não, numeradas. * * Estrutura da Linguagem * * Manipular dados/informações é, com certeza, uma das principais funções de um computador. * * Dados versus da Informação * * Processamento de dados É a transformação de dados em outros que sejam mais significativos para uma determinada finalidade. Data – Dados São valores que representam algum atributo(exemplo: peso, idade, nome, etc.) de uma entidade(pessoa, animal, objeto, etc). Informação É um conjunto de dados significativos. Em outras palavras: dados são elementos que servem de ponto-de-partida para um processamento e informação é o resultado de um processamento. * * Origem do dado O dado é um valor fornecido pelo usuário, gerado pelo programa ou lido de um arquivo Tipos de dados Inteiro, Real, Caracter e Lógico * * Vamos treinar 1) Notas e média – real 2) Altura, peso, salário – real 3) Idade, número de dependentes – inteiro 4) Nome e sexo – caracter * * Declarando variável tipo nomeDaVariável; tipo nV1, nV2, nVn; Qualquer nome serve? * * * * Tipos de variáveis – UAL/C++ int, float / double, char e bool int, real, string e logico UAL C++ * * Comentários Linha(s) precedida(s) por caracter que não será(ão) executada(s). Exemplos: # Comentário de uma linha em UAL // Comentário de uma linha em C++ /* Comentário de uma, ou mais, linhas , UAL e C++finalizando com */ * * Sintaxe do comando - saída imprima “...”, ... , “\n”; cout<<“ “<<...<<“\n”; UAL C++ * * Comando de saída (display) Os caracteres de controle \n e \t são usados com os comandos imprima / cout para que o programador tenha poder de decidir onde o dado será impresso. \t – tabula 1 9 17 25 33 41 ...(colunas) \n – corresponde à tecla enter. Na linguagem C++, “\n” equivale endl * * * * Atenção para a potenciação * * imprima "\n", (35 div 4)- (13 % 2), "\n"; imprima "\n", (35 / 4) - (13 % 2), "\n"; Vamos treinar – div, / e % * * Vamos treinar – / e % Equivalente na linguagem C++ * * Vamos treinar - AUMENTO imprima "\n", 1200.0 + 1200.0*10/100, "\n"; * * Vamos treinar - Desconto * * Vamos treinar - Desconto * * Sintaxe do comando de atribuição nomeVariável <- ...; nomeVariável = ...; UAL C++ * * * * * * O teste de mesa É uma simulação da execução de um algoritmo/programa, começando a análise no primeiro comando e só finalizando, no último para verificar se o algoritmo/programa atingiu seu objetivo. A preocupação principal fica por conta do comportamento das variáveis durante a execução e com o que deverá sair no display. * * O teste de mesa ou chinês? Memória Principal Display * * Sintaxe do comando - entrada leia nomeDaVariável; cin>>nomeDaVariável; UAL C++ * * * * * * * * * * * * * * * * * * Vamos treinar – Onde está o erro? se( a=5) -> if(a <> 8) -> if(num mod 2 == 0) -> if(a> b && > c) -> se( a>=100 && a<=100) -> se( nota>10 && nota<0) -> * * Vamos treinar – Onde está o erro? se( a=5) -> == if(a <> 8) -> != if(num mod 2 == 0) -> num % 2 == 0 if(a> b && > c) -> a> b && a > c se( nota>10 && nota<0) -> nota>10 || nota<0 * * Construa um algoritmo que deixe entrar com nome e sexo de uma pessoa. Se ela for do sexo feminino, exibir o nome e a mensagem Loja A caso contrário, exibir o nome e a mensagem Loja B . Vamos treinar * * UAL * * C++ * * * * O tipo da variável é enumerável. Operador Relacional é = = A mesma variável em todos os testes. Atenção para quando for usar o switch. * * * * * * * * * * * * * * * * * * Ideal para um número de repetições conhecido durante a elaboração do algoritmo/programa ou quando puder ser fornecido durante a execução. Na linguagem C++, for. Simula com facilidade as estruturas do while e do do...while . Controlada por uma variável contadora. * * para(var<- vi; var operadorR vf; var<-var operadorA r) Explicando parâmetros var Variável contadora vi Valor inicial operadorR Operador relacional vf Valor final operadorA Operador aritmético r Razão para(c<- 1; c <= 5; c<-c + 1) para(c<- 1; c <= 5; c++) para(c<- 5; c >= 1; c<-c - 1) para(c<- 5; c >= 1; c- -) para(c<- 2; c <= 20; c<-c + 2) para(c<- 64; c >= 2; c<-c div 2) para(c<- 3; c <= 243; c<-c * 3) * * for(var= vi; var operadorR vf; var=var operadorA r) Explicando parâmetros var=var operadorA r ou var operadorA = r var+=r / var-=r / var*=r / var/=r ou var++ / var -- for(c= 1; c <= 5; c=c + 1) for(c= 1; c <= 5; c++) for(c= 5; c >= 1; c=c - 1) for(c= 5; c >= 1; c- -) for(c= 2; c <= 20; c+= 2) for(c 64; c >= 2; c=c /2) for(c= 3; c <= 243; c*=3) * * Gerando PA ou PG na Memória Principal e exibindo os valores. * * * * Ideal para um número de repetições desconhecido. O teste é executado no início. A vantagem é que o usuário decide quando pára a repetição. Pode simular a estrutura do for. * * * * Talvez seja a estrutura mais simples de se construir. O teste acontece no final, significando que executa pelo menos uma vez. Assim como a estrutura while, é usada quando o número de repetições for desconhecido. Pode simular a estrutura do for. * * * * 1o passo – Envolva o bloco que será repetido com um par de { } * * 2o passo – Escreva a linha do comando for * * 3o passo – Não se esqueça de declarar a variável do for. * * Construa um programa que 10 vezes entre com dois números e, a cada entrada, exiba o maior. Vamos treinar * * if(num1 > num2) { cout<< "\nMaior: "<< num1<<endl; } else if(num2 > num1) { cout<< "\nMaior: "<< num2<<endl; } else { cout<< "\nIguais: "<< num1<<endl; } } } Vamos treinar - trecho * * Vamos treinar - saída * * Construa um programa que 8 vezes possa entrar com um salário e exibir o salário reajustado em 7%. Vamos treinar * * Vamos treinar - saída * * Observe este programa prog triangulo0 int C; para(C<-1; C<=10; C++) { imprima "*"; } imprima "\n\n"; fimprog Vamos treinar * * Vamos treinar - saída * * Vamos colocar o para dentro de outro para prog triangulo1 int C, L; para(L<-1; L<=10; L++) { para(C<-1; C<=10; C++) { imprima "*"; } imprima "\n"; } imprima "\n\n"; fimprog Vamos treinar * * Vamos treinar - saída * * Vamos alterar o valor final do para interno prog triangulo2 int C, L; para(L<-1; L<=10; L++) { para(C<-1; C<=L; C++) { imprima "*"; } imprima "\n"; } imprima "\n\n"; fimprog Vamos treinar * * Vamos treinar - saída * * 1) O que é? 2) Como se cria? 3) Quais as regras para que tudo funcione perfeitamente? * * 1) 2) 3) 4) * * Construa um programa que entre com a idade de 5 pessoas e exiba ao final, quantas pessoas são maiores de idade. Vamos treinar * * Vamos treinar - saída * * * * Um comando leia, ou de atribuição, antes do enquanto para entrar na repetição e um comando leia, ou de atribuição, antes da }, para repetir ou sair da repetição. * * * * * * Construa um programa que entre, várias vezes, com tuplas de números maiores do que 0. Exibir, a cada entrada, a média dos números. Vamos treinar * * Vamos treinar - saída * * Construa um programa que deixe entrar com um número inteiro e exiba quantos algarismos tem este número. Vamos treinar * * Vamos treinar * * Vamos treinar - saída * * * * Vamos treinar - saída * * * * Vamos treinar - saída * * Vamos treinar - saída * * Vamos treinar - saída * * Vamos treinar - saída Se X for uma letra, deverá ficar entre aspas simples, mas se for um número, NÃO. case ‘F’: … case 1: … * * Vamos treinar - saída * * Vamos treinar - saída * * * * Simule a estrutura do for, usando while e um contador(caso particular do Acumulador). * * * * Simule a estrutura do for, usando do...while e um contador(caso particular do Acumulador). * * * * Simule a estrutura do while, usando for(;;) e if combinado com break. * * * * * * * * Dimensionando Matrizes(vetores) tipo nomeMatriz[tamanho] ; tipo nomeMatriz[tamanho] ; UAL C++ * * Trecho de Entrada para( var<-0; var <tamanho; var ++) { imprima “\nmensagem: “; leia nomeMatriz[var]; } UAL * * Trecho de Entrada for( var=0; var <tamanho; var ++) { cout<< “\nmensagem: “; cin>>nomeMatriz[var]; } C++ * * Trecho de Saída – matriz linha imprima “\n\nTitulo\n\n”; para( var<-0; var <tamanho; var ++) { imprima nomeMatriz[var], “\t”; } UAL * * cout<<"\n\nTitulo\n\n"; for(var=0; x<tamanho; var++) { cout<<nomeMatriz[var], “\t”; } C++ Trecho de Saída – matriz linha * * Trecho de Saída – matriz coluna imprima “\n\nTitulo\n\n”; para( var<-0; var <tamanho; var ++) { imprima nomeMatriz[var], “\n”; } UAL * * cout<<"\n\nTitulo\n\n"; for(var=0; x<tamanho; var++) { cout<<nomeMatriz[var], “\n”; } C++ Trecho de Saída – matriz coluna * * 1) Os três trechos - matriz linha Vamos treinar imprima "\n\nIdades\n\n"; para(x<-0; x<10; x++) { imprima idades[x], "\t"; } UAL para(x<-0; x<10; x++) { imprima "\nIdade: "; leia idades[x]; } int idades[10] , x; * * Vamos treinar cout<<"\n\nIdades\n\n"; for(x=0; x<10; x++) { cout<<idades[x]<<"\t"; } C++ for(x=0; x<10; x++) { cout<<"\nIdade: "; cin>>idades[x]; } int idades[10] , x; 1) Os três trechos - matriz linha * * 1) Os três trechos - matriz coluna Vamos treinar imprima "\n\nIdades\n\n"; para(x<-0; x<10; x++) { imprima idades[x], "\n"; } UAL para(x<-0; x<10; x++) { imprima "\nIdade: "; leia idades[x]; } int idades[10] , x; * * Gerando vetor soma Vamos treinar for(x=0; x<tam; x++) { soma[x]= A[x] + B[x]; } para(x<-0; x<tam; x++) { soma[x]<- A[x] + B[x]; } UAL C++ * * Gerando vetor média Vamos treinar for(x=0; x<tam; x++) { med[x]=(A[x] + B[x])/2; } para(x<-0; x<tam; x++) { med[x]<-(A[x] + B[x])/2; } UAL C++ * * Trecho que calcula a média dos elementos da matriz Vamos treinar soma=0; for(x=0; x<tam; x++) { soma<- soma + m[x]; } media=soma/tam; soma<-0.0; para(x<-0; x<tam; x++) { soma<- soma + m[x]; } media<-soma/tam; UAL C++ * * * * Dimensionando Matrizes(bidimensionais) tipo nomeMatriz[tamL] [tamC] ; C++ * * float notas[60] [4] ; char nomes[60] [31] ; Vamos treinar 4 notas e nome de 60 alunos * * char nome [30]; Para entrar com um nome, usamos o comando abaixo cin.getline(nome, 30); * * Vamos treinar * * Vamos treinar Número de inscrição, nome do país e 5 tempos de 48 nadadores. Int insc [48] ; char nomesPais[48] [31] ; float tempos[48] [5] ; * * Entrada via teclado - Matriz bidimensional for(L=0; L < tamanhoLinha ; L++) { for(C=0; C < tamanhoColuna ; C++) { cout<<”\nLinha ”<<L+1<<” coluna ”<<C+1<<”: ”; cin>>nomeMatriz[L][C]; } } * * Entrada via teclado - Matriz bidimensional Matriz de char for(L=0; L < tamanhoLinha ; L++) { cout<<”\nNumero da linha ”<<L+1<<”: ”; cin.getline(nomeMatriz[L], tam); } tam valor declarado no dimensionamento (colunas) * * Trecho de saída - Matriz bidimensional system(”cls”);//limpar a tela ou clear - LINUX cout<<”\nTitulo\n”; for (L= 0; L < tamanhoLinha ; L++) { for(C=0; C < tamanhoColuna ; C++) { cout<<nomeMatriz[L][C]<< ”\t”; } cout<<”\n\n”; } * * Limpar o buffer cin.get(); * * Vamos treinar Para finalizar, vou fazer um programa mais matemático. * * Vamos treinar Dimensionamento Entrada * * Vamos treinar - solução float M[5][5]; Dimensionamento for(L=0; L < 5 ; L++) { for(C=0; C < 5 ;C++) { cout<<"\nElemento "<<L+1<<", "<<C+1<<": "; cin>>M[L][C]; } } Entrada * * Vamos treinar Saída * * system("cls"); cout<<"\nElementos da Matriz\n\n"; for (L= 0; L < 5 ; L++) { for(C=0; C < 5 ; C++) cout<<M[L][C]<< "\t"; cout<<"\n\n"; } Saída Vamos treinar - solução * * Trechos Interessantes system("cls"); cout<<"\nElementos da Matriz Acima da DP\n\n"; for (L= 0; L < TAM ; L++) { for(C=0; C < TAM ; C++) if( L < C ) cout<<M[L][C]<< "\t"; else cout<<"\t"; cout<<"\n"; } * * Trechos Interessantes ... if( L > C ) cout<<M[L][C]<< "\t"; //Triangulo Superior DP else cout<<"\t"; ... ... if( L == C ) cout<<M[L][C]<< "\t"; //Diagonal Principal else cout<<"\t"; ... * * Trechos Interessantes Matriz SomaLinha É uma matriz onde cada elemento é a soma dos elementos de uma linha da matriz. * * Trechos Interessantes //inicializa SomaLinha for(L=0; L<3; L++) { SOMA_LINHA[L] = 0; } //gera a matriz SomaLinha for(L=0;L<3;L++) for (c=0; c<5;c++) SOMA_LINHA[L] += A[L][c]; * * Trechos Interessantes Matriz SomaColuna É uma matriz onde cada elemento é a soma dos elementos de uma coluna da matriz. * * Trechos Interessantes //inicializa SomaColuna for (C=0; C<5; C++) SOMA_COLUNA[C] = 0; //gera a matriz SomaColuna for (C=0; C < 5; C++) for(L=0; L < 3; L++) SOMA_COLUNA[c] += A[L][C]; * * * * Funções da Biblioteca cstring * * Funções da Biblioteca cstring Essa função retorna o número de caracteres de str que precedem o caracter nulo(\0) de término. * * Funções da Biblioteca cstring Menor que zero -> str1 é menor do que str2(menor significa “vem antes na ordem alfabética”) Igual a zero -> str1 é igual a str2 Maior que zero -> str1 é maior do que str2(maior significa “vem depois na ordem alfabética”) * * Funções da Biblioteca cstring Essa função copia o conteúdo de str2 em str1, escrevendo sobre o antigo conteúdo de str1. * * Funções da Biblioteca cstring Essa função anexa o conteúdo de str2 ao final de str1. * * Funções da Biblioteca cctype * * Funções da Biblioteca cctype Essa função converte para maiúscula uma letra minúscula, não alterando os demais caracteres * * Funções da Biblioteca cctype Essa função converte para minúscula uma letra maiúscula, não alterando os demais caracteres. * * Funções da Biblioteca - cstdlib * * Funções da Biblioteca - cstdlib Essa função converte str, o que for possível, para número inteiro. Ela retorna 0 quando não puder converter. * * Funções da Biblioteca - cstdlib Essa função converte str, o que for possível, para número real. Ela retorna 0 quando não puder converter. * * * * *