SlideShare une entreprise Scribd logo
1  sur  9
1


              COMO PASSAR A PROGRAMAÇÃO II, COM O PROFESSOR CHAMBEL,
                            SEM PERCEBER NADA DE PASCAL


Como o professor Chambel faz sempre o mesmo tipo de exames, ou seja, usa sempre as
mesmas perguntas, só que em contextos diferentes, pode-se fazer um tipo de base de dados
(por outras palavras, uma boa cábula).

Um bom exemplo disso é o seguinte programa:
Verifique que uma matriz é mágica.
Ou seja que a soma da linhas, das colunas e das diagonais é igual.
Basta pegar na cábula e usar:
       ♦ Inserir dados numa matriz
       ♦ Soma das linhas de uma matriz
       ♦ Soma das colunas de uma matriz
       ♦ Soma das diagonais de uma matriz
           ♦ A diagonal de inclinação negativa
           ♦ A diagonal de inclinação positiva
Com pouco mais fica o programa feito.


                                        ATENÇÂO:
        Lembrem-se que cada pequeno programa que o professor pede, poderá, por vezes,
                  ser feito de maneira mais simples do que os desta cábula.
                       Só que os da cábula dão para todas as situações.


EXEMPLIFICAÇÃO: (este poderá ser o exemplo complicado)

Program Magica;

Type matriz = array [1..4,1..4] of integer;
     vector = array [1..4] of integer;

Var      A : matriz;
         somaL,SomaC:vector;
         i,j, diagonal1, diagonal2 : integer;
         magica : boolean;

Begin
         (* Inserir dados numa matriz *)
         Writeln (‘Introduza os valores na matriz’);
         For i:=1 to 4 do
                For j:=1 to 4 do
                        Readln (A[i,j]);


         (* Soma das linhas de uma matriz *)
         For i:=1 to 4 do
                Begin
                        somaL[i]:=0;
2


                     For j:=1 to 4 do
                            somaL[i]:=somaL[i]+A[i,j]
              End;

       (* Soma das colunas de uma matriz *)
       For j:=1 to 4 do
              Begin
                      somaC[j]:=0;
                      For i:=1 to 4 do
                             somaC[j]:=somaC[j]+A[i,j]
              End;

       (* Soma das diagonais de uma matriz *)
       ( * A diagonal de inclinação negativa *)
       diagonal1:=0;
       For i:=1 to 4 do
               diagonal1:=diagonal1+A[i,i];

       (* A diagonal de inclinação positiva *)
       diagonal2:=0;
       For i:=1 to 4 do
              diagonal2:=diagonal2+A[i,4-i+1];

       (* ----------------------- *)
       magica:=true;
       If diagonal1<>diagonal2 then
                magica:=false
       Else
                For i:=1 to 4 do
                        If (somaL<>diagonal1) or (somaC<>diagonal1) then
                                 magica:=false;
       If magica then
                Writeln (‘A matriz é mágica’)
End.

                                          ATENÇÃO:
 Por vezes terão que mudar as variáveis para outras, por interferirem nas partes que já se fez
                antes, mas isso é fácil, basta não esquecer de as mudar todas.
        Se não forem mudadas o mal não será muito grande, porque a ideia ficou!!!

       Neste exemplo tive que mudar a variável diagonal, para diagonal1 e diagonal2,
                         porque tinha que usar as duas diagonais.

                    As variáveis sublinhadas são mudadas por números.
           Neste exemplo: em nLinhas pus 4, porque estou a usar uma matriz 4x4.

       Não esquecer que têm que declarar as variáveis, nos programa que fazem.
3


CÁBULAS – aconselho a levarem o seguinte para o exame.

Ordenar
For i:=primeiro to ultimo-1 do
         For j:=primeiro+1 to ultimo do
                If v[j]>v[i] then       (* > crescente; < decrescente *)
                        Begin (* troca de elementos *)
                                aux:=v[i];
                                v[i]:=v[j];
                                v[j]:=aux
                        End;
    ----- ----- ----- ----- ----- ----- ----- ----- ----- -----
Inverter um número
aux:=numero div 10;
inv[1]:=numero mod 10;
i:=1;
While aux<>0 do
         Begin
                i:=i+1;
                If (aux div 10) = 0 then
                        Begin
                                inv[i]:=aux mod 10;
                                aux:=0
                        End
                Else
                        Begin
                                inv[i]:=aux mod 10;
                                aux:=aux div 10
                        End
         End;
base:=1;
inverso:=inv[i];
For j:=i-1 downto 1 do
         Begin
                base:=base*10;
                inverso:=inverso+inv[j]*base
         End;
----- ----- ----- ----- ----- ----- ----- ----- ----- -----
Múltiplos de um número
multipos[1]:=numero;
i:=1;
k:=numero;
While i<>fim do
         Begin
                k:=k+numero;
                i:=i+1;
                multiplos[i]:=k
         End;
----- ----- ----- ----- ----- ----- ----- ----- ----- -----
4


Divisores de um número
divisores[1]:=1;
i:=1;
k:=1;
While k<>numero do
       Begin
               k:=k+1;
               If (numero mod k) = 0 then
                      Begin
                            i:=i+1;
                            divisores[i]:=k
                      End
       End;
----- ----- ----- ----- ----- ----- -----                          -----        -----   -----
Soma de um vector
soma:=0;
For i:=1 to nPosicoes do
       soma:=soma+V[i];
----- ----- ----- ----- ----- ----- -----                          -----        -----   -----
Soma das posições de dois vectores
For i:=1 to nPosicoes do
       V[i]:=V1[i]+V2[i];
-----   -----   -----   -----   -----   -----   -----   -----   -----   -----
Multiplicação de matrizes
For i:=1 to nLinhas do
       For j:=1 to nColunas do
               Begin
                      M[i,j]:=0;
                      For k:=1 to nColunas do
                              M[i,j]:=M[i,j]+A[i,k]*B[k,j]
               End;
----- ----- ----- ----- ----- ----- ----- ----- -----                                   -----
Soma das linhas de uma matriz
For i:=1 to nLinhas do
       Begin
               soma[i]:=0;
               For j:=1 to nColunas do
                      soma[i]:=soma[i]+A[i,j]
       End;
----- ----- ----- ----- ----- ----- ----- ----- -----                                   -----
Soma das colunas de uma matriz
For j:=1 to nColunas do
       Begin
               soma[j]:=0;
               For i:=1 to nLinhas do
                      soma[j]:=soma[j]+A[i,j]
       End;
----- ----- ----- ----- ----- ----- ----- ----- -----                                   -----
5


Soma das diagonais de uma matriz
A diagonal de inclinação negativa
diagonal:=0;
For i:=1 to nLinhas do
       diagonal:=diagonal+A[i,i];

A diagonal de inclinação positiva
diagonal:=0;
For i:=1 to nLinhas do
        diagonal:=diagonal+A[i,nLinhas-i+1];
----- ----- ----- ----- ----- ----- ----- ----- ----- -----
Inserir dados num vector
Writeln (‘Introduza quant de valores’);
For i:=1 to quant do
        Readln (V[i]);
----- ----- ----- ----- ----- ----- ----- ----- ----- -----
Inserir dados numa matriz
Writeln (‘Introduza os valores na matriz’);
For i:=1 to nLinhas do
        For j:=1 to nColunas do
               Readln (A[i,j]);
----- ----- ----- ----- ----- ----- ----- ----- ----- -----
Escrever os dados de uma matriz no ecrã (Análogo para os vectores)
For i:=1 to nLinhas do
        For j:=1 to nColunas do
               Writeln (A[i,j]);
----- ----- ----- ----- ----- ----- ----- ----- ----- -----
Média de um vector
soma:=0;
For i:=1 to fim do
        soma:=soma+V[i];
media:=soma/fim;
----- ----- ----- ----- ----- ----- ----- ----- ----- -----
Trocos de uma quantia (200$, 100$, 50$, 20$, 10$, 5$, 1$)
duzentos:=quantia div 200;
auxiliar:=quantia mod 200;
cem:=auxiliar div 100;
auxiliar:=auxiliar mod 100;
cinquenta:=auxiliar div 50;
auxiliar:=auxiliar mod 50;
vinte:=auxiliar div 20;
auxiliar:=auxiliar mod 20;
dez:=auxiliar div 10;
auxiliar:=auxiliar mod 10;
cinco:=auxiliar div 5;
um:=auxiliar mod 5;
----- ----- ----- ----- ----- ----- ----- ----- ----- -----
Números Primos
primo:=true;
for i:=3 to numero-1 do
6


       if numero mod i=0 then
               primo:=false;
----- ----- ----- ----- -----         -----   -----   -----   -----   -----
O menor num vector
menor:=maxint;
For i:=primeiro to ultimo do
       If V[i]< menor then
               menor:=V[i];
----- ----- ----- ----- -----         -----   -----   -----   -----   -----
O maior num vector
maior:= -maxint;
For i:=primeiro to ultimo do
       If V[i]> maior then
               maior:=V[i];
----- ----- ----- ----- -----         -----   -----   -----   -----   -----



RESOLUÇÃO DOS EXAMES DO CHAMBEL, USANDO ESTAS CÁBULAS

Exame 1999 – Trabalhadores estudantes

   Listar os primeiros números defeituosos (n inteiro>=2 é defeituoso se a soma dos seus
                divisores, incluindo o 1 e excluindo o número, é menor que n)

Program defeituosos;

Type vector = array [1..100] of integer;

Var     i, k, n, soma, numero, w : integer;
        divisores : vector;

Begin
        Repeat
               Write (‘Introduza o valor de n’);
               Readln (n);
        Until n>=2;
        For numero:=2 to n-1 do (* n-1 pq o enunciado diz excluindo n *)
               Begin
                      (* CÁBULA: Divisores de um número *)
                      divisores[1]:=1;     (* 1 pq o enunciado diz incluindo 1 *)
                      i:=1;
                      k:=1;
                      While k<>numero do
                              Begin
                                     k:=k+1;
                                     If (numero mod k) = 0 then
                                             Begin
                                                    i:=i+1;
                                                    divisores[i]:=k
7


                                           End
                               End;

                       (* CÁBULA: Soma de um vector *)
                       soma:=0;
                       For w:=1 to i do
                              soma:=soma+divisores[w];

                       (* ---------------------------- *)
                       If soma<n then
                                Writeln (‘O ‘,numero,’ é DEFEITUOSO’)
               End
End.



             Calcule os números capicuas de 4 dígitos que sejam múltiplos de 45

Program CapicuasMultiplos45;

Type vector = array [1..4] of integer;

Var     inv : vector;
        i, numero, aux, base : integer;

Begin
        For numero:=1000 to 9999 do
              Begin
                     (* CÁBULA: Inverter um número *)
                     aux:=numero div 10;
                     inv[1]:=numero mod 10;
                     i:=1;
                     While aux<>0 do
                             Begin
                                    i:=i+1;
                                    If (aux div 10) = 0 then
                                            Begin
                                                   inv[i]:=aux mod 10;
                                                   aux:=0
                                            End
                                    Else
                                            Begin
                                                   inv[i]:=aux mod 10;
                                                   aux:=aux div 10
                                            End
                             End;
                     base:=1;
                     inverso:=inv[i];
                     For j:=i-1 downto 1 do
                             Begin
8


                                      base:=base*10;
                                      inverso:=inverso+inv[j]*base
                              End;

                       ( * -------------------------- *)
                       If (inverso=numero) and (inverso mod 45 = 0) then
                                Writeln (‘O ‘,numero,’ é capicua e múltiplo de 45.’)
               End
End.



                Lista com 100 inteiros e realize as seguintes tarefas:
                        a) Introduzir os elementos da lista
         b) Ordenar por ordem crescente os 50 primeiros números da lista
           c) Determinar o menor número da lista da posição 51º à 100º
 d) Comparar o menor número dos 50 primeiros com o menor da 51º à 100º, aparecendo
                      no ecrã o local do menor das duas sublistas


Program inteiros100;

Type vector = array [1..100] of integer;

Var     i, j, aux, menor1, menor2, posicao1, posicao2 : integer;
        V:vector;

Begin
        (*CÁBULA: Inserir dados num vector *)
        Writeln (‘Introduza 100 inteiros’);
        For i:=1 to 100 do
               Readln (V[i]);

        (* CÁBULA: Ordenar *)
        For i:=1 to 50-1 do
        For j:=1+1 to 50 do
               If v[j]>v[i] then      (* > crescente; < decrescente *)
                       Begin (* troca de elementos *)
                               aux:=v[i];
                               v[i]:=v[j];
                               v[j]:=aux
                       End;

        (* CÁBULA: O menor num vector *)
        menor2:=maxint;
        For i:=51 to 100 do
               If V[i]< menor2 then
                       begin
                             menor2:=V[i];
                             posicao2:=i             (* para se saber a posição *)
9


                     end;

       (* CÁBULA: O menor num vector *)
       menor1:=maxint;
       For i:=1 to 50 do
              If V[i]< menor1 then
                      begin
                            menor1:=V[i];
                            posicao1:=i            (* para se saber a posição *)
                      end;

       (* --------------------------- *)
       If menor1<menor2 then
                Writeln (‘O menor: V[‘,posicao1,’] = ‘,menor1)
       Else
                Writeln (‘O menor: V[‘,posicao2,’] = ‘,menor2)
End.

Contenu connexe

Tendances

Cálculo diferencial e integral de várias variáveis unid iii
Cálculo diferencial e integral de várias variáveis   unid iiiCálculo diferencial e integral de várias variáveis   unid iii
Cálculo diferencial e integral de várias variáveis unid iiiBruno Luz
 
Matrizes - Exercícios Resolvidos
Matrizes - Exercícios ResolvidosMatrizes - Exercícios Resolvidos
Matrizes - Exercícios Resolvidosnumerosnamente
 
Cadeno 1 integrais duplos e intregrais de linha
Cadeno 1 integrais duplos e intregrais de linhaCadeno 1 integrais duplos e intregrais de linha
Cadeno 1 integrais duplos e intregrais de linhaBowman Guimaraes
 
Graph Theory - Exercises - Chapter 3
Graph Theory - Exercises - Chapter 3Graph Theory - Exercises - Chapter 3
Graph Theory - Exercises - Chapter 3Michel Alves
 
Integral Substituicao Trigonometrica
Integral Substituicao TrigonometricaIntegral Substituicao Trigonometrica
Integral Substituicao Trigonometricabtizatto1
 
Sistemas lineares
Sistemas linearesSistemas lineares
Sistemas linearescon_seguir
 
Numeros complexos ( semi extensivo)
Numeros complexos ( semi extensivo)Numeros complexos ( semi extensivo)
Numeros complexos ( semi extensivo)Caroline Gomes
 
Cálculo Numérico - Aula 02: Introdução ao SCILAB
Cálculo Numérico - Aula 02: Introdução ao SCILABCálculo Numérico - Aula 02: Introdução ao SCILAB
Cálculo Numérico - Aula 02: Introdução ao SCILABRodolfo Almeida
 
Resolucao dos exercicios_integrais
Resolucao dos exercicios_integraisResolucao dos exercicios_integrais
Resolucao dos exercicios_integraisWilson Kushima
 

Tendances (18)

Integração cálculo 4
Integração cálculo 4Integração cálculo 4
Integração cálculo 4
 
Cálculo diferencial e integral de várias variáveis unid iii
Cálculo diferencial e integral de várias variáveis   unid iiiCálculo diferencial e integral de várias variáveis   unid iii
Cálculo diferencial e integral de várias variáveis unid iii
 
Ap mat potenciacao
Ap mat potenciacaoAp mat potenciacao
Ap mat potenciacao
 
Matrizes - Exercícios Resolvidos
Matrizes - Exercícios ResolvidosMatrizes - Exercícios Resolvidos
Matrizes - Exercícios Resolvidos
 
Números complexos
Números complexosNúmeros complexos
Números complexos
 
Mat equações
Mat equaçõesMat equações
Mat equações
 
Funções
FunçõesFunções
Funções
 
Cadeno 1 integrais duplos e intregrais de linha
Cadeno 1 integrais duplos e intregrais de linhaCadeno 1 integrais duplos e intregrais de linha
Cadeno 1 integrais duplos e intregrais de linha
 
Graph Theory - Exercises - Chapter 3
Graph Theory - Exercises - Chapter 3Graph Theory - Exercises - Chapter 3
Graph Theory - Exercises - Chapter 3
 
Integral Substituicao Trigonometrica
Integral Substituicao TrigonometricaIntegral Substituicao Trigonometrica
Integral Substituicao Trigonometrica
 
Sistemas lineares
Sistemas linearesSistemas lineares
Sistemas lineares
 
1º matemática
1º matemática1º matemática
1º matemática
 
Numeros complexos ( semi extensivo)
Numeros complexos ( semi extensivo)Numeros complexos ( semi extensivo)
Numeros complexos ( semi extensivo)
 
Derivadas
DerivadasDerivadas
Derivadas
 
1 gabarito 7ªa e 8
1 gabarito 7ªa e 81 gabarito 7ªa e 8
1 gabarito 7ªa e 8
 
Cadernodequestes ano2010
Cadernodequestes ano2010Cadernodequestes ano2010
Cadernodequestes ano2010
 
Cálculo Numérico - Aula 02: Introdução ao SCILAB
Cálculo Numérico - Aula 02: Introdução ao SCILABCálculo Numérico - Aula 02: Introdução ao SCILAB
Cálculo Numérico - Aula 02: Introdução ao SCILAB
 
Resolucao dos exercicios_integrais
Resolucao dos exercicios_integraisResolucao dos exercicios_integrais
Resolucao dos exercicios_integrais
 

En vedette (6)

Projeto Parceria do Conhecimento - Digitalização Jornalismo
Projeto Parceria do Conhecimento - Digitalização JornalismoProjeto Parceria do Conhecimento - Digitalização Jornalismo
Projeto Parceria do Conhecimento - Digitalização Jornalismo
 
Bits bytes
Bits bytesBits bytes
Bits bytes
 
Tipos de Áudios e Vìdeos
Tipos de Áudios e VìdeosTipos de Áudios e Vìdeos
Tipos de Áudios e Vìdeos
 
backup
backupbackup
backup
 
Audio
AudioAudio
Audio
 
Unidades de linguagem
Unidades de linguagemUnidades de linguagem
Unidades de linguagem
 

Similaire à COMO PASSAR PROGRAMAÇÃO II COM O PROFESSOR CHAMBEL

PC_2020-2_EP12_Funcao Potencia de Expoente Racional_GABARITO.pdf
PC_2020-2_EP12_Funcao Potencia de Expoente Racional_GABARITO.pdfPC_2020-2_EP12_Funcao Potencia de Expoente Racional_GABARITO.pdf
PC_2020-2_EP12_Funcao Potencia de Expoente Racional_GABARITO.pdfssuserce7c52
 
19 algoritmos de enumeracao
19   algoritmos de enumeracao19   algoritmos de enumeracao
19 algoritmos de enumeracaoRicardo Bolanho
 
Aula de Fluxos em Redes - Problema do Transporte SIMPLEX
Aula de Fluxos em Redes - Problema do Transporte SIMPLEXAula de Fluxos em Redes - Problema do Transporte SIMPLEX
Aula de Fluxos em Redes - Problema do Transporte SIMPLEXMilenaArysa
 
Matrizes Pascal - programação
Matrizes Pascal - programaçãoMatrizes Pascal - programação
Matrizes Pascal - programaçãoCarlos Pereira
 
Introducao a fisica - aula sobre vectores
Introducao a fisica - aula sobre vectoresIntroducao a fisica - aula sobre vectores
Introducao a fisica - aula sobre vectoresRodriguesAntonioNabo
 
AulaProgramacao6LingC_MatrizesExemplosERE.pptx
AulaProgramacao6LingC_MatrizesExemplosERE.pptxAulaProgramacao6LingC_MatrizesExemplosERE.pptx
AulaProgramacao6LingC_MatrizesExemplosERE.pptxElisangelaPereiraCal1
 
www.aulaparticularonline.net.br - Matemática - Conjunto de Números Inteiros
www.aulaparticularonline.net.br - Matemática -  Conjunto de Números Inteiroswww.aulaparticularonline.net.br - Matemática -  Conjunto de Números Inteiros
www.aulaparticularonline.net.br - Matemática - Conjunto de Números InteirosLucia Silveira
 
fund-cálculo-aplicado-aula_01_24_08_.pdf
fund-cálculo-aplicado-aula_01_24_08_.pdffund-cálculo-aplicado-aula_01_24_08_.pdf
fund-cálculo-aplicado-aula_01_24_08_.pdfBrunaAminGoncalves
 
www.AulasDeMatematicaApoio.com - Matemática - Conjunto dos Números Inteiros
www.AulasDeMatematicaApoio.com  - Matemática -  Conjunto dos Números Inteiroswww.AulasDeMatematicaApoio.com  - Matemática -  Conjunto dos Números Inteiros
www.AulasDeMatematicaApoio.com - Matemática - Conjunto dos Números InteirosAulas De Matemática Apoio
 
www.AulasDeMatematicaApoio.com.br - Matemática - Conjunto de Números Inteiros
 www.AulasDeMatematicaApoio.com.br  - Matemática - Conjunto de Números Inteiros www.AulasDeMatematicaApoio.com.br  - Matemática - Conjunto de Números Inteiros
www.AulasDeMatematicaApoio.com.br - Matemática - Conjunto de Números InteirosBeatriz Góes
 
www.AulaParticularApoio.Com.Br - Matemática - Conjunto de Números Inteiros
www.AulaParticularApoio.Com.Br - Matemática -  Conjunto de Números Inteiroswww.AulaParticularApoio.Com.Br - Matemática -  Conjunto de Números Inteiros
www.AulaParticularApoio.Com.Br - Matemática - Conjunto de Números InteirosApoioAulaParticular
 
www.AulasDeMatematicanoRJ.Com.Br - Matemática - Conjuntos Numéricos
www.AulasDeMatematicanoRJ.Com.Br - Matemática - Conjuntos Numéricoswww.AulasDeMatematicanoRJ.Com.Br - Matemática - Conjuntos Numéricos
www.AulasDeMatematicanoRJ.Com.Br - Matemática - Conjuntos NuméricosClarice Leclaire
 
www.TutoresDePlantao.Com.Br - Matemática - Conjunto de Números Inteiros
www.TutoresDePlantao.Com.Br - Matemática -  Conjunto de Números Inteiroswww.TutoresDePlantao.Com.Br - Matemática -  Conjunto de Números Inteiros
www.TutoresDePlantao.Com.Br - Matemática - Conjunto de Números InteirosAntônia Sampaio
 
www.ensinofundamental.net.br - Matemática - Conjunto de Números Inteiros
www.ensinofundamental.net.br - Matemática -  Conjunto de Números Inteiroswww.ensinofundamental.net.br - Matemática -  Conjunto de Números Inteiros
www.ensinofundamental.net.br - Matemática - Conjunto de Números InteirosEnsinoFundamental
 
Capitulo 1scilab
Capitulo 1scilabCapitulo 1scilab
Capitulo 1scilabwjunior
 
Curso de Matlab avancado 1
Curso de Matlab avancado 1Curso de Matlab avancado 1
Curso de Matlab avancado 1Gabriel Costa
 
Prova de Matemática fuzileiro naval 2011
Prova de Matemática fuzileiro naval 2011Prova de Matemática fuzileiro naval 2011
Prova de Matemática fuzileiro naval 2011thieresaulas
 

Similaire à COMO PASSAR PROGRAMAÇÃO II COM O PROFESSOR CHAMBEL (20)

PC_2020-2_EP12_Funcao Potencia de Expoente Racional_GABARITO.pdf
PC_2020-2_EP12_Funcao Potencia de Expoente Racional_GABARITO.pdfPC_2020-2_EP12_Funcao Potencia de Expoente Racional_GABARITO.pdf
PC_2020-2_EP12_Funcao Potencia de Expoente Racional_GABARITO.pdf
 
Aula N02
Aula N02Aula N02
Aula N02
 
19 algoritmos de enumeracao
19   algoritmos de enumeracao19   algoritmos de enumeracao
19 algoritmos de enumeracao
 
Aula de Fluxos em Redes - Problema do Transporte SIMPLEX
Aula de Fluxos em Redes - Problema do Transporte SIMPLEXAula de Fluxos em Redes - Problema do Transporte SIMPLEX
Aula de Fluxos em Redes - Problema do Transporte SIMPLEX
 
Matrizes Pascal - programação
Matrizes Pascal - programaçãoMatrizes Pascal - programação
Matrizes Pascal - programação
 
Introducao a fisica - aula sobre vectores
Introducao a fisica - aula sobre vectoresIntroducao a fisica - aula sobre vectores
Introducao a fisica - aula sobre vectores
 
Aula 4 poe
Aula 4 poeAula 4 poe
Aula 4 poe
 
Apostila de matematica para concursos
Apostila de matematica para concursosApostila de matematica para concursos
Apostila de matematica para concursos
 
AulaProgramacao6LingC_MatrizesExemplosERE.pptx
AulaProgramacao6LingC_MatrizesExemplosERE.pptxAulaProgramacao6LingC_MatrizesExemplosERE.pptx
AulaProgramacao6LingC_MatrizesExemplosERE.pptx
 
www.aulaparticularonline.net.br - Matemática - Conjunto de Números Inteiros
www.aulaparticularonline.net.br - Matemática -  Conjunto de Números Inteiroswww.aulaparticularonline.net.br - Matemática -  Conjunto de Números Inteiros
www.aulaparticularonline.net.br - Matemática - Conjunto de Números Inteiros
 
fund-cálculo-aplicado-aula_01_24_08_.pdf
fund-cálculo-aplicado-aula_01_24_08_.pdffund-cálculo-aplicado-aula_01_24_08_.pdf
fund-cálculo-aplicado-aula_01_24_08_.pdf
 
www.AulasDeMatematicaApoio.com - Matemática - Conjunto dos Números Inteiros
www.AulasDeMatematicaApoio.com  - Matemática -  Conjunto dos Números Inteiroswww.AulasDeMatematicaApoio.com  - Matemática -  Conjunto dos Números Inteiros
www.AulasDeMatematicaApoio.com - Matemática - Conjunto dos Números Inteiros
 
www.AulasDeMatematicaApoio.com.br - Matemática - Conjunto de Números Inteiros
 www.AulasDeMatematicaApoio.com.br  - Matemática - Conjunto de Números Inteiros www.AulasDeMatematicaApoio.com.br  - Matemática - Conjunto de Números Inteiros
www.AulasDeMatematicaApoio.com.br - Matemática - Conjunto de Números Inteiros
 
www.AulaParticularApoio.Com.Br - Matemática - Conjunto de Números Inteiros
www.AulaParticularApoio.Com.Br - Matemática -  Conjunto de Números Inteiroswww.AulaParticularApoio.Com.Br - Matemática -  Conjunto de Números Inteiros
www.AulaParticularApoio.Com.Br - Matemática - Conjunto de Números Inteiros
 
www.AulasDeMatematicanoRJ.Com.Br - Matemática - Conjuntos Numéricos
www.AulasDeMatematicanoRJ.Com.Br - Matemática - Conjuntos Numéricoswww.AulasDeMatematicanoRJ.Com.Br - Matemática - Conjuntos Numéricos
www.AulasDeMatematicanoRJ.Com.Br - Matemática - Conjuntos Numéricos
 
www.TutoresDePlantao.Com.Br - Matemática - Conjunto de Números Inteiros
www.TutoresDePlantao.Com.Br - Matemática -  Conjunto de Números Inteiroswww.TutoresDePlantao.Com.Br - Matemática -  Conjunto de Números Inteiros
www.TutoresDePlantao.Com.Br - Matemática - Conjunto de Números Inteiros
 
www.ensinofundamental.net.br - Matemática - Conjunto de Números Inteiros
www.ensinofundamental.net.br - Matemática -  Conjunto de Números Inteiroswww.ensinofundamental.net.br - Matemática -  Conjunto de Números Inteiros
www.ensinofundamental.net.br - Matemática - Conjunto de Números Inteiros
 
Capitulo 1scilab
Capitulo 1scilabCapitulo 1scilab
Capitulo 1scilab
 
Curso de Matlab avancado 1
Curso de Matlab avancado 1Curso de Matlab avancado 1
Curso de Matlab avancado 1
 
Prova de Matemática fuzileiro naval 2011
Prova de Matemática fuzileiro naval 2011Prova de Matemática fuzileiro naval 2011
Prova de Matemática fuzileiro naval 2011
 

Plus de Jorge Teixeira

Webrádio - Apresentacao dissertacao
Webrádio - Apresentacao dissertacaoWebrádio - Apresentacao dissertacao
Webrádio - Apresentacao dissertacaoJorge Teixeira
 
Spie individual trimestre2_jorge
Spie individual trimestre2_jorgeSpie individual trimestre2_jorge
Spie individual trimestre2_jorgeJorge Teixeira
 
Pré projecto de investigação
Pré projecto de investigaçãoPré projecto de investigação
Pré projecto de investigaçãoJorge Teixeira
 
Spie individual trimestre2_jorge
Spie individual trimestre2_jorgeSpie individual trimestre2_jorge
Spie individual trimestre2_jorgeJorge Teixeira
 
Pré projecto de investigação
Pré projecto de investigaçãoPré projecto de investigação
Pré projecto de investigaçãoJorge Teixeira
 
Ti 01 modelos comunicacionais
Ti 01   modelos comunicacionaisTi 01   modelos comunicacionais
Ti 01 modelos comunicacionaisJorge Teixeira
 
Jorge teixeira prova_tac
Jorge teixeira prova_tacJorge teixeira prova_tac
Jorge teixeira prova_tacJorge Teixeira
 
An2 b - trabalho colaborativo com as ferramentas google - edição e publicação...
An2 b - trabalho colaborativo com as ferramentas google - edição e publicação...An2 b - trabalho colaborativo com as ferramentas google - edição e publicação...
An2 b - trabalho colaborativo com as ferramentas google - edição e publicação...Jorge Teixeira
 

Plus de Jorge Teixeira (20)

Webrádio - Apresentacao dissertacao
Webrádio - Apresentacao dissertacaoWebrádio - Apresentacao dissertacao
Webrádio - Apresentacao dissertacao
 
3 criar podcasts
3   criar podcasts3   criar podcasts
3 criar podcasts
 
Divulgação
DivulgaçãoDivulgação
Divulgação
 
Aquisicao
AquisicaoAquisicao
Aquisicao
 
Podcast
PodcastPodcast
Podcast
 
Ferramentas web 2
Ferramentas web 2Ferramentas web 2
Ferramentas web 2
 
Tutoria online
Tutoria onlineTutoria online
Tutoria online
 
Spie individual trimestre2_jorge
Spie individual trimestre2_jorgeSpie individual trimestre2_jorge
Spie individual trimestre2_jorge
 
Pré projecto de investigação
Pré projecto de investigaçãoPré projecto de investigação
Pré projecto de investigação
 
Spie individual trimestre2_jorge
Spie individual trimestre2_jorgeSpie individual trimestre2_jorge
Spie individual trimestre2_jorge
 
Pré projecto de investigação
Pré projecto de investigaçãoPré projecto de investigação
Pré projecto de investigação
 
Ti 01 modelos comunicacionais
Ti 01   modelos comunicacionaisTi 01   modelos comunicacionais
Ti 01 modelos comunicacionais
 
Jorge teixeira prova_tac
Jorge teixeira prova_tacJorge teixeira prova_tac
Jorge teixeira prova_tac
 
Ied grupo 1 pte
Ied  grupo 1 pteIed  grupo 1 pte
Ied grupo 1 pte
 
Pfap relatorio final
Pfap relatorio finalPfap relatorio final
Pfap relatorio final
 
Pfap
PfapPfap
Pfap
 
An2 b - trabalho colaborativo com as ferramentas google - edição e publicação...
An2 b - trabalho colaborativo com as ferramentas google - edição e publicação...An2 b - trabalho colaborativo com as ferramentas google - edição e publicação...
An2 b - trabalho colaborativo com as ferramentas google - edição e publicação...
 
Plano tic 2007_2008
Plano tic 2007_2008Plano tic 2007_2008
Plano tic 2007_2008
 
Plano tic 2007_2008
Plano tic 2007_2008Plano tic 2007_2008
Plano tic 2007_2008
 
P.i.p
P.i.pP.i.p
P.i.p
 

COMO PASSAR PROGRAMAÇÃO II COM O PROFESSOR CHAMBEL

  • 1. 1 COMO PASSAR A PROGRAMAÇÃO II, COM O PROFESSOR CHAMBEL, SEM PERCEBER NADA DE PASCAL Como o professor Chambel faz sempre o mesmo tipo de exames, ou seja, usa sempre as mesmas perguntas, só que em contextos diferentes, pode-se fazer um tipo de base de dados (por outras palavras, uma boa cábula). Um bom exemplo disso é o seguinte programa: Verifique que uma matriz é mágica. Ou seja que a soma da linhas, das colunas e das diagonais é igual. Basta pegar na cábula e usar: ♦ Inserir dados numa matriz ♦ Soma das linhas de uma matriz ♦ Soma das colunas de uma matriz ♦ Soma das diagonais de uma matriz ♦ A diagonal de inclinação negativa ♦ A diagonal de inclinação positiva Com pouco mais fica o programa feito. ATENÇÂO: Lembrem-se que cada pequeno programa que o professor pede, poderá, por vezes, ser feito de maneira mais simples do que os desta cábula. Só que os da cábula dão para todas as situações. EXEMPLIFICAÇÃO: (este poderá ser o exemplo complicado) Program Magica; Type matriz = array [1..4,1..4] of integer; vector = array [1..4] of integer; Var A : matriz; somaL,SomaC:vector; i,j, diagonal1, diagonal2 : integer; magica : boolean; Begin (* Inserir dados numa matriz *) Writeln (‘Introduza os valores na matriz’); For i:=1 to 4 do For j:=1 to 4 do Readln (A[i,j]); (* Soma das linhas de uma matriz *) For i:=1 to 4 do Begin somaL[i]:=0;
  • 2. 2 For j:=1 to 4 do somaL[i]:=somaL[i]+A[i,j] End; (* Soma das colunas de uma matriz *) For j:=1 to 4 do Begin somaC[j]:=0; For i:=1 to 4 do somaC[j]:=somaC[j]+A[i,j] End; (* Soma das diagonais de uma matriz *) ( * A diagonal de inclinação negativa *) diagonal1:=0; For i:=1 to 4 do diagonal1:=diagonal1+A[i,i]; (* A diagonal de inclinação positiva *) diagonal2:=0; For i:=1 to 4 do diagonal2:=diagonal2+A[i,4-i+1]; (* ----------------------- *) magica:=true; If diagonal1<>diagonal2 then magica:=false Else For i:=1 to 4 do If (somaL<>diagonal1) or (somaC<>diagonal1) then magica:=false; If magica then Writeln (‘A matriz é mágica’) End. ATENÇÃO: Por vezes terão que mudar as variáveis para outras, por interferirem nas partes que já se fez antes, mas isso é fácil, basta não esquecer de as mudar todas. Se não forem mudadas o mal não será muito grande, porque a ideia ficou!!! Neste exemplo tive que mudar a variável diagonal, para diagonal1 e diagonal2, porque tinha que usar as duas diagonais. As variáveis sublinhadas são mudadas por números. Neste exemplo: em nLinhas pus 4, porque estou a usar uma matriz 4x4. Não esquecer que têm que declarar as variáveis, nos programa que fazem.
  • 3. 3 CÁBULAS – aconselho a levarem o seguinte para o exame. Ordenar For i:=primeiro to ultimo-1 do For j:=primeiro+1 to ultimo do If v[j]>v[i] then (* > crescente; < decrescente *) Begin (* troca de elementos *) aux:=v[i]; v[i]:=v[j]; v[j]:=aux End; ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- Inverter um número aux:=numero div 10; inv[1]:=numero mod 10; i:=1; While aux<>0 do Begin i:=i+1; If (aux div 10) = 0 then Begin inv[i]:=aux mod 10; aux:=0 End Else Begin inv[i]:=aux mod 10; aux:=aux div 10 End End; base:=1; inverso:=inv[i]; For j:=i-1 downto 1 do Begin base:=base*10; inverso:=inverso+inv[j]*base End; ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- Múltiplos de um número multipos[1]:=numero; i:=1; k:=numero; While i<>fim do Begin k:=k+numero; i:=i+1; multiplos[i]:=k End; ----- ----- ----- ----- ----- ----- ----- ----- ----- -----
  • 4. 4 Divisores de um número divisores[1]:=1; i:=1; k:=1; While k<>numero do Begin k:=k+1; If (numero mod k) = 0 then Begin i:=i+1; divisores[i]:=k End End; ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- Soma de um vector soma:=0; For i:=1 to nPosicoes do soma:=soma+V[i]; ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- Soma das posições de dois vectores For i:=1 to nPosicoes do V[i]:=V1[i]+V2[i]; ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- Multiplicação de matrizes For i:=1 to nLinhas do For j:=1 to nColunas do Begin M[i,j]:=0; For k:=1 to nColunas do M[i,j]:=M[i,j]+A[i,k]*B[k,j] End; ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- Soma das linhas de uma matriz For i:=1 to nLinhas do Begin soma[i]:=0; For j:=1 to nColunas do soma[i]:=soma[i]+A[i,j] End; ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- Soma das colunas de uma matriz For j:=1 to nColunas do Begin soma[j]:=0; For i:=1 to nLinhas do soma[j]:=soma[j]+A[i,j] End; ----- ----- ----- ----- ----- ----- ----- ----- ----- -----
  • 5. 5 Soma das diagonais de uma matriz A diagonal de inclinação negativa diagonal:=0; For i:=1 to nLinhas do diagonal:=diagonal+A[i,i]; A diagonal de inclinação positiva diagonal:=0; For i:=1 to nLinhas do diagonal:=diagonal+A[i,nLinhas-i+1]; ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- Inserir dados num vector Writeln (‘Introduza quant de valores’); For i:=1 to quant do Readln (V[i]); ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- Inserir dados numa matriz Writeln (‘Introduza os valores na matriz’); For i:=1 to nLinhas do For j:=1 to nColunas do Readln (A[i,j]); ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- Escrever os dados de uma matriz no ecrã (Análogo para os vectores) For i:=1 to nLinhas do For j:=1 to nColunas do Writeln (A[i,j]); ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- Média de um vector soma:=0; For i:=1 to fim do soma:=soma+V[i]; media:=soma/fim; ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- Trocos de uma quantia (200$, 100$, 50$, 20$, 10$, 5$, 1$) duzentos:=quantia div 200; auxiliar:=quantia mod 200; cem:=auxiliar div 100; auxiliar:=auxiliar mod 100; cinquenta:=auxiliar div 50; auxiliar:=auxiliar mod 50; vinte:=auxiliar div 20; auxiliar:=auxiliar mod 20; dez:=auxiliar div 10; auxiliar:=auxiliar mod 10; cinco:=auxiliar div 5; um:=auxiliar mod 5; ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- Números Primos primo:=true; for i:=3 to numero-1 do
  • 6. 6 if numero mod i=0 then primo:=false; ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- O menor num vector menor:=maxint; For i:=primeiro to ultimo do If V[i]< menor then menor:=V[i]; ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- O maior num vector maior:= -maxint; For i:=primeiro to ultimo do If V[i]> maior then maior:=V[i]; ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- RESOLUÇÃO DOS EXAMES DO CHAMBEL, USANDO ESTAS CÁBULAS Exame 1999 – Trabalhadores estudantes Listar os primeiros números defeituosos (n inteiro>=2 é defeituoso se a soma dos seus divisores, incluindo o 1 e excluindo o número, é menor que n) Program defeituosos; Type vector = array [1..100] of integer; Var i, k, n, soma, numero, w : integer; divisores : vector; Begin Repeat Write (‘Introduza o valor de n’); Readln (n); Until n>=2; For numero:=2 to n-1 do (* n-1 pq o enunciado diz excluindo n *) Begin (* CÁBULA: Divisores de um número *) divisores[1]:=1; (* 1 pq o enunciado diz incluindo 1 *) i:=1; k:=1; While k<>numero do Begin k:=k+1; If (numero mod k) = 0 then Begin i:=i+1; divisores[i]:=k
  • 7. 7 End End; (* CÁBULA: Soma de um vector *) soma:=0; For w:=1 to i do soma:=soma+divisores[w]; (* ---------------------------- *) If soma<n then Writeln (‘O ‘,numero,’ é DEFEITUOSO’) End End. Calcule os números capicuas de 4 dígitos que sejam múltiplos de 45 Program CapicuasMultiplos45; Type vector = array [1..4] of integer; Var inv : vector; i, numero, aux, base : integer; Begin For numero:=1000 to 9999 do Begin (* CÁBULA: Inverter um número *) aux:=numero div 10; inv[1]:=numero mod 10; i:=1; While aux<>0 do Begin i:=i+1; If (aux div 10) = 0 then Begin inv[i]:=aux mod 10; aux:=0 End Else Begin inv[i]:=aux mod 10; aux:=aux div 10 End End; base:=1; inverso:=inv[i]; For j:=i-1 downto 1 do Begin
  • 8. 8 base:=base*10; inverso:=inverso+inv[j]*base End; ( * -------------------------- *) If (inverso=numero) and (inverso mod 45 = 0) then Writeln (‘O ‘,numero,’ é capicua e múltiplo de 45.’) End End. Lista com 100 inteiros e realize as seguintes tarefas: a) Introduzir os elementos da lista b) Ordenar por ordem crescente os 50 primeiros números da lista c) Determinar o menor número da lista da posição 51º à 100º d) Comparar o menor número dos 50 primeiros com o menor da 51º à 100º, aparecendo no ecrã o local do menor das duas sublistas Program inteiros100; Type vector = array [1..100] of integer; Var i, j, aux, menor1, menor2, posicao1, posicao2 : integer; V:vector; Begin (*CÁBULA: Inserir dados num vector *) Writeln (‘Introduza 100 inteiros’); For i:=1 to 100 do Readln (V[i]); (* CÁBULA: Ordenar *) For i:=1 to 50-1 do For j:=1+1 to 50 do If v[j]>v[i] then (* > crescente; < decrescente *) Begin (* troca de elementos *) aux:=v[i]; v[i]:=v[j]; v[j]:=aux End; (* CÁBULA: O menor num vector *) menor2:=maxint; For i:=51 to 100 do If V[i]< menor2 then begin menor2:=V[i]; posicao2:=i (* para se saber a posição *)
  • 9. 9 end; (* CÁBULA: O menor num vector *) menor1:=maxint; For i:=1 to 50 do If V[i]< menor1 then begin menor1:=V[i]; posicao1:=i (* para se saber a posição *) end; (* --------------------------- *) If menor1<menor2 then Writeln (‘O menor: V[‘,posicao1,’] = ‘,menor1) Else Writeln (‘O menor: V[‘,posicao2,’] = ‘,menor2) End.