C# ::: Fundamentos da Linguagem ::: Estruturas de Controle |
Como usar a instrução de salto incondicional goto da linguagem C#Quantidade de visualizações: 18712 vezes |
|
A instrução goto na linguagem C# é uma instrução de salto incondicional. Quando esta instrução é encontrada, o fluxo de execução de código salta imediatamente para a localização definida pelo goto. Embora não muito usada, esta instrução, ás vezes, tem sua utilidade. A instrução goto exige um rótulo (label), que é um identificador C# válido seguido por dois pontos. Além disso, este rótulo deve estar dentro do mesmo método no qual a instrução goto estará contida. Isso quer dizer que não é possível usar goto para saltar de um método para outro. Veja um trecho de código no qual usamos goto para contar de 0 até 10:
using System;
namespace Estudos{
class Program{
static void Main(string[] args){
int valor = 0;
// define o rótulo para o goto
inicio:
// exibe os números de 0 até 10
if (valor <= 10){
Console.WriteLine("{0}", valor);
valor++;
goto inicio;
}
Console.WriteLine("\n\nPressione uma tecla para sair...");
Console.ReadKey();
}
}
}
Ao executar este código nós teremos o seguinte resultado: 0 1 2 3 4 5 6 7 8 9 10 Pressione uma tecla para sair... É claro que este código, ainda que seja um bom exemplo do uso de goto, pode e deve ser substituído por um laço for ou while. Lembre-se: goto é usado somente em casos nos quais nenhuma outra instrução ou construção esteja disponível. Veja, por exemplo, como podemos usar goto para saltar entre as cláusulas case de uma instrução switch:
using System;
namespace Estudos{
class Program{
static void Main(string[] args) {
for (int i = 1; i < 3; i++) {
switch (i) {
case 1:
Console.WriteLine("Estou na cláusula 1.");
goto case 3;
case 2:
Console.WriteLine("Estou na cláusula 2.");
goto case 1;
case 3:
Console.WriteLine("Estou na cláusula 3.");
goto default;
default:
Console.WriteLine("Estou na cláusula padrão.");
break;
}
}
Console.WriteLine("\n\nPressione uma tecla para sair...");
Console.ReadKey();
}
}
}
Ao executar este código nós teremos o seguinte resultado: Estou na cláusula 1. Estou na cláusula 3. Estou na cláusula padrão. Estou na cláusula 2. Estou na cláusula 1. Estou na cláusula 3. Estou na cláusula padrão. Outro uso útil da instrução goto é quando precisamos sair de um laço profundamente aninhado (três ou quatro níveis já é uma tarefa complicada). Veja:
using System;
namespace Estudos{
class Program{
static void Main(string[] args) {
int i = 0, j = 0, k = 0;
for (i = 0; i < 10; i++) {
for (j = 0; j < 10; j++) {
for (k = 0; k < 10; k++) {
Console.WriteLine("i, j, k: " + i + " " +
j + " " + k);
if (k == 3) goto parada;
}
}
}
// rótulo de parada
parada:
Console.WriteLine("Parei! i, j, k: " + i + " " +
j + " " + k);
Console.WriteLine("\n\nPressione uma tecla para sair...");
Console.ReadKey();
}
}
}
Ao executar este exemplo nós teremos o seguinte resultado: i, j, k: 0 0 0 i, j, k: 0 0 1 i, j, k: 0 0 2 i, j, k: 0 0 3 Parei! i, j, k: 0 0 3 Para finalizar, tenha em mente que goto é usado para sair de um bloco de instruções. Tentar usar esta instrução para saltar para dentro de um bloco de instruções é um erro de síntaxe e o seu código não compilará. |
Python ::: Dicas & Truques ::: Matemática e Estatística |
Como calcular porcentagem em Python - Como efetuar cálculos de porcentagem em PythonQuantidade de visualizações: 26651 vezes |
|
Cálculos de porcentagens estão presentes em boa parte das aplicações que desenvolvemos. Porém, há momentos em que a mente trava e não conseguimos lembrar com clareza como estes cálculos são feitos, principalmente em Python. Esta anotação tem o objetivo de ser uma fonte de pesquisa para os momentos em que suas habilidades matemáticas insistirem em continuar ocultas. Ex: 1 - Suponhamos que um produto que custe R$ 178,00 sofra um acréscimo de 15%. Qual o valor final do produto? Veja o código em Python:
# Algoritmo que calcula porcentagem em Python
def main():
valor = 178.00 # valor original
percentual = 15.0 / 100.0 # 15%
valor_final = valor + (percentual * valor)
# mostra o resultado
print("O valor final do produto é: {0}".format(valor_final))
# O resultado será 204,70
if __name__== "__main__":
main()
Ex: 2 - Um produto, cujo valor original era de R$ 250,00, teve um desconto de 8%. Qual foi seu valor final? Veja o código em Python:
# Algoritmo que calcula porcentagem em Python
def main():
valor = 250.00 # valor original
percentual = 8.0 / 100.0 # 8%
valor_final = valor - (percentual * valor)
# mostra o resultado
print("O valor final do produto é: {0}".format(valor_final))
# O resultado será 230,00
if __name__== "__main__":
main()
Ex: 3 - Em um concurso de perguntas e respostas, um jovem acertou 72 das 90 perguntas apresentadas. Qual foi a porcentagem de acertos? E a porcentagem de erros? Veja o código em Python:
# Algoritmo que calcula porcentagem em Python
def main():
perguntas = 90.0
acertos = 72.0
# mostra a porcentagem de acertos
print("Porcentagem de acertos: {0}%".format((acertos / perguntas) * 100))
# mostra a porcentagem de erros
print("Porcentagem de erros: {0}%".format(((perguntas - acertos) / perguntas) * 100))
# Os resultados serão 80% e 20%
if __name__== "__main__":
main()
Ex: 4 - Um aparelho de CD foi adquirido por R$ 300,00 e revendido por R$ 340,00. Qual foi a porcentagem de lucro na transação? Veja o código em Python:
# Algoritmo que calcula porcentagem em Python
def main():
valor_anterior = 300.0 # valor anterior
novo_valor = 340.0 # valor novo
# calcula a porcentagem de lucro
# efetua o cálculo
porcentagem_lucro = ((novo_valor * 100) / valor_anterior) - 100
print("A porcentagem de lucro foi de: {0}%".format(porcentagem_lucro))
# O resultado será 13,33
if __name__== "__main__":
main()
Ex: 5 - Uma loja repassa 5% do lucro a seus vendedores. Se um produto custa R$ 70,00, qual o valor em reais repassado a um determinado vendedor? Veja o código em Python:
# Algoritmo que calcula porcentagem em Python
def main():
valor = 70.0 # valor do produto
percentual = 5.0 / 100.0 # 5%
# calcula a comissão
comissao = percentual * valor
# mostra o resultado
print("O valor repassado ao vendedor é: {0}".format(comissao))
# O resultado será 3,5
if __name__== "__main__":
main()
|
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Programação Orientada a Objetos |
Exercício Resolvido de Java - Crie uma classe Agenda que pode armazenar 10 pessoas e que seja capaz de realizar as seguintes operaçõesQuantidade de visualizações: 6464 vezes |
|
Exercícios Resolvidos de Java - Crie uma classe Agenda que pode armazenar 10 pessoas e que seja capaz de realizar as seguintes operações Pergunta/Tarefa: Crie uma classe Agenda que pode armazenar 10 pessoas e que seja capaz de realizar as seguintes operações: void armazenaPessoa(String nome, int idade, float altura); void removePessoa(String nome); int buscaPessoa(String nome); // informa em que posição da agenda está a pessoa void imprimeAgenda(); // imprime os dados de todas as pessoas da agenda void imprimePessoa(int index); // imprime os dados da pessoa que está na posição "i" da agenda. O código deverá ser desenvolvido em Java console (modo texto) e usar um menu switch() para as operações. Sua saída deverá ser parecida com: ![]() Resposta/Solução: Veja a resolução comentada deste exercício usando Java console: Código para a classe Pessoa (Pessoa.java):
package arquivodecodigos;
public class Pessoa {
private String nome;
private int idade;
private double altura;
// construtor cheio
public Pessoa(String nome, int idade, double altura) {
this.nome = nome;
this.idade = idade;
this.altura = altura;
}
// construtor vazio
public Pessoa() {
}
// método que imprime todos os dados da pessoa
public void imprimirDados(){
System.out.println("Nome: " + nome + "\nIdade: " +
idade + "\nAltura: " + altura);
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public int getIdade() {
return idade;
}
public void setIdade(int idade) {
this.idade = idade;
}
public double getAltura() {
return altura;
}
public void setAltura(double altura) {
this.altura = altura;
}
}
Código para a classe Agenda (Agenda.java):
package arquivodecodigos;
public class Agenda {
// vetor que guardará as pessoas
private Pessoa pessoas[];
// construtor da classe Agenda
public Agenda(int quantidade){
pessoas = new Pessoa[quantidade];
}
public void armazenaPessoa(String nome, int idade, double altura){
// ainda temos posições disponíveis na agenda?
boolean cadastrado = false;
for(int i = 0; i < pessoas.length; i++){
if(pessoas[i] == null){
// encontramos uma posição
Pessoa p = new Pessoa(nome, idade, altura); // criamos uma nova pessoa
// guardamos ela no vetor
pessoas[i] = p;
// e avisamos que o cadastro foi efetuado com sucesso
cadastrado = true;
break; // sai do laço
}
}
if(cadastrado){
System.out.println("\nCadastro efetuado com sucesso");
}
else{
System.out.println("\nNão foi possível cadastrar. Agenda cheia");
}
}
// método que permite pesquisar e excluir uma pessoa
public void removePessoa(String nome){
// vamos verificar se a exclusão foi efetuada com sucesso
boolean excluido = false;
for(int i = 0; i < pessoas.length; i++){
if(pessoas[i] != null){
// esta é a pessoa que estamos procurando?
if(pessoas[i].getNome().equals(nome)){
pessoas[i] = null; // posição disponível novamente
excluido = true;
break; // sai do laço
}
}
}
if(excluido){
System.out.println("\nPessoa removida com sucesso");
}
else{
System.out.println("\nNão foi possível remover. Pessoa não encontrada.");
}
}
// informa em que posição da agenda está a pessoa
public int buscaPessoa(String nome){
int resultado = -1;
// vamos verificar se a pessoa existe na agenda
for(int i = 0; i < pessoas.length; i++){
if(pessoas[i] != null){
// esta é a pessoa que estamos procurando?
if(pessoas[i].getNome().equals(nome)){
resultado = i;
break; // sai do laço
}
}
}
return resultado;
}
// imprime os dados de todas as pessoas da agenda
public void imprimeAgenda(){
// vamos percorrer o vetor de pessoas e imprimir cada uma
for(int i = 0; i < pessoas.length; i++){
if(pessoas[i] != null){
Pessoa p = pessoas[i];
System.out.println("\nNome: " + p.getNome());
System.out.println("Idade: " + p.getIdade());
System.out.println("Altura: " + p.getAltura());
}
}
}
// imprime os dados da pessoa que está na posição "i" da agenda
public void imprimePessoa(int index){
// este índice é válido?
if((index < 0) || (index > (pessoas.length - 1))){
System.out.println("\nÍndice inválido");
}
else{
Pessoa p = pessoas[index];
if(p == null){
System.out.println("\nNão existe pessoa nesse índice ainda.");
}
else{
System.out.println("\nNome: " + p.getNome());
System.out.println("Idade: " + p.getIdade());
System.out.println("Altura: " + p.getAltura());
}
}
}
}
Código para a classe Principal (Principal.java):
package arquivodecodigos;
import java.util.Scanner;
public class Principal {
// para fazer a leitura da entrada do usuário
static Scanner entrada = new Scanner(System.in);
public static void main(String[] args) {
// cria uma nova Agenda
Agenda agenda = new Agenda(10);
String nome; // nome da pessoa
int idade; // idade da pessoa
double altura; // altura da pessoa
// cria o menu de opções
while(true){
System.out.println("\n1. Nova Pessoa");
System.out.println("2. Excluir Pessoa");
System.out.println("3. Buscar Pessoa");
System.out.println("4. Imprimir Agenda");
System.out.println("5. Imprimir Pessoa (Índice)");
System.out.println("6. Sair");
System.out.print("Sua opção: ");
int opcao = Integer.parseInt(entrada.nextLine());
switch(opcao){
case 1:
System.out.print("\nInforme o nome: ");
nome = entrada.nextLine();
System.out.print("Informe a idade: ");
idade = Integer.parseInt(entrada.nextLine());
System.out.print("Informe a altura (use ponto em vez de vírgula): ");
altura = Double.parseDouble(entrada.nextLine());
agenda.armazenaPessoa(nome, idade, altura);
break;
case 2:
System.out.print("\nInforme o nome a ser removido: ");
nome = entrada.nextLine();
agenda.removePessoa(nome);
break;
case 3:
System.out.print("\nInforme o nome a ser pesquisado: ");
nome = entrada.nextLine();
int indice = agenda.buscaPessoa(nome);
if(indice < 0){
System.out.println("\nA pessoa não foi encontrada");
}
else{
System.out.println("\nA pessoa foi encontrada no índice: "
+ indice);
}
break;
case 4:
agenda.imprimeAgenda();
break;
case 5:
System.out.print("\nInforme o índice desejado: ");
int index = Integer.parseInt(entrada.nextLine());
agenda.imprimePessoa(index);
break;
case 6:
System.exit(0);
default:
System.out.println("\nOpção inválida\n");
break;
}
}
}
}
|
C ::: Estruturas de Dados ::: Lista Ligada Simples |
Estruturas de Dados em C - Como remover um nó no final de uma lista ligada simples em C - Listas encadeadas em CQuantidade de visualizações: 2310 vezes |
Nesta dica mostraremos como é possível excluir o nó no fim (o último nó) de uma lista encadeada simples (singly linked list) em C. Veja a função:
// função que permite remover um nó no fim
// da lista, ou seja, o último nó da lista.
// A função retorna um ponteiro para o início da lista
struct No *remover_final(struct No *inicio){
struct No *n; // nó que será removido
// nó que antecede o nó a ser removido. Isso
// faz sentido, já que ele será o último nó
// agora
struct No *anterior;
n = inicio; // aponta para o início da lista
// varremos os nós da lista e paramos um nó antes do
// nó a ser excluído
while(n->proximo != NULL){
anterior = n; // anterior assume o lugar de n
n = n->proximo; // e n assume o seu próximo
}
// anterior passa a ser o último nó agora
anterior->proximo = NULL;
// mostra o nó removido
printf("\nNo removido: %d\n", n->valor);
free(n); // libera o nó que antes era o último
return inicio;
}
Note que a função recebe um ponteiro para o início da lista e retorna também um ponteiro para o início da lista. Tenha o cuidado de verificar se a lista não está vazia antes de tentar fazer a exclusão. No exemplo eu fiz isso na função main(). Veja a listagem completa abaixo:
#include <stdio.h>
#include <stdlib.h>
// estrutura Nó
struct No{
int valor;
struct No *proximo;
};
// fim da estrutura Nó
// função que permite exibir os valores de
// todos os nós da lista
void exibir(struct No *n){
if(n != NULL){
do{
printf("%d\n", n->valor);
n = n->proximo;
}while(n != NULL);
}
else
printf("A lista esta vazia\n\n");
}
// função que permite remover um nó no fim
// da lista, ou seja, o último nó da lista.
// A função retorna um ponteiro para o início da lista
struct No *remover_final(struct No *inicio){
struct No *n; // nó que será removido
// nó que antecede o nó a ser removido. Isso
// faz sentido, já que ele será o último nó
// agora
struct No *anterior;
n = inicio; // aponta para o início da lista
// varremos os nós da lista e paramos um nó antes do
// nó a ser excluído
while(n->proximo != NULL){
anterior = n; // anterior assume o lugar de n
n = n->proximo; // e n assume o seu próximo
}
// anterior passa a ser o último nó agora
anterior->proximo = NULL;
// mostra o nó removido
printf("\nNo removido: %d\n", n->valor);
free(n); // libera o nó que antes era o último
return inicio;
}
// função que permite inserir nós no
// final da lista.
// veja que a função recebe o valor a ser
// armazenado em cada nó e um ponteiro para o
// início da lista. A função retorna um
// ponteiro para o início da lista
struct No *inserir_final(struct No *n, int v){
// reserva memória para o novo nó
struct No *novo = (struct No*)malloc(sizeof(struct No));
novo->valor = v;
// verifica se a lista está vazia
if(n == NULL){
// é o primeiro nó...não deve apontar para
// lugar nenhum
novo->proximo = NULL;
return novo; // vamos retornar o novo nó como sendo o início da lista
}
else{ // não está vazia....vamos inserir o nó no final
// o primeiro passo é chegarmos ao final da lista
struct No *temp = n; // vamos obter uma referência ao primeiro nó
// vamos varrer a lista até chegarmos ao último nó
while(temp->proximo != NULL){
temp = temp->proximo;
}
// na saída do laço temp aponta para o último nó da lista
// novo será o último nó da lista...o campo próximo dele deve
// apontar para NULL
novo->proximo = NULL;
// vamos fazer o último nó apontar para o nó recém-criado
temp->proximo = novo;
return n; // vamos retornar o início da lista intacto
}
}
int main(int argc, char *argv[])
{
// declara a lista
struct No *inicio = NULL;
// vamos inserir quatro valores no final
// da lista
inicio = inserir_final(inicio, 45);
inicio = inserir_final(inicio, 3);
inicio = inserir_final(inicio, 98);
inicio = inserir_final(inicio, 47);
// vamos exibir o resultado
printf("Valores presentes na lista ligada antes da remocao:\n");
exibir(inicio);
// vamos remover o nó no fim da lista
if(inicio != NULL){
inicio = remover_final(inicio);
}
// vamos exibir o resultado
printf("\nValores presentes na lista ligada apos a remocao:\n");
exibir(inicio);
system("pause");
return 0;
}
Ao executar esse código você terá o seguinte resultado: Valores presentes na lista ligada antes da remocao: 45 3 98 47 No removido: 47 Valores presentes na lista ligada apos a remocao: 45 3 98 Pressione qualquer tecla para continuar. . . |
Nossas 20 dicas & truques de programação mais populares |
|
JavaScript - Como adicionar elementos no início de um array JavaScript usando a função unshift() do objeto Array JavaScript - Como testar se uma string termina com uma determinada substring em JavaScript usando a função endsWith() |
Você também poderá gostar das dicas e truques de programação abaixo |
|
Delphi - Como calcular o cateto adjascente dadas as medidas da hipotenusa e do cateto oposto em Delphi |
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 |






