Dart ::: Dicas de Estudo e Anotações ::: Estruturas de Controle |
Como usar o laço while da linguagem DartQuantidade de visualizações: 2437 vezes |
O laço while (enquanto), ou loop while, é usado quando queremos repetir uma ou mais instruções ENQUANTO uma condição estiver sendo satisfeita. A condição para a execução desse laço é o retorno de uma condição true ou false. Veja um exemplo no qual usamos o laço while para contar de 0 até 10: void main() { int cont = 1; while (cont < 10) { print(cont); cont++; // aumenta cont em 1 } } Este código, quando executado, gera o seguinte resultado: 1 2 3 4 5 6 7 8 9 É importante observar que um laço while pode nunca ser executado. Para isso basta que o teste condicional na entrada do laço retorne um resultado falso. Veja agora como usar um laço while para encontrar os 10 primeiros múltiplos de 5 e 7: void main() { int cont = 0; int numero = 1; // queremos encontrar 10 múltiplos de 5 e 7 while (cont < 10) { if ((numero % 5 == 0) && (numero % 7 == 0)) { print(numero); cont++; } // incrementa o número numero++; } } Quando executamos este código nós obtemos o seguinte resultado: 35 70 105 140 175 210 245 280 315 350 |
Portugol ::: Desafios e Lista de Exercícios Resolvidos ::: Portugol Básico |
Exercícios Resolvidos de Portugol - Como calcular salário líquido em Portugol - Calculando o salário líquido de um professorQuantidade de visualizações: 1586 vezes |
Pergunta/Tarefa: Escreva um algoritmo Portugol ou VisuAlg que calcule o salário líquido de um professor. Seu programa deverá solicitar que o usuário informe o valor da hora aula (como real), o número de horas trabalhadas no mês (como inteiro) e o percentual de desconto do INSS (como real). Em seguida mostre o salário líquido. Sua saída deverá ser parecida com: Informe o valor da hora aula: 28 Informe o número de horas trabalhadas no mês: 12 Informe o percentual de desconto do INSS: 8 Salário Bruto: R$ 336,00 Total de Descontos: R$ 26,88 Salário Líquido: R$ 309,12 Veja a resolução comentada deste exercício usando Portugol (na versão Portugol Webstudio): // Cálculo de Salário Bruto e Líquido em Portugol programa { funcao inicio() { // variáveis usadas para resolver o problema real valor_hora_aula inteiro horas_trabalhadas real percentual_desconto_inss real salario_bruto real salario_liquido real total_desconto // vamos ler o valor do hora aula escreva("Informe o valor da hora aula: ") leia(valor_hora_aula) // vamos ler o número de horas trabalhadas no mês escreva("Informe o número de horas trabalhadas no mês: ") leia(horas_trabalhadas) // vamos ler o percentual de desconto do INSS escreva("Informe o percentual de desconto do INSS: ") leia(percentual_desconto_inss) // vamos calcular o salário bruto salario_bruto = valor_hora_aula * horas_trabalhadas // agora calculamos o total do desconto total_desconto = (percentual_desconto_inss / 100) * salario_bruto // finalmente calculamos o salário líquido salario_liquido = salario_bruto - total_desconto // mostramos o resultado escreva("\nSalário Bruto: R$ ", salario_bruto) escreva("\nTotal de Descontos: R$ ", total_desconto) escreva("\nSalário Líquido: R$ ", salario_liquido) } } |
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Java Básico |
Exercícios Resolvidos de Java - Valor da diária, valor médio arrecadado com e sem promoção e o lucro ou prejuízo mensal de uma promoção em um hotelQuantidade de visualizações: 14685 vezes |
Pergunta/Tarefa: Escreva um programa Java para resolver o seguinte problema: Um hotel com 42 apartamentos resolveu fazer promoções para os fins de semana fora da alta temporada, isto é, nos meses de abril, maio, junho, agosto, setembro, outubro e novembro. A taxa da promoção é de 22% da diária normal. A ocupação média do hotel sem promoção é de 40%. A expectativa é aumentar a taxa de ocupação para 70%. Supondo que as expectativas se confirmem, escrever um algoritmo que lê a diária normal, que calcule e escreva as seguintes informações: (a) O valor da diária no período da promoção. (b) O valor médio arrecadado sem a promoção, durante um mês. (c) O valor médio arrecadado com a promoção, durante um mês. (d) O lucro ou prejuízo mensal com a promoção. Seu código Java deverá apresentar uma saída parecida com: Informe o valor da diária normal: 120 Diária no período de promoção: 26,40 Média arrecadada sem a promoção durante um mês: 8064,00 Média arrecadada com a promoção durante um mês: 3104,64 Prejuízo mensal com a promoção: 4959,36 Veja a resolução comentada deste exercício usando Java console (lendo a entrada do usuário por meio do uso da classe Scanner): package estudos; import java.util.Scanner; public class Estudos { public static void main(String[] args) { // vamos criar um objeto da classe Scanner Scanner entrada = new Scanner(System.in); // valor da diária em período normal double valor_diaria_normal; // valor da diária no período de promoção double valor_diaria_promocao; // vamos obter o valor da diária no período normal System.out.print("Informe o valor da diária normal: "); valor_diaria_normal = Double.parseDouble(entrada.nextLine()); // vamos obter o valor da diária no período promocional valor_diaria_promocao = valor_diaria_normal * (22.0 / 100.0); // vamos calcular o valor médio arrecadado sem a promoção, durante um mês // estamos assumindo 4 finais de semana por mês double media_arrecado_sem_promocao = (valor_diaria_normal * (42 * (40.0 / 100.0)) * 4); // vamos calcular o valor médio arrecadado com a promoção, durante um mês // estamos assumindo 4 finais de semana por mês double media_arrecado_com_promocao = (valor_diaria_promocao * (42 * (70.0 / 100.0)) * 4); System.out.printf("Diária no período de promoção: %.2f\n", valor_diaria_promocao); System.out.printf("Média arrecadada sem a promoção durante um mês: %.2f\n", media_arrecado_sem_promocao); System.out.printf("Média arrecadada com a promoção durante um mês: %.2f\n", media_arrecado_com_promocao); // houve lucro ou prejuízo? if (media_arrecado_sem_promocao < media_arrecado_com_promocao) { System.out.printf("Lucro mensal com a promoção: %.2f\n", media_arrecado_com_promocao - media_arrecado_sem_promocao); } else { System.out.printf("Prejuízo mensal com a promoção: %.2f\n", media_arrecado_sem_promocao - media_arrecado_com_promocao); } } } |
C# ::: Coleções (Collections) ::: ArrayList |
Como retornar a quantidade de itens em uma ArrayList do C# - Como retornar o tamanho da ArrayList do C#Quantidade de visualizações: 8715 vezes |
Em algumas situações precisamos saber quantos elementos estão presentes na ArrayList do C#. Isso pode ser feito por meio da propriedade Count, que retorna um número inteiro representando a quantidade de itens atualmente na lista. Veja um exemplo de seu uso: using System; using System.Collections; namespace Estudos { class Program { static void Main(string[] args) { // não se esqueça // using System.Collections; // Cria o ArrayList ArrayList cidades = new ArrayList(); // Adiciona nomes de cidades cidades.Add("Goiânia"); cidades.Add("Cuiabá"); cidades.Add("Fortaleza"); cidades.Add("Curitiba"); // obtém a quantidade de elementos int quant = cidades.Count; Console.Write("A lista contém {0} itens", quant); Console.WriteLine("\n\nPressione uma tecla para sair..."); Console.ReadKey(); } } } Ao executar este código C# nós teremos o seguinte resultado: A lista contém 4 itens Pressione uma tecla para sair... |
C# ::: Fundamentos da Linguagem ::: Métodos, Procedimentos e Funções |
Tutorial C# para iniciantes - Como escrever seu primeiro método ou função em C#Quantidade de visualizações: 15515 vezes |
À medida que estamos desenvolvendo nossos códigos, percebemos que estes podem ser divididos de acordo com suas funcionalidades. Ao efetuar esta divisão, estamos na verdade criando blocos de códigos que executam uma determinada tarefa. E, descobrimos que tais blocos de códigos podem ser reaproveitados com frequencia em um mesmo programa. Assim, ao mecanismo usado para disparar a execução destes blocos de códigos é dado o nome de método (ou função em linguagens tais como C e C++). Um método, em sua forma mais simples, é apenas um conjunto de instruções que podem ser chamadas a partir de locais estratégicos de um programa. Veja um exemplo: // um método que não recebe nenhum argumento // e não retorna nenhum valor static void metodo(){ Console.WriteLine("Sou um método"); } Este método apenas exibe o texto "Sou um método". Veja o uso das chaves { e } para delimitar a área de atuação do método (o corpo do método). A palavra-chave void indica que este método não retorna nenhum valor ao finalizar sua execução enquanto a palavra-chave static é melhor explicada na nossa seção sobre modificadores em C#. Todos os métodos em C# possuem parênteses, os quais servem como marcadores para a lista de parâmetros do método. Parênteses vazios indicam que o método não possui parâmetros.[br][br] Veja agora um trecho de código completo exemplificando a chamada ao método recém-criado: // um método que não recebe nenhum argumento // e não retorna nenhum valor static void metodo(){ Console.WriteLine("Sou um método"); } static void Main(string[] args){ // efetua uma chamada ao método metodo(); Console.WriteLine("\n\nPressione uma tecla para sair..."); Console.ReadKey(); } |
MySQL ::: Dicas & Truques ::: Joins (Junções) |
Como agrupar dados de duas ou mais tabelas no MySQL usando LEFT JOIN (ou LEFT OUTER JOIN)Quantidade de visualizações: 14737 vezes |
A junção LEFT JOIN (ou LEFT OUTER JOIN) do MySQL é usada quando queremos agrupar dados de duas ou mais tabelas e exibir todos os registros da tabela à esquerda, mesmo que não haja correspondências (match) de registros na tabela à direita. Vamos ver um exemplo? Considere duas tabelas: jogadores e times. Um jogador pode jogar em nenhum (zero) ou um time e um time pode conter zero ou mais jogadores. Aqui a cardinalidade é de 1 x N. Comece criando a tabela de times: Comando DDL CREATE TABLE para a tabela times: CREATE TABLE times( id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, nome VARCHAR(45) NOT NULL, PRIMARY KEY(id) ) ENGINE = InnoDB; Vá em frente e insira alguns times nesta tabela. Vamos agora criar a tabela de jogadores: Comando DDL CREATE TABLE para a tabela jogadores: CREATE TABLE jogadores( id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, nome VARCHAR(45) NOT NULL, id_time INTEGER UNSIGNED, PRIMARY KEY(id), CONSTRAINT fk_jogadores_times FOREIGN KEY fk_jogadores_times(id_time) REFERENCES times(id) ON DELETE RESTRICT ON UPDATE RESTRICT ) ENGINE = InnoDB; Note que o campo id_time da tabela jogador aceita NULL, ou seja, como é possível haver jogadores sem times, devemos ser capazes de cadastrar os jogadores e só mais adiante definir o time a qual ele pertencerá. Veja: INSERT INTO jogadores VALUES(NULL, 'JORGINHO', NULL); Vá em frente e cadastre alguns jogadores (sem relacioná-los com algum time). Finalizado alguns cadastros de jogadores e times, use a instrução UPDATE para relacionar alguns jogadores com seus respectivos times (deixe alguns jogadores sem time). Veja um exemplo: UPDATE jogadores SET id_time = 3 WHERE id = 2; E aqui já podemos ver um exemplo da junção LEFT JOIN. Nossa tarefa é listar o id, nome do jogador e nome do time a qual ele pertence. Mas, queremos também incluir na listagem os jogadores que ainda não possuem times (o valor do campo id_time ainda é NULL). Veja: SELECT j.id, j.nome, t.nome FROM jogadores j LEFT JOIN times t ON j.id_time = t.id; id jogador time 1 ROBERTO CARLOS ? 2 JORGINHO CRUZEIRO 3 GUSTAVO BORGES ? 4 MARCOS ? Note que o conjunto de dados retornados inclui todos os jogadores, incluindo aqueles para os quais nenhum time foi definido ainda. |
Python ::: Pygame ::: Animação, Animações, Técnicas de Animação |
Como criar um relógio analógico no Pygame - Código completo com variáveis e comentários em portuguêsQuantidade de visualizações: 1358 vezes |
Nesta dica mostrarei um código para a criação de um relógio analógico completo em Python, com comentários detalhados e fácil de entender. Veja a imagem:![]() Por simplicidade, eu mantive a mesma cor para todos os elementos da animação e deixei somente o básico mesmo, para que você possa se concentrar nas partes mais importantes. Neste código você aprenderá como definir o tamanho, título e cor de fundo para uma janela do Pygame do Python. Aprenderá também como definir a quantidade de frames por segundo para a animação, assim como controlar os disparos do timer pygame.time.Clock(). Por fim, o código mostra como calcular o ângulo dos ponteiros das horas, minutos e segundos e efetuar o desenho das retas saindo do centro do círculo. Você sabia, por exemplo, que o ângulo de 45 graus corresponde exatamente à hora 1:30hs? Em vários exemplos de relógios analógicos na internet, o ponteiro das horas fica preso à uma determinada hora, aguardando o ponteiro dos segundos completar um giro completo. No código que apresento aqui, eu obtive a hora atual como um decimal, o que faz com que o ponteiro das horas mostre a posição real da hora, como um relógio analógico do mundo real. Para estudantes de matemática, engenharia e física, este código é uma boa aplicação da técnica de se converter coordenadas polares para coordenadas cartesianas. Eis o código completo para o relógio analógico. Boa diversão. # vamos importar as bibliotecas necessárias import pygame, sys from pygame.locals import * import math from datetime import datetime # função que faz a correção dos ângulos def corrigir_angulo(angulo): return abs(angulo % 360) # inicializa a biblioteca pygame.init() # quantidade de frames por segundo FPS = 30 # construímos o timer timer = pygame.time.Clock() # obtém a superfície do jogo e define o tamanho da tela janela = pygame.display.set_mode((600, 400)) # vamos definir o título da janela do jogo pygame.display.set_caption('Relógio Analógico no Pygame') # vamos definir alguns parâmetros fonte = pygame.font.Font(None, 36) VERMELHO = (200, 0, 0) BRANCO = (255, 255, 255) raio = 150 x_inicial = 300 y_inicial = 200 distancia_aro = 20 # e aqui nós entramos no loop do game while True: # vamos pintar a tela toda de branco janela.fill(BRANCO) # monitoramos os eventos for evento in pygame.event.get(): # se o evento foi um pedido para sair if evento.type == QUIT: # fechamos a tela do jogo pygame.quit() # e saimos do programa sys.exit() # vamos desenhar um circulo não preenchido (maior) pygame.draw.circle(janela, VERMELHO, (x_inicial, y_inicial), raio, 2) # vamos desenhar um circulo não preenchido (menor) pygame.draw.circle(janela, VERMELHO, (x_inicial + 1, y_inicial + 1), 5, 0) # vamos desenhar os números do relório (1-12) for n in range(1, 13): # calcula o ângulo dessa hora angulo = math.radians((n * (360 / 12)) - 90) # agora convertemos o ângulo e o raio para coordenadas cartesianas if len(str(n)) > 1: x = math.cos(angulo) * (raio - distancia_aro) - 18 else: x = math.cos(angulo) * (raio - distancia_aro) - 10 y = math.sin(angulo) * (raio - distancia_aro) - 10 texto_numero = fonte.render(str(n), True, VERMELHO) janela.blit(texto_numero, (x_inicial + x, y_inicial + y)) # vamos obter as horas, minutos e segundos atuais hoje = datetime.today() horas = hoje.hour % 12 minutos = hoje.minute segundos = hoje.second # ajustamos as horas para tratar a hora decimal (com frações de horas) horas = horas + (minutos * (1 / 60)) + (segundos * (1 / 3600)) # desenha o ponteiro das horas angulo_horas = corrigir_angulo(horas * (360 / 12) - 90) angulo_horas = math.radians(angulo_horas) hora_x = math.cos(angulo_horas) * (raio - 60) hora_y = math.sin(angulo_horas) * (raio - 60) coord_finais = (x_inicial + hora_x, y_inicial + hora_y) pygame.draw.line(janela, VERMELHO, (x_inicial, y_inicial), coord_finais, 4) # desenha o ponteiro dos minutos angulo_minutos = corrigir_angulo(minutos * (360 / 60) - 90) angulo_minutos = math.radians(angulo_minutos) minutos_x = math.cos(angulo_minutos) * (raio - 40) minutos_y = math.sin(angulo_minutos) * (raio - 40) coord_finais = (x_inicial + minutos_x, y_inicial + minutos_y) pygame.draw.line(janela, VERMELHO, (x_inicial, y_inicial), coord_finais, 3) # desenha o ponteiro dos segundos angulo_segundos = corrigir_angulo(segundos * (360 / 60) - 90) angulo_segundos = math.radians(angulo_segundos) segundos_x = math.cos(angulo_segundos) * (raio - 30) segundos_y = math.sin(angulo_segundos) * (raio - 30) coord_finais = (x_inicial + segundos_x, y_inicial + segundos_y) pygame.draw.line(janela, VERMELHO, (x_inicial, y_inicial), coord_finais, 1) # redesenha a tela continuamente pygame.display.update() # aciona o disparo do timer timer.tick(FPS) |
PHP ::: Dicas & Truques ::: Programação Orientada a Objetos |
Programação Orientada a Objetos em PHP - Como criar e usar métodos estáticos em PHPQuantidade de visualizações: 9285 vezes |
Como já vimos em outras dicas desta seção, uma classe possui propriedades (variáveis) e métodos. Veja a seguinte declaração de uma classe Produto:<?php // classe Produto com duas variáveis privadas e seus // correspondentes métodos mutatórios e acessórios class Produto{ private $nome; private $preco; public function setNome($nome){ $this->nome = $nome; } public function getNome(){ return $this->nome; } public function setPreco($preco){ $this->preco = $preco; } public function getPreco(){ return $this->preco; } } ?> Aqui cada instância da classe Produto terá suas próprias variáveis $nome e $preco e os métodos que permitem acesso e alteração destas variáveis também estão disponíveis a cada instância. Há, porém, situações nas quais gostaríamos que um determinado método estivesse atrelado à classe e não à cada instância individual. Desta forma, é possível chamar um método de uma classe sem a necessidade da criação de instâncias da mesma. Métodos estáticos em PHP podem ser criados por meio do uso da palavra-chave static. É comum tais métodos serem declarados com o modificador public, o que os torna acessíveis fora da classe na qual estes foram declarados. Veja um exemplo: <?php // classe Pessoa com duas variáveis privadas e um método // estático class Pessoa{ private $nome; private $idade; // um método estático que permite verificar a validade // de um número de CPF public static function isCPFValido($cpf){ // alguma rotina aqui return true; } } // vamos efetuar uma chamada ao método isCPFValido() sem // criar uma instância da classe Pessoa if(Pessoa::isCPFValido("12345")){ echo "CPF Válido"; } else{ echo "CPF inVálido"; } ?> Observe como acessamos o método isCPFValido() sem a necessidade da criação de uma instância da classe Pessoa. Note que, se quisermos chamar um método estático a partir de uma instância na qual ele está declarado, devemos usar self em vez de $this (ainda que esta última forma não provoque nenhum efeito colateral) para deixar bem claro que o método chamado pertence à classe e não às suas instâncias. Finalmente note que um método estático não possui acesso à uma instância específica de uma classe por meio da referência $this (o que é compreensível, visto que uma chamada a um método estático não depende da existência de instâncias da classe que o declara). Ao tentarmos acessá-lo, teremos a seguinte mensagem de erro: Fatal error: Using $this when not in object context in ... |
PHP ::: Dicas & Truques ::: Strings e Caracteres |
Como concatenar strings em PHP usando o operador "."Quantidade de visualizações: 268 vezes |
Todas as linguagens de programação oferecem o seu operador de concatenação, que nos permite juntar palavras, frases, textos e valores de variáveis. Na maioria das linguagens o operador de concatenação é o sinal de adição "+". Porém, em PHP, a concatenação é feita usando-se o operador ".". Veja um exemplo abaixo de como usá-lo: <?php $nome = "Carlos"; $cidade = "São Paulo"; echo "Meu nome é " . $nome . " e eu moro em " . $cidade . "."; ?> |
C# ::: Dicas & Truques ::: Programação Orientada a Objetos |
Como usar herança em C# - Programação Orientada a Objetos em C#Quantidade de visualizações: 26950 vezes |
Herança é uma dos três princípios fundamentais da programação orientada a objetos porque ela permite a criação de hierarquia nos objetos que compõem o sistema. Em C#, uma classe que tem seus dados e métodos herdados por outra é chamada de classe base ou super classe e a classe que herda tais dados é chamada de classe derivada ou sub-classe. O que um aluno, um professor e um funcionário possuem em comum? Todos eles são pessoas e, portanto, compartilham alguns dados comuns. Todos têm nome, idade, endereço, etc. E, o que diferencia um aluno de uma outra pessoa qualquer? Um aluno possui uma matrícula; Um funcionário possui um código de funcionário, data de admissão, salário, etc; Um professor possui um código de professor e informações relacionadas à sua formação. É aqui que a herança se torna uma ferramenta de grande utilidade. Podemos criar uma classe Pessoa, que possui todos os atributos e métodos comuns a todas as pessoas e herdar estes atributos e métodos em classes mais específicas, ou seja, a herança parte do geral para o mais específico. Comece criando uma classe Pessoa como mostrado no código a seguir: class Pessoa{ public string nome; public int idade; } Esta classe possui os atributos nome e idade. Estes atributos são comuns a todas as pessoas. Veja agora como podemos criar uma classe Aluno que herda estes atributos da classe Pessoa e inclui seu próprio atributo, a saber, seu número de matrícula. Eis o código: class Aluno: Pessoa{ public string matricula; } Observe que, em C#, os dois-pontos são usados para indicar a herança. A classe Aluno agora possui três atributos: nome, idade e matricula. Veja uma aplicação demonstrando este relacionamento: static void Main(string[] args){ // cria um objeto da classe Aluno Aluno aluno = new Aluno(); aluno.nome = "Osmar J. Silva"; aluno.idade = 36; aluno.matricula = "AC33-65"; // Exibe o resultado Console.WriteLine("Nome: " + aluno.nome + "\n" + "Idade: " + aluno.idade + "\n" + "Matrícula: " + aluno.matricula); Console.WriteLine("\n\nPressione uma tecla para sair..."); Console.ReadKey(); } A herança nos fornece um grande benefício. Ao concentrarmos características comuns em uma classe e derivar as classes mais específicas a partir desta, nós estamos preparados para a adição de novas funcionalidades ao sistema. Se mais adiante uma nova propriedade comum tiver que ser adicionada, não precisaremos efetuar alterações em todas as classes. Basta alterar a superclasse e pronto. As classes derivadas serão automaticamente atualizadas. |
Nossas 20 dicas & truques de programação mais populares |
Portugol - Exercício Resolvido de Portugol - Um programa que lê três números inteiros e mostra o maior |
Você também poderá gostar das dicas e truques de programação abaixo |
Java - Como converter de octal para decimal usando o método parseInt() da classe Integer da linguagem Java C - Como ler o conteúdo de um arquivo um caractere de cada vez usando a função fgetc() da linguagem C |
Nossas 20 dicas & truques de programação mais recentes |
Últimos Projetos e Códigos Fonte Liberados Para Apoiadores do Site |
Python - Como criar o jogo Pedra, Papel, Tesoura em Python - Jogo completo em Python com código comentado |
Últimos Exercícios Resolvidos |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
1º lugar: Java |