...collaborate on

Ficha Nº2

Objectivos:

O objectivo principal desta ficha é familiarizar o aluno com a linguagem algorítmica que irá ser usada para especificar os algoritmos e com as estruturas de controlo da linguagem C.

Nesta ficha, introduz-se também o conceito de subrotina ou função em C como método para repartir um problema em problemas mais pequenos.

Para atingir esse fim, o aluno irá desenvolver pequenos algoritmos e tentar codificá-los em C.

Exercícios:

[Exercício1] [Exercício2] [Exercício3] [Exercício4] [Exercício5] [Exercício6]


Exercício Nº1: Divisores de um número

Desenvolva o algoritmo, e posteriormente codifique-o em C, de um programa que lê um inteiros e escreve no écran os seus divisores.


Exercício Nº2: Maior Divisor Comum

Desenvolva o algoritmo, e posteriormente codifique-o em C como uma função. A sua função deverá ter dois argumentos inteiros e produzir um resultado inteiro que é o maior divisor comum dos argumentos recebidos. Posteriormente codifique um programa principal (main()) que utiliza esta função para cálculo do maior divisor comum de dois números fornecidos pelo utilizador.

Ver Algorítmo de Euclides

Que pode ser resumido em:

mdc(m,n) -->
             m>=n : m%n==0 --> n
                    m%n!=0 --> mdc(n,m%n)

             m<n  : mdc(n,m)


Exercício Nº3: Menor Múltiplo Comum

Desenvolva o algoritmo, e posteriormente codifique-o em C como uma função. A sua função deverá ter dois argumentos inteiros e produzir um resultado inteiro que é o menor múltiplo comum dos argumentos recebidos. Posteriormente codifique um programa principal (main()) que utiliza esta função para cálculo do menor múltiplo comum de dois números fornecidos pelo utilizador.


Exercício Nº4: É Primo?

Desenvolva o algoritmo, e posteriormente codifique-o em C como uma função. A sua função deverá ter um argumento inteiros e produzir um resultado do tipo booleano (o docente irá desenvolver uma pequena biblioteca de booleanos: bool.h). O resultado será verdadeiro (TRUE) se o argumento passado fôr primo e falso (FALSE) caso contrário. Posteriormente codifique um programa principal (main()) que utiliza esta função para verificar quem é primo numa sequência de inteiros introduzidos pelo utilizador (terminada por 0).


Exercício Nº5: Tudo ao contrário!

Foste transferido para uma nova escola.

Nessa escola, a professora e matemática gostava muito de pôr os alunos a pensar e tentava que a mais simples tarefa fosse algo em que o raciocínio tivesse que intervir.

Uma das medidas que ela implementou foi a de utilizar os números inteiros invertidos. Por exemplo, o 12 seria 21 e o 1821 seria 1281.

Ora, os alunos locais já estão habituados a lidar com os inteiros daquela maneira e até fazem as operações de adição e subtracção com os inteiros naquela forma. No entanto, para ti, que acabaste de chegar à escola esta tarefa não é tão simples. Assim, resolveste criar um programa em computador que fizesse três coisas:

  1. dado um número calcula o seu inverso (o valor inteiro correcto)
  2. dados dois números na forma invertida calcula a sua soma e devolve o resultado na mesma forma invertida
  3. dados dois números na forma invertida calcula a sua subtracção e devolve o resultado na mesma forma invertida

Sugestão: especifica uma função para cada um dos pontos acima.


Exercício Nº6: Sequência de Fibonacci

Codifica um programa que gere os primeiros 20 números de Fibonacci. Os números de Fibonacci são definidos recursivamente da seguinte forma:

   fib(0) = 1
   fib(1) = 1
   fib(n) = fib(n-1) + fib(n-2)   para n>=2

-- JoseCarlosRamalho - 04 Mar 2004

r5 - 09 Mar 2004 - 22:54:59 - JoseCarlosRamalho
This site is powered by the TWiki collaboration platformCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback
Syndicate this site RSSATOM