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:
- dado um número calcula o seu inverso (o valor inteiro correcto)
- dados dois números na forma invertida calcula a sua soma e devolve o resultado na mesma forma invertida
- 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