Você está aqui: Python ::: Desafios e Lista de Exercícios Resolvidos ::: Arrays e Matrix (Vetores e Matrizes) |
Desenvolva um programa que leia dez números do tipo inteiro ao usuário. Armazene esses dez números em um vetor - Desafio de Programação Resolvido em PythonQuantidade de visualizações: 518 vezes |
Pergunta/Tarefa: Desenvolva um programa que leia dez números do tipo inteiro ao usuário. Armazene esses dez números em um vetor. Para os valores dos elementos inseridos nas posições pares desse vetor, calcule o somatório deles, para os demais calcule a subtração desses valores. Em seguida, o programa deverá apresentar na tela os resultados. Sua saída deverá ser parecida com: Digite o 1.o número inteiro: 5 Digite o 2.o número inteiro: 1 Digite o 3.o número inteiro: 2 Digite o 4.o número inteiro: 3 Digite o 5.o número inteiro: 7 Digite o 6.o número inteiro: 8 Digite o 7.o número inteiro: 10 Digite o 8.o número inteiro: 54 Digite o 9.o número inteiro: 4 Digite o 10.o número inteiro: 5 A soma dos números nas posições pares é: 28 A subtração dos números nas posições ímpares é: -71 Veja a resolução comentada deste exercício usando Python: |
![]() |
Java ::: Projetos Java Completos - Códigos Fonte Completos Java ::: Projetos Java Programação Orientada a Objetos - Exemplos Java |
Sistema para Biblioteca usando Programação Orientada a Objetos em Java - Projeto completo com código fonte - Versão consoleQuantidade de visualizações: 13759 vezes |
Sistema para Gestão de Biblioteca usando Programação Orientada a Objetos em Java - Projeto completo com código fonte - Versão console Controle de Biblioteca - Sobre este projeto Java ![]() Nesta dica apresento a idéia de um Controle de Gestão de Biblioteca em Java usando Programação Orientada a Objetos. Trata-se de um programa com código fonte em duas versões console. Na primeira versão temos os dados sendo gerenciados por objetos ArrayList. Na segunda versão nós tiramos proveito dos métodos dos métodos readObject() e writeObject() e da interface Serializable para implementar a serialização de objetos em Java. Dessa forma, os dados do sistema podem ser salvos e carregados todas as vezes que o sistema for iniciado. Um Controle de Gestão de Biblioteca é um projeto ideal para dominar a programação orientada a objetos em Java, além de permitir colocar em prática várias coisas que estudamos na linguagem e não temos a oportunidade de implementar. Assim, este código, se bem estudado e bem entendido, pode render um controle de biblioteca pronto para ser vendido no mercado ou implementado em sua própria escola ou faculdade. Basta conectar as funcionalidades das classes a um banco de dados tal como o MySQL e adicionar mais alguns pequenos detalhes. O Diagrama de Classes Java Antes de falarmos mais sobre o projeto do Sistema de Biblioteca, dê uma boa olhada no seu diagrama de classes: ![]() Como a aplicação está estruturada? Como podemos ver no diagrama de classes, todo o controle do sistema é feito a partir da classe Biblioteca, que contém objetos da classe ArrayList para guardar objetos das classes Usuario, Autor, Editora, Livro, Emprestimo e Multa. O relacionamento entre os objetos das classes envolvidas está bem definido no código fonte, com comentários e menus individuais para o gerenciamento de cada parte que compõe o controle de biblioteca apresentado. Um empréstimo envolve um livro e um usuário, e pode gerar uma multa caso a devolução seja feita fora do prazo. A multa é gerada somente na devolução. Em sistemas reais, o usuário não pode fazer uma nova locação caso a multa não seja paga. Deixamos como sugestão e desafio, essa implementação no código. No entanto, já fizemos todo o restante do cálculo para você, ou seja, fizemos a diferença entre a data do empréstimo e sua devolução e geramos a multa, se houver, já com o devido valor a ser pago. Um livro está relacionado a um autor e a uma editora. Inicialmente o livro é cadastrado como disponível. Porém, esse status é alterado para indisponível quando ele está envolvido em um empréstimo, e novamente disponível quando é feita a devolução. Tudo isso é feito por meio de vários menus de opções, como mostro a seguir. As opções de menu para o gerencimento do sistema da biblioteca O menu principal foi escrito usando-se o seguinte código: // método que exibe o menu principal do sistema public void menuPrincipal(){ Scanner entrada = new Scanner(System.in); while(true){ limparTela(); System.out.println("\n:: B I B L I O T E C A ::\n"); System.out.println("Bem-vindo(a) ao sistem. Escolha a opção desejada"); System.out.println("1 - Livros"); System.out.println("2 - Autores"); System.out.println("3 - Editoras"); System.out.println("4 - Usuários"); System.out.println("5 - Empréstimos"); System.out.println("6 - Multas"); System.out.println("7 - Sair"); System.out.print("Sua opção: "); // lê a opção do usuário int opcao = Integer.parseInt(entrada.nextLine()); switch(opcao){ case 1: // chama o menu de gerenciamento de livros menuGerenciarLivros(); break; case 2: // chama o menu de gerenciamento de autores menuGerenciarAutores(); break; case 3: // chama o menu de gerenciamento de editoras menuGerenciarEditoras(); break; case 4: // chama o menu de gerenciamento de usuários menuGerenciarUsuarios(); break; case 5: // chama o menu de gerenciamento de emprestimos menuGerenciarEmprestimos(); break; case 6: // chama o menu de gerenciamento de multas menuGerenciarMultas(); break; case 7: System.out.println("\nObrigado por usar o Sistema de Biblioteca\n"); System.exit(0); } } } Note que cada case do switch do menu principal chama um método que será responsável por exibir um menu individual para o gerencimento da classe correspondente. Veja, por exemplo, o menu para cadastrar um novo usuário na biblioteca: // menu para cadatrar, listar, pesquisar, excluir // e atualizar os usuários da biblioteca public int menuGerenciarUsuarios(){ Usuario temp; // serve para várias operações neste menu // serve para as pesquisas dos usuários String pesquisaUsuario; Scanner entrada = new Scanner(System.in); // mostra o menu de forma repetitiva até o usuário // usar a opção de sair while(true){ // tire caso não funcionar no seu sistema operacional limparTela(); System.out.println("\n:: G E R E N C I A R U S U Á R I O S ::\n"); System.out.println("Escolha a opção desejada"); System.out.println("1 - Novo Usuário"); System.out.println("2 - Listar Usuários"); System.out.println("3 - Pesquisar Usuário"); System.out.println("4 - Excluir Usuário"); System.out.println("5 - Atualizar Usuário"); System.out.println("6 - Voltar Menu Anterior"); System.out.print("Sua opção: "); // lê a opção do usuário int opcao = Integer.parseInt(entrada.nextLine()); switch(opcao){ case 1: // vamos cadastrar um novo usuário System.out.print("\nNome: "); String nomeUsuario = entrada.nextLine(); System.out.print("Idade: "); int idadeUsuario = Integer.parseInt(entrada.nextLine()); System.out.print("Sexo: "); char sexoUsuario = entrada.nextLine().charAt(0); // vamos incrementar o contador de usuários Usuario.contadorUsuarios++; // agora vamos criar um novo objeto da classe Usuario Usuario u = new Usuario(Usuario.contadorUsuarios, nomeUsuario, idadeUsuario, sexoUsuario); // e o adicionamos no ArrayList de usuários usuarios.add(u); // e finalmente mostramos uma mensagem de sucesso. System.out.println("\nO usuário foi cadastrado com sucesso"); salvarDadosArquivo(); // salva os dados no arquivo break; ... Devo usar ArrayList do Java para desenvolver o sistema? Sim, objetos da classe ArrayList são perfeitos quando precisamos representar relacionamentos um para muitos e muitos para um. É claro que poderíamos usar vetores de objetos (usando array), mas ficaríamos restritos a tamanhos fixos, enquanto o ArrayList nos permite cadastrar quantos usuários, livros, editoras, autores e empréstimos nós quisermos. Dessa forma, veja, por exemplo, o trecho de código que registra um novo empréstimo: case 1: // vamos cadastrar um novo empréstimmo // para registrar um novo empréstimo nós precisamos // de um usuário // o usuário que será relacionado a este empréstimo Usuario usuario = null; while(usuario == null){ System.out.print("\nInforme o id ou nome do usuário: "); String pesquisaUsuario = entrada.nextLine(); // chamamos o método que pesquisa o usuario usuario = pesquisarUsuario(pesquisaUsuario); if(usuario == null){ // usuario não encotrado System.out.print("\nUsuário não encontrado.\n\nDigite 1 para pesquisar novamente ou 2 para voltar ao menu anterior: "); int opcaoTemp = Integer.parseInt(entrada.nextLine()); if(opcaoTemp == 2){ return 1; // saímos daqui e voltamos para o menu anterior } } } System.out.println("Usuário selecionado: " + usuario.getNome()); // fim para registrar um novo empréstimo nós // precisamos de um usuário // para registrar um novo empréstimo nós precisamos // de um livro Livro livro = null; // o livro que será relacionado // a este empréstimo while(livro == null){ System.out.print("Informe o id, título ou ISBN do livro: "); String pesquisaLivro = entrada.nextLine(); // chamamos o método que pesquisa o livro livro = pesquisarLivro(pesquisaLivro); // livro não encontrado ou indisponível if((livro == null) || (!livro.isDisponivel())){ System.out.print("\nLivro não encontrado ou indisponível.\n\nDigite 1 para pesquisar novamente ou 2 para voltar ao menu anterior: "); int opcaoTemp = Integer.parseInt(entrada.nextLine()); if(opcaoTemp == 2){ return 1; // saímos daqui e voltamos para o menu anterior } } } System.out.println("Livro selecionado: " + livro.getTitulo()); // fim para cadastrar um novo empréstimo nós // precisamos de um livro try{ System.out.print("Data do Empréstimo: "); String dataEmprestimo = entrada.nextLine(); Date dataEmprestimoDate = new SimpleDateFormat("dd/MM/yyyy").parse(dataEmprestimo); System.out.print("Data de Devolução: "); String dataDevolucao = entrada.nextLine(); Date dataDevolucaoDate = new SimpleDateFormat("dd/MM/yyyy").parse(dataDevolucao); // a data de devolução é menor que a data de empréstimo? if(dataDevolucaoDate.getTime() <= dataEmprestimoDate.getTime()){ System.out.println("\nA data de devolução deve ser maior que a data de empréstimo.\n"); } else{ // vamos incrementar o contador de empréstimos Emprestimo.contadorEmprestimos++; // vamos marcar o livro escolhido como indisponível livro.setDisponivel(false); // agora vamos criar um novo objeto da classe Emprestimo Emprestimo emprestimo = new Emprestimo(usuario, livro, Emprestimo.contadorEmprestimos, dataEmprestimoDate, dataDevolucaoDate, null, false); // e o adicionamos no ArrayList de empréstimos emprestimos.add(emprestimo); // e finalmente mostramos uma mensagem de sucesso. System.out.println("\nO empréstimo foi registrado com sucesso"); salvarDadosArquivo(); // salva os dados no arquivo } } catch(ParseException e){ System.out.println("\nAs datas informadas são inválidas.\n"); } break; Note que este trecho de código é parte do case da opção Novo Empréstimo do menu Gerenciar Empréstimos. Veja como usamos uma variável estática contadorEmprestimos da classe Emprestimo para criarmos um valor inteiro auto-incremento que nos permite identificadores únicos para cada empréstimo da biblioteca. Viu que código mais lindo? Note como a Programação Orientada a Objetos em Java nos permite desenvolver idéias de forma bem parecida mesmo ao mundo real. Como posso obter este código fonte? O código fonte desta aplicação é fornecido em duas versões: 1) SBIBLIOJCNB-A - Sistema de Gestão de Biblioteca em Java com Código Fonte Versão Console - NetBeans IDE ou Eclipse. 2) SBIBLIOJCNB-B - Sistema de Gestão de Biblioteca em Java com Código Fonte Versão Console - Lê e salva os dados em arquivo usando serialização (Serializable), ou seja, os métodos readObject() e writeObject() - NetBeans IDE ou Eclpse. Para adquirir, entre em contato conosco usando o WhatsApp ou e-mail indicados na lateral do site. Podemos combinar alterações e a adição de novas funcionalidades. Não se esqueça: Uma boa forma de estudar o código é fazendo pequenas alterações e rodando para ver os resultados. Outra opção é começar um projeto Java do zero e ir adicionando trechos do código fonte para melhor entendimento de suas partes. |
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Estruturas de Controle |
Exercícios Resolvidos de Java - Um programa que lê duas notas, calcula a média aritmética e exibe uma mensagem de reprovado, exame ou aprovadoQuantidade de visualizações: 4144 vezes |
Pergunta/Tarefa: Escreva um programa Java que leia duas notas (como double), calcule e mostre a média aritmética e uma mensagem de acordo com as seguintes regras: 1) Se a média for inferior a 4,0 escreva "Reprovado"; 2) Se a média for igual ou superior a 4,0 e inferior a 7,0 escreva "Exame"; 3) Se a média for igual ou superior a 7,0 escreva "Aprovado". Sua saída deverá ser parecida com: Informe a primeira nota: 8 Informe a segunda nota: 7.4 A média obtida foi: 7.7 Aprovado Veja a resolução comentada deste exercício usando Java console: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- package estudos; import java.util.Scanner; public class Estudos { public static void main(String[] args) { Scanner entrada = new Scanner(System.in); // vamos solicitar as duas notas do aluno double n1, n2, media; System.out.print("Informe a primeira nota: "); n1 = Double.parseDouble(entrada.nextLine()); System.out.print("Informe a segunda nota: "); n2 = Double.parseDouble(entrada.nextLine()); // vamos calcular a média aritmética media = (n1 + n2) / 2; System.out.println("A média obtida foi: " + media); // vamos verificar se o aluno foi reprovado, está de exame ou aprovado if(media < 4.0){ // reprovado System.out.println("Reprovado"); } else if((media >= 4.0) && (media < 7.0)){ // exame System.out.println("Exame"); } else{ System.out.println("Aprovado"); } System.out.println("\n"); } } |
C++ ::: Dicas & Truques ::: Strings e Caracteres |
Como acessar os caracteres individuais de uma string em C++ usando a função at()Quantidade de visualizações: 7151 vezes |
Nesta dica mostrarei como podemos usar a função at() para percorrer os caracteres individuais de uma palavra, frase ou texto em C++. Esta função recebe o índice do caractere que queremos acessar e retorna o caractere correspondente. Note que o índice começa em 0. Veja o código C++ completo para o exemplo: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- #include <iostream> #include <string> using namespace std; // função principal do programa int main(int argc, char *argv[]){ // vamos criar uma nova string string palavra("PYTHON"); // vamos percorrer os caracteres um de cada vez for(int i = 0; i < palavra.size(); i++){ cout << palavra.at(i) << "\n"; } cout << "\n\n"; system("PAUSE"); // pausa o programa return EXIT_SUCCESS; } Ao executar este código C++ nós teremos o seguinte resultado: P Y T H O N |
Kotlin ::: Dicas de Estudo e Anotações ::: Input e Output (Entrada e Saída) |
Como usar a função readLine() do kotlin.io para ler a entrada do usuário em KotlinQuantidade de visualizações: 7063 vezes |
Podemos ler a entrada do usuário usando o método readLine() do pacote kotlin.io, que é importado automaticamente para todas as aplicações Kotlin. Esta função retorna um objeto da classe String? e aceita um valor null, ou seja, uma string vazia. Veja um exemplo no qual pedimos para o usuário informar o seu nome e em seguida exibimos uma saudação: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- fun main(args: Array<String>) { print("Por favor, informe o seu nome: ") // vai ler o nome e guardar na variável nome var nome = readLine() println("Olá, $nome. Bem-vindo(a) ao Kotlin.") } Ao executarmos este código nós teremos o seguinte resultado: Por favor, informe o seu nome: Osmar J. Silva Olá, Osmar J. Silva. Bem-vindo(a) ao Kotlin. |
C ::: Dicas & Truques ::: Recursão (Recursividade) |
Como somar os elementos de um vetor em C usando uma função recursiva - Linguagem C para iniciantesQuantidade de visualizações: 5122 vezes |
Em algumas ocasiões ficamos imaginando o que pode ser feito com os métodos e funções recursivas. A resposta é: praticamente tudo. Veja abaixo um programa C completo no qual eu mostro como escrever uma função recursiva que recebe um array e mostra a soma de seus elementos (lembre-se de que um array é o mesmo que vetor, ou seja, uma matriz de uma linha e várias colunas): ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- #include <stdio.h> #include <stdlib.h> // função recursiva para somar todos os elementos de um array int somar(int indice, int tamanho, int vetor[]){ // o caso base...hora de encerrar a recursividade if(indice == (tamanho - 1)){ return vetor[indice]; } else{ // ainda não é o caso base? vamos fazer uma nova chamada à função somar() return vetor[indice] + somar(indice + 1, 10, vetor); } } // função principal do programa int main(int argc, char *argv[]){ // vamos declarar um array de 10 elementos int valores[10]; int i, soma; // vamos pedir ao usuário para informar os valores para o vetor for(i = 0; i < 10; i++){ printf("Informe o valor do elemento %d: ", i); scanf("%d", &valores[i]); } // vamos efetuar uma chamada à função recursiva somar(); // nota que estamos passando o índice inicial, o tamanho do // array e o array em si soma = somar(0, 10, valores); printf("\nA soma dos elementos è: %d", soma); printf("\n\n"); system("PAUSE"); return 0; } Ao executarmos este código C nós teremos o seguinte resultado: Informe o valor do elemento 0: 7 Informe o valor do elemento 1: 3 Informe o valor do elemento 2: 1 Informe o valor do elemento 3: 3 Informe o valor do elemento 4: 8 Informe o valor do elemento 5: 9 Informe o valor do elemento 6: 4 Informe o valor do elemento 7: 3 Informe o valor do elemento 8: 2 Informe o valor do elemento 9: 6 A soma dos elementos é: 46 |
Desafios, Exercícios e Algoritmos Resolvidos de C |
Veja mais Dicas e truques de C |
Dicas e truques de outras linguagens |
Quem Somos |
![]() Entre em contato comigo para, juntos, vermos em que posso contribuir para resolver ou agilizar o desenvolvimento de seus códigos.
|
![]() Não basta ter um site. É necessário ter um site que é localizado e converte usuários em clientes. Se sua página não faz isso, Fale comigo e vamos fazer uma analise e conseguir resultados mais satisfatórios..
|
Linguagens Mais Populares |
1º lugar: Java |
Códigos Fonte |
![]() Diga adeus às planilhas do Excel e tenha 100% de controle sobre suas contas a pagar e a receber, gestão de receitas e despesas, cadastro de clientes e fornecedores com fotos e histórico de atendimentos. Código fonte completo e funcional, com instruções para instalação e configuração do banco de dados MySQL. Fácil de modificar e adicionar novas funcionalidades. Clique aqui e saiba mais |
![]() Tenha o seu próprio sistema de controle de estoque web. com cadastro de produtos, categorias, fornecedores, entradas e saídas de produtos, com relatórios por data, margem de lucro e muito mais. Código simples e fácil de modificar. Acompanha instruções para instalação e criação do banco de dados MySQL. Clique aqui e saiba mais |