Buscar

revisaoav2

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

*
*
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. 
*
*
*
*
*

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Continue navegando