Esta lista de exercícios resolvidos é um manual para ajudar todo aluno iniciante e não só, a adquirir e aprimorar as habilidades necessárias para se trabalhar com Python, de forma rápida e consistente. Estude e desfrute do conteúdo. 1º Exercício Faça um programa que informe a versão do Python que você está utilizando Solução import sys print ( "Versão do Python" ) print (sys.version) print ( "Informação da versão instalada" ) print (sys.version_info) Atenção : - O módulo sys fornece funções e variáveis usadas para manipular diferentes partes do ambiente de tempo de execução do Python; - Pra quem ainda não está familiarizado com a linguagem, um módulo é um arquivo contendo definições e comandos em Python para serem usados em outros programas. 2º Exercício Faça um programa em linguagem Python que converta metros para centímetros. Solução print ( ' \t ----Conversão de medida---- ' ) metros = int ( input ( 'Informe o valor em metros:
Lista - Exercícios resolvidos sobre rotina recursiva - recursividade em Linguagem C - recursividad en lenguaje C.
1° Exercício resolvido sobre recursividade em C
Faça uma rotina recursiva para calcular a somatória de todos os número de 1 a N (N será lido do teclado).
Observação: se N é igual a 5 por exemplo, A somatória dos números será igual a 15, ou seja, 1+2+3+4+5 = 15 .
Solução
#include<stdio.h>
#include<locale.h> /* Arquivo de cabeçalho que contém a declaração da função setlocale que nos permite mostrar na tela, os caracteres da língua Portuguesa como por exemplo ç , á, ã */
int soma_num(int num)
{
int resultado;
if (num == 1)
{
return (1);
}
else
{
resultado = num + soma_num(num - 1);
}
return (resultado);
}
int main()
{
int num_N;
int somatorio;
setlocale(LC_ALL,"portuguese");
printf("\n\t Programa para calcular a somatória de todos os números de 1 a N:\n");
printf("\n Digite o número N : ");
scanf("%d", &num_N); /*o número digitado vai ser guardado na memória*/
somatorio = soma_num(num_N); /*A variável somatório está chamando a função soma_num*/
printf("\n O somatório dos números de 1 até %d = %d \n", num_N, somatorio);
return 0;
}
2° Exercício resolvido - recursividad en lenguaje C
#include<stdio.h>
6° Exercício resolvido usando recursividade em C
Escrever uma função recursiva que calcule o valor de a elevado a b.
printf("Informe o valor de 'a' : ");
7° Exercício resolvido usando recursividade em C
1° Exercício resolvido sobre recursividade em C
Faça uma rotina recursiva para calcular a somatória de todos os número de 1 a N (N será lido do teclado).
Observação: se N é igual a 5 por exemplo, A somatória dos números será igual a 15, ou seja, 1+2+3+4+5 = 15 .
Solução
#include<stdio.h>
#include<locale.h> /* Arquivo de cabeçalho que contém a declaração da função setlocale que nos permite mostrar na tela, os caracteres da língua Portuguesa como por exemplo ç , á, ã */
int soma_num(int num)
{
int resultado;
if (num == 1)
{
return (1);
}
else
{
resultado = num + soma_num(num - 1);
}
return (resultado);
}
int main()
{
int num_N;
int somatorio;
setlocale(LC_ALL,"portuguese");
printf("\n Digite o número N : ");
scanf("%d", &num_N); /*o número digitado vai ser guardado na memória*/
somatorio = soma_num(num_N); /*A variável somatório está chamando a função soma_num*/
printf("\n O somatório dos números de 1 até %d = %d \n", num_N, somatorio);
return 0;
}
2° Exercício resolvido - recursividad en lenguaje C
Crie um programa em Linguagem C que conte os dígitos de um determinado número usando recursão.
Observação: se o usuário inserir o número 250, a saída esperada deve ser : o número digitado tem 3 dígitos.
Solução
#include<stdio.h>
int num_digitos(int n1)
{
static int cont=0;
if(n1!=0)
{
cont++;
num_digitos(n1/10);
}
return cont;
}
int main()
{
int num,contador;
printf("\n\t Programa para contar o numero de digitos :\n");
printf(" Insira o numero : ");
scanf("%d",&num);
contador = num_digitos(num);
printf("\n Quantidade de digitos = %d \n\n",contador);
return 0;
return 0;
}
3° Exercício resolvido sobre recursividade em C
Faça uma rotina recursiva em C para encontrar o fatorial de um número.
Por exemplo :
>> Digite o número: 5!
>> Saída do dado : 5*4*3*2*1 = 120
Solução
#include<stdio.h>
int factorial(int n)
{
if(n==1)
return 1;
else
return(n*factorial(n-1));
}
int main()
{
int num,fat;
printf("\n\t Fatorial de um numero :\n");
printf("\n Insira o numero : ");
scanf("%d",&num);
fat=factorial(num);
printf("\n O fatorial de %d = %d\n",num,fat);
return 0;
return 0;
}
4° Exercício resolvido - recursividad en lenguaje C
Crie um programa que calcula o máximo divisor comum entre dois números usando a recursão.
Observação : Dois números naturais sempre têm divisores comuns. Assim, o máximo divisor comum entre os dois é o maior de seus divisores.
Exemplificando...os divisores comuns de 12 e 18 são 1,2,3 e 6. Dentre eles, 6 é o maior. Então, chamamos o 6 de máximo divisor comum de 12 e 18 e indicamos m.d.c.(12,18) = 6.
Solução
#include<stdio.h>
int mdc(int num1, int num2)
{
if(num2 != 0)
return mdc(num2, num1%num2);
else
return num1;
}
int main()
{
int n1, n2,calc;
printf("\n\t Digite dois numeros inteiros positivos: ");
scanf("%d %d", &n1, &n2);
calc=mdc(n1,n2);
printf("\n O MDC entre %d e %d eh : %d", n1, n2,calc );
return 0;
}
Crie um programa que calcula o máximo divisor comum entre dois números usando a recursão.
Observação : Dois números naturais sempre têm divisores comuns. Assim, o máximo divisor comum entre os dois é o maior de seus divisores.
Exemplificando...os divisores comuns de 12 e 18 são 1,2,3 e 6. Dentre eles, 6 é o maior. Então, chamamos o 6 de máximo divisor comum de 12 e 18 e indicamos m.d.c.(12,18) = 6.
Solução
#include<stdio.h>
int mdc(int num1, int num2)
{
if(num2 != 0)
return mdc(num2, num1%num2);
else
return num1;
}
int main()
{
int n1, n2,calc;
printf("\n\t Digite dois numeros inteiros positivos: ");
scanf("%d %d", &n1, &n2);
calc=mdc(n1,n2);
printf("\n O MDC entre %d e %d eh : %d", n1, n2,calc );
return 0;
}
5° Exercício resolvido
Escreva um programa em C para inverter uma string usando recursão.
Observação:
>> Digite a string: Huicode
>> Saída do dado : A string invertida é: edociuH
Solução
#include<stdio.h>
#define MAX 75
char* Inversao(char str1[])
{
static int i=0;
static char str_inv[MAX];
if(*str1)
{
Inversao(str1+1);
str_inv[i++] = *str1;
}
return (str_inv);
}
int main()
{
char *str_invertida ,string1[MAX];
printf("\n Insira uma string: ");
scanf("%s",string1);
str_invertida = Inversao(string1);
printf("\n A string invertida eh: %s\n",str_invertida);
return 0;
return 0;
}
6° Exercício resolvido usando recursividade em C
Escrever uma função recursiva que calcule o valor de a elevado a b.
Solução
Neste caso:
a - é a base;
b - é o expoente;
#include<stdio.h>
#include<locale.h>
/*criar o protótipo da função potência, ou seja, declarar a quantidade de parâmetros e os tipos de parâmetros */
float potencia(float base, float expoente); /*A função aceita dois números, ou seja, base(a) e expoente(b) . Ela vai calcular o valor da potência.*/
int main()
{
float a,b,resultado;
setlocale(LC_ALL,"Portuguese");printf("Informe o valor de 'a' : ");
scanf("%f",&a);
printf("Informe o valor de 'b' : ");
scanf("%f",&b);
/*Agora, vamos chamar a função potencia() com os argumentos a e b para fazer o cálculo*/
resultado = potencia(a,b);
printf("%.1f elevado a %.1f = %.2f",a,b,resultado);
return 0;
}
float potencia(float base, float expoente)
{
if(expoente == 0) /*Se o expoente for zero, a potência será igual a 1. Essa é uma das regras de potenciação*/
{
return 1;
}
if(expoente>0) /* Se o expoente é positivo, então o potência é = base*potencia(base, - expoente)*/
{
return (base * potencia(base,expoente - 1));
}
if(expoente<0) /* Se o expoente é negativo, então o potência é = 1/potencia(base, - expoente)*/
{
return (1/potencia(base,-expoente));
}
}
7° Exercício resolvido usando recursividade em C
Faça uma rotina recursiva para o problema da Torre de Hanói.
O problema da Torre de Hanói consiste de três pinos, A, B e C, denominados : origem, destino e trabalho, respectivamente, e n discos de diâmetros diferentes.
Inicialmente, todos os discos se encontram empilhados no pino origem, em ordem decrescente de tamanho, de baixo para cima. O objetivo é empilhar todos os discos no pino destino, atendendo às seguintes restrições:
#include<stdio.h>
O problema da Torre de Hanói consiste de três pinos, A, B e C, denominados : origem, destino e trabalho, respectivamente, e n discos de diâmetros diferentes.
Inicialmente, todos os discos se encontram empilhados no pino origem, em ordem decrescente de tamanho, de baixo para cima. O objetivo é empilhar todos os discos no pino destino, atendendo às seguintes restrições:
- Apenas um disco pode ser removido de cada vez.
- Qualquer disco não pode ser jamais colocado sobre outro de tamanho menor.
#include<stdio.h>
void moveDisco(int k, char origem[], char destino[])
{
printf("\n move disco %3d da torre %10s para a torre %10s",
k, origem, destino);
}
void hanoi(int n, char a[], char b[], char c[])
{
if(n == 1)
moveDisco(1, a, b);
else
{
hanoi(n-1, a, c, b);
moveDisco(n, a, b);
hanoi(n-1, c, b, a);
}
}
int main()
{
int n;
char origem[10], destino[10], auxiliar[10];
printf("\n Entre com o numero de discos:");
scanf("%d", &n);
printf("\n Entre com os nomes dos discos (origem destino auxiliar): \n");
scanf("%s%s%s", origem, destino, auxiliar);
hanoi(n, origem, destino, auxiliar);
return 0;
return 0;
}
Os exercícios foram úteis? Seja gentil, comente aqui com a gente :)
Muito bom. Gostaria que fizessem em Java.
ResponderExcluirhabluébluébluéblué
ExcluirBoa tarde. Poderia ter os códigos comentados nas resoluções. Algumas coisas pra iniciante ficam bem confusas.
ResponderExcluirPode fazer mais exemplos assim, me ajudou muito.
ResponderExcluirExcelentes, bastante didáticos!
ResponderExcluir