Ruby ::: Dicas & Truques ::: Programação Orientada a Objetos

Como usar variáveis de instância em Ruby - Programação Orientada a Objetos em Ruby

Quantidade de visualizações: 7796 vezes
Na programação orientada a objetos, as variáveis de instância são variáveis associadas a cada um dos objetos de uma classe. Podemos pensar assim: temos vários carros de uma mesma montadora e da mesma marca, porém, com cores diferentes. Nessa analogia, a cor pertence a cada um dos carros, de forma particular, ou seja, é uma variável de instância.

Vamos ver um exemplo? Veja o código Ruby a seguir:

# Definição da classe Cliente
class Cliente
  # construtor da classe
  def initialize(nome, idade)
    @nome = nome
    @idade = idade
  end
    
  # método que permite retornar o nome do cliente
  def obter_nome
    @nome
  end
  
  # método que permite retornar a idade do cliente  
  def obter_idade
    @idade
  end
end

# Cria duas instâncias da classe Cliente
cliente_a = Cliente.new("Osmar", 35)
cliente_b = Cliente.new("Salvador", 28)

# Efetua chamadas aos métodos obter_nome e obter_idade
# dos dois objetos
puts "#{cliente_a.obter_nome} - #{cliente_a.obter_idade}"
puts "#{cliente_b.obter_nome} - #{cliente_b.obter_idade}"

Ao executar este código Ruby nós teremos o seguinte resultado:

Osmar - 35
Salvador - 28

Veja que aqui nós temos duas variáveis de instância: @nome e @idade. Variáveis de instância são sempre precedidas pelo símbolo @ em Ruby. Neste exemplo os valores das variáveis são inicializados por meio do uso do construtor da classe e obtidos por meio de métodos acessores chamados obter_nome e obter_idade.


C ::: Dicas & Truques ::: Ordenação e Pesquisa (Busca)

Ordenação e pesquisa em C - Como ordenar um vetor de inteiros usando a ordenação Insertion Sort (Ordenação por Inserção)

Quantidade de visualizações: 3053 vezes
A ordenação Insertion Sort, ou Ordenação por Inserção, possui uma complexidade de tempo de execução igual à ordenação Bubble Sort (Ordenação da Bolha), ou seja, O(n2). Embora mais rápido que o Bubble Sort, e ser um algorítmo de ordenação quadrática, a ordenação Insertion Sort é bastante eficiente para problemas com pequenas entradas, sendo o mais eficiente entre os algoritmos desta ordem de classificação, porém, nunca recomendada para um grande conjunto de dados.

A forma mais comum para o entendimento da ordenação Insertion Sort é compará-la com forma pela qual algumas pessoas organizam um baralho num jogo de cartas. Imagine que você está jogando as cartas. Você está com as cartas na mão e elas estão ordenadas. Você recebe uma nova carta e deve colocá-la na posição correta da sua mão de cartas, de forma que as cartas obedeçam à ordenação.

A cada nova carta adicionada à sua mão de cartas, a nova carta pode ser menor que algumas das cartas que você já tem na mão ou maior, e assim, você começa a comparar a nova carta com todas as cartas na sua mão até encontrar sua posição correta. Você insere a nova carta na posição correta, e, novamente, a sua mão é composta de cartas totalmente ordenadas. Então, você recebe outra carta e repete o mesmo procedimento. Então outra carta, e outra, e assim em diante, até não receber mais cartas.

Esta é a ideia por trás da ordenação por inserção. Percorra as posições do vetor (array), começando com o índice 1 (um). Cada nova posição é como a nova carta que você recebeu, e você precisa inseri-la no lugar correto no sub-vetor ordenado à esquerda daquela posição.

Vamos ver a implementação na linguagem C agora? Observe o seguinte código, no qual temos um vetor de inteiros com os elementos {4, 6, 2, 8, 1, 9, 3, 0, 11}:

#include <stdio.h>
#include <stdlib.h>
 
// função que permite ordenar um vetor de inteiros
// usando a ordenação Insertion Sort
void insertionSort(int vetor[], int tam){
  int i, temp, j;
  
  // este laço varre os elementos a partir do segundo
  // elemento, ou seja, o índice 1
  for(i = 1; i < tam; i++){
    // guardamos o elemento atual em temp
    temp = vetor[i];
		
    for(j = i; ((j > 0) && (vetor[j - 1] > temp)); j--){ 
      vetor[j] = vetor[j - 1]; // houve uma troca
    }
    
    vetor[j] = temp; // colocamos temp em seu devido lugar
  }
}  
 
int main(int argc, char *argv[]){
  int valores[] = {4, 6, 2, 8, 1, 9, 3, 0, 11};
  int i, tamanho = 9;
 
  // imprime a matriz sem a ordenação
  puts("Sem ordenação:\n");
  for(i = 0; i < 9; i++){
    printf("%d ", valores[i]);
  }
 
  // vamos ordenar a matriz
  insertionSort(valores, tamanho);
 
  // imprime a matriz ordenada
  puts("\n\nOrdenada usando Insertion Sort:\n");
  for(i = 0; i < 9; i++){
    printf("%d ", valores[i]);
  }   
  
  printf("\n\n");
  system("PAUSE");
  return 0;
}

Ao executar este código C nós teremos o seguinte resultado:

Sem ordenação:

4 6 2 8 1 9 3 0 11

Ordenada usando Insertion Sort:

0 1 2 3 4 6 8 9 11


Java ::: Estruturas de Dados ::: Árvore Binária e Árvore Binária de Busca

Estruturas de dados em Java - Como obter o nó com maior valor em uma árvore binária de busca usando Java

Quantidade de visualizações: 2537 vezes
Em exemplos dessa seção nós vimos como criar árvores binárias e árvores binárias de busca em Java e como pesquisar ou fazer a sua travessia, visitando cada um dos nós. Nesta dica mostrarei como obter o nó com o maior valor em uma árvore binária. O truque aqui é descer o lado direito da árvore até o último nó. Veja:

// método que permite retornar o maior nó de uma árvore
// binária de busca
public No retornarMaiorElemento(){
  // chama a versão recursiva do método
  return retornarMaiorElemento(raiz);
}
  
public No retornarMaiorElemento(No no){
  if((no == null) || (no.getDireito() == null)){
    return no; // ponto de parada
  }
  else{ // vamos continuar descendo do lado direito
    return retornarMaiorElemento(no.getDireito());
  }
}

Este método faz parte da classe ArvoreBinariaBusca.java. Veja agora como chamá-lo a partir da classe principal, ou seja, a classe de teste:

package arvore_binaria;

import java.util.Scanner;

public class ArvoreBinariaTeste {
  public static void main(String[] args) {
    Scanner entrada = new Scanner(System.in);  
       
    // vamos criar um novo objeto da classe ArvoreBinariaBusca
    ArvoreBinariaBusca arvore = new ArvoreBinariaBusca();
    
    // vamos inserir 5 valores na árvore
    for(int i = 0; i < 5; i++){
      System.out.print("Informe um valor inteiro: ");
      int valor = Integer.parseInt(entrada.nextLine());
       
      // vamos inserir o nó e verificar o sucesso da operação
      if(!arvore.inserir(valor)){
        System.out.println("Não foi possível inserir." +
          " Um elemento já contém este valor.");  
      }
    }
     
    // vamos obter o maior elemento na árvore binária de busca
    System.out.println("\nO maior nó é: " + 
      arvore.retornarMaiorElemento().getValor());
     
    System.out.println("\n");
  }
}

Ao executar este código teremos o seguinte resultado:

Informe um valor inteiro: 6
Informe um valor inteiro: 13
Informe um valor inteiro: 64
Informe um valor inteiro: 21
Informe um valor inteiro: 3

O maior nó é: 64



C# ::: Windows Forms ::: ComboBox

Como excluir todos os itens de um ComboBox do C# Windows Forms usando a função Clear() da classe ComboBox.ObjectCollection

Quantidade de visualizações: 10059 vezes
Há algumas situações nas quais precisamos remover (limpar) todos os itens de um ComboBox. Isso pode ser feito com uma chamada ao método Clear() da classe ComboBox.ObjectCollection. Temos acesso a esta classe por meio da propriedade Items da classe ComboBox. Vja o exemplo:

private void button1_Click(object sender, EventArgs e){
  // exclui todos os itens do ComboBox chamado
  // linguagensCombo
  linguagensCombo.Items.Clear();
}



Java ::: Dicas & Truques ::: Strings e Caracteres

Como retornar a posição da última ocorrência de uma substring em uma string Java usando a função lastIndexOf() da classe String

Quantidade de visualizações: 195 vezes
Em algumas situações nós precisamos pesquisar uma substring em uma string Java e retornar o índice da última ocorrência encontrada. Para isso nós podemos usar o método lastIndexOf() da classe String.

Veja um exemplo completo de seu uso:

package estudos;

public class Estudos {
  public static void main(String[] args) {
    // Este exemplo mostra como pesquisar a última ocorrência 
    // de uma substring em uma string
    String frase = "As pessoas costumam entender tudo sobre pessoas";
    
    // verifica se a frase contém a palavra "pessoas" e
    // retorna a posição de sua última ocorrência
    int res = frase.lastIndexOf("pessoas");
    
    if(res > 0){
      System.out.println("A ultima ocorrencia foi encontrada na posicao: " 
        + res);
    }
    else{
      System.out.println("A substring nao foi encontrada");
    }
  }
}

Ao executar este código Java nós teremos o seguinte resultado:

A ultima ocorrencia foi encontrada na posicao: 40


Java ::: Reflection (introspecção) e RTI (Runtime Type Information) ::: Passos Iniciais

Como obter os modificadores dos métodos de uma classe ou interface usando o método getModifiers() da classe Method da linguagem Java

Quantidade de visualizações: 8612 vezes
O método getModifiers() da classe Method permite obter os modificadores (public, static, final, private, etc) de um determinado método. O retorno deste método é um valor inteiro que pode ser testado usando alguns métodos estáticos da classe Modifier.

O exemplo a seguir mostra como listar todos os métodos públicos da classe javax.swing.JButton e seus modificadores:

package arquivodecodigos;

import java.lang.reflect.*;
 
public class Estudos{
  public static void main(String args[]){
    // vamos carregar a classe JButton
    try{
      Class c = Class.forName(
        "javax.swing.JButton");
 
      // obtém os nomes dos métodos
      Method[] metodos = c.getMethods(); 
 
      for(int i = 0; i < metodos.length; i++){
        // obtém o nome do método
        String nome = metodos[i].getName();
 
        // obtém os modificadores
        int modificador = 
          metodos[i].getModifiers();
 
        String modificadores = "";
 
        if(Modifier.isPublic(modificador))
          modificadores += "public "; 
        if(Modifier.isPrivate(modificador))
          modificadores += "private ";          
        if(Modifier.isProtected(modificador))
          modificadores += "protected ";
        if(Modifier.isStatic(modificador))
          modificadores += "static ";
        if(Modifier.isFinal(modificador))
          modificadores += "final ";
 
        System.out.println(nome + " - " + 
          modificadores); 
      }
    }
    catch(ClassNotFoundException e){
      System.out.println(e.getMessage()); 
    }
 
    System.exit(0);
  }
}

Ao executar este exemplo nós teremos uma lista gigantesca de métodos declarados e herdados pela classe javax.swing.JButton. Veja:

getAccessibleContext - public
getUIClassID - public
isDefaultButton - public
isDefaultCapable - public
removeNotify - public
setDefaultCapable - public
updateUI - public
getUI - public
setAction - public
setModel - public
setUI - public
addActionListener - public
addChangeListener - public
addItemListener - public
doClick - public
doClick - public
getAction - public
getActionCommand - public
getActionListeners - public
getChangeListeners - public
getDisabledIcon - public
getDisabledSelectedIcon - public
getDisplayedMnemonicIndex - public
getHideActionText - public
getHorizontalAlignment - public
getHorizontalTextPosition - public
getIcon - public
getIconTextGap - public
getItemListeners - public
getLabel - public
getMargin - public
getMnemonic - public
getModel - public
getMultiClickThreshhold - public
getPressedIcon - public
getRolloverIcon - public
getRolloverSelectedIcon - public
getSelectedIcon - public
getSelectedObjects - public
getText - public
getVerticalAlignment - public
getVerticalTextPosition - public
imageUpdate - public
isBorderPainted - public
isContentAreaFilled - public
isFocusPainted - public
isRolloverEnabled - public
isSelected - public
removeActionListener - public
removeChangeListener - public
removeItemListener - public
setActionCommand - public
setBorderPainted - public
setContentAreaFilled - public
setDisabledIcon - public
setDisabledSelectedIcon - public
setDisplayedMnemonicIndex - public
setEnabled - public
setFocusPainted - public
setHideActionText - public
setHorizontalAlignment - public
setHorizontalTextPosition - public
setIcon - public
setIconTextGap - public
setLabel - public
setLayout - public
setMargin - public
setMnemonic - public
setMnemonic - public
setMultiClickThreshhold - public
setPressedIcon - public
setRolloverEnabled - public
setRolloverIcon - public
setRolloverSelectedIcon - public
setSelected - public
setSelectedIcon - public
setText - public
setVerticalAlignment - public
setVerticalTextPosition - public
update - public
contains - public
getLocation - public
print - public
getSize - public
isOpaque - public
disable - public
enable - public
firePropertyChange - public
firePropertyChange - public
firePropertyChange - public
getRootPane - public
getListeners - public
paintImmediately - public
paintImmediately - public
repaint - public
repaint - public
revalidate - public
setAlignmentX - public
setAlignmentY - public
addAncestorListener - public
addNotify - public
addVetoableChangeListener - public
computeVisibleRect - public
createToolTip - public
getActionForKeyStroke - public
getActionMap - public final
getAlignmentX - public
getAlignmentY - public
getAncestorListeners - public
getAutoscrolls - public
getBaseline - public
getBaselineResizeBehavior - public
getBorder - public
getBounds - public
getClientProperty - public final
getComponentPopupMenu - public
getConditionForKeyStroke - public
getDebugGraphicsOptions - public
getDefaultLocale - public static
getFontMetrics - public
getGraphics - public
getHeight - public
getInheritsPopupMenu - public
getInputMap - public final
getInputMap - public final
getInputVerifier - public
getInsets - public
getInsets - public
getMaximumSize - public
getMinimumSize - public
getNextFocusableComponent - public
getPopupLocation - public
getPreferredSize - public
getRegisteredKeyStrokes - public
getToolTipLocation - public
getToolTipText - public
getToolTipText - public
getTopLevelAncestor - public
getTransferHandler - public
getVerifyInputWhenFocusTarget - public
getVetoableChangeListeners - public
getVisibleRect - public
getWidth - public
getX - public
getY - public
grabFocus - public
hide - public
isDoubleBuffered - public
isLightweightComponent - public static
isManagingFocus - public
isOptimizedDrawingEnabled - public
isPaintingForPrint - public final
isPaintingTile - public
isRequestFocusEnabled - public
isValidateRoot - public
paint - public
printAll - public
putClientProperty - public final
registerKeyboardAction - public
registerKeyboardAction - public
removeAncestorListener - public
removeVetoableChangeListener - public
requestDefaultFocus - public
requestFocus - public
requestFocus - public
requestFocusInWindow - public
resetKeyboardActions - public
reshape - public
scrollRectToVisible - public
setActionMap - public final
setAutoscrolls - public
setBackground - public
setBorder - public
setComponentPopupMenu - public
setDebugGraphicsOptions - public
setDefaultLocale - public static
setDoubleBuffered - public
setFocusTraversalKeys - public
setFont - public
setForeground - public
setInheritsPopupMenu - public
setInputMap - public final
setInputVerifier - public
setMaximumSize - public
setMinimumSize - public
setNextFocusableComponent - public
setOpaque - public
setPreferredSize - public
setRequestFocusEnabled - public
setToolTipText - public
setTransferHandler - public
setVerifyInputWhenFocusTarget - public
setVisible - public
unregisterKeyboardAction - public
add - public
add - public
add - public
add - public
add - public
remove - public
remove - public
list - public
list - public
removeAll - public
addPropertyChangeListener - public
addPropertyChangeListener - public
getComponent - public
getComponentCount - public
getComponents - public
getFocusTraversalPolicy - public
invalidate - public
isFocusCycleRoot - public
isFocusCycleRoot - public
setFocusTraversalPolicy - public
addContainerListener - public
applyComponentOrientation - public
areFocusTraversalKeysSet - public
countComponents - public
deliverEvent - public
doLayout - public
findComponentAt - public
findComponentAt - public
getComponentAt - public
getComponentAt - public
getComponentZOrder - public
getContainerListeners - public
getFocusTraversalKeys - public
getLayout - public
getMousePosition - public
insets - public
isAncestorOf - public
isFocusTraversalPolicyProvider - public final
isFocusTraversalPolicySet - public
layout - public
locate - public
minimumSize - public
paintComponents - public
preferredSize - public
printComponents - public
removeContainerListener - public
setComponentZOrder - public
setFocusCycleRoot - public
setFocusTraversalPolicyProvider - public final
transferFocusDownCycle - public
validate - public
add - public
remove - public
toString - public
getName - public
contains - public
size - public
getLocation - public
getParent - public
setName - public
list - public
list - public
list - public
getSize - public
location - public
setSize - public
setSize - public
resize - public
resize - public
enable - public
firePropertyChange - public
firePropertyChange - public
firePropertyChange - public
firePropertyChange - public
firePropertyChange - public
action - public
isEnabled - public
isFocusOwner - public
removePropertyChangeListener - public
removePropertyChangeListener - public
repaint - public
repaint - public
repaint - public
getBackground - public
getBounds - public
getFocusCycleRootAncestor - public
getFont - public
getForeground - public
getPeer - public
getPropertyChangeListeners - public
getPropertyChangeListeners - public
getTreeLock - public final
isDisplayable - public
isMaximumSizeSet - public
isMinimumSizeSet - public
isPreferredSizeSet - public
isShowing - public
isVisible - public
nextFocus - public
setBounds - public
setBounds - public
setLocale - public
setLocation - public
setLocation - public
dispatchEvent - public final
getGraphicsConfiguration - public
getMousePosition - public
handleEvent - public
isFocusable - public
isLightweight - public
isValid - public
postEvent - public
transferFocus - public
transferFocusBackward - public
addComponentListener - public
addFocusListener - public
addHierarchyBoundsListener - public
addHierarchyListener - public
addInputMethodListener - public
addKeyListener - public
addMouseListener - public
addMouseMotionListener - public
addMouseWheelListener - public
bounds - public
checkImage - public
checkImage - public
createImage - public
createImage - public
createVolatileImage - public
createVolatileImage - public
enableInputMethods - public
getColorModel - public
getComponentListeners - public
getComponentOrientation - public
getCursor - public
getDropTarget - public
getFocusListeners - public
getFocusTraversalKeysEnabled - public
getHierarchyBoundsListeners - public
getHierarchyListeners - public
getIgnoreRepaint - public
getInputContext - public
getInputMethodListeners - public
getInputMethodRequests - public
getKeyListeners - public
getLocale - public
getLocationOnScreen - public
getMouseListeners - public
getMouseMotionListeners - public
getMouseWheelListeners - public
getToolkit - public
gotFocus - public
hasFocus - public
inside - public
isBackgroundSet - public
isCursorSet - public
isFocusTraversable - public
isFontSet - public
isForegroundSet - public
keyDown - public
keyUp - public
lostFocus - public
mouseDown - public
mouseDrag - public
mouseEnter - public
mouseExit - public
mouseMove - public
mouseUp - public
move - public
paintAll - public
prepareImage - public
prepareImage - public
removeComponentListener - public
removeFocusListener - public
removeHierarchyBoundsListener - public
removeHierarchyListener - public
removeInputMethodListener - public
removeKeyListener - public
removeMouseListener - public
removeMouseMotionListener - public
removeMouseWheelListener - public
setComponentOrientation - public
setCursor - public
setDropTarget - public
setFocusTraversalKeysEnabled - public
setFocusable - public
setIgnoreRepaint - public
show - public
show - public
transferFocusUpCycle - public
wait - public final
wait - public final
wait - public final
equals - public
hashCode - public
getClass - public final
notify - public final
notifyAll - public final


Java ::: Desafios e Lista de Exercícios Resolvidos ::: Laços de Repetição

Exercícios Resolvidos de Java - Contando de 1 até 20 e formatando a saída usando System.out.printf()

Quantidade de visualizações: 11049 vezes
Exercício Resolvido de Java - Contando de 1 até 20 e formatando a saída usando System.out.printf()

Pergunta/Tarefa:

Escreva um programa Java console que usa o laço for para contar de 1 até 20 e exibir estes valores no seguinte formato:

 1    2    3    4    5   
 6    7    8    9   10   
11   12   13   14   15   
16   17   18   19   20


Dica: Use o operador de módulo % para determinar o momento da quebra de linha e o método System.out.printf() para formatar o valor a ser exibido de forma a adicionar a quantidade correta de espaços entre os valores.

Resposta/Solução:

Eis a solução para este exercício:

public static void main(String[] args){
  // laço for que conta de 1 até 20
  for(int i = 1; i <= 20; i++){
    System.out.printf( "%2d   ", i);

    if(i % 5 == 0){
      System.out.println();
    }
  }
}

O mais importante a considerar aqui é o uso do método System.out.printf() na linha:

System.out.printf( "%2d   ", i);

Aqui nós estamos especificando a largura (width) do valor inteiro como
dois dígitos. Desta forma, se o valor for menor que 10 (um dígito), um 
espaço extra será adicionado à esquerda. Se o valor for maior que
9 (dois dígitos) nada acontece. Finalmente, três espaços são adicionados
à direita do valor.

Veja agora a explicação sobre o uso do operador de módulo % para provocar a quebra de linha após o quinto valor de cada fileira:

Aqui nós testamos se o valor atual da variável i é múltiplo de 5 (para ser
múltiplo de 5, o resto da divisão inteira de valor por 5 deverá ser 0). 
Neste exemplo os valores que são múltiplos de 5 são: 5, 10, 15 e 20. Assim.
logo após estes valores nós fazemos uma chamada à:

System.out.println();

para provocar uma quebra de linha e iniciar uma nova fileira de
valores. 



Ruby ::: Dicas & Truques ::: Strings e Caracteres

Como inverter uma string em Ruby usando as funções reverse e reverse!

Quantidade de visualizações: 10030 vezes
Esta dica mostra como podemos inverter uma string em Ruby, ou seja, reverter a ordem de seus caracteres. Para isso nós temos dois métodos: reverse e reverse!. O método reverse retorna uma nova string enquanto reverse! reverte o conteúdo da string original. Veja o trecho de código:

# declara e inicializa uma variável string
frase = "Osmar J. Silva"

# inverte a string sem afetar o original
invertida = frase.reverse

# exibe o resultado
puts "Original: " + frase
puts "Invertida: " + invertida

# inverte afetando o original
frase.reverse!

# exibe o resultado
puts "Original: " + frase

Ao executar este código Ruby nós teremos o seguinte resultado:

Original: Osmar J. Silva
Invertida: avliS .J ramsO
Original: avliS .J ramsO


Delphi ::: Dicas & Truques ::: Trigonometria - Funções Trigonométricas

Como calcular o cosseno de um ângulo em Delphi usando a função Cos() - Calculadora de cosseno em Delphi

Quantidade de visualizações: 1318 vezes
Em geral, quando falamos de cosseno, estamos falando do triângulo retângulo de Pitágoras (Teorema de Pitágoras). A verdade é que podemos usar a função cosseno disponível nas linguagens de programação para calcular o cosseno de qualquer número, mesmo nossas aplicações não tendo nenhuma relação com trigonometria.

No entanto, é sempre importante entender o que é a função cosseno. Veja a seguinte imagem:



Veja que temos um triângulo retângulo com as medidas já calculadas para a hipotenusa e os dois catetos, assim como os ângulos entre eles.

Assim, o cosseno é a razão entre o cateto adjascente e a hipotenusa, ou seja, o cateto adjascente dividido pela hipotenusa. Veja a fórmula:

\[\text{Cosseno} = \frac{\text{Cateto adjascente}}{\text{Hipotenusa}} \]

Então, se dividirmos 30 por 36.056 (na figura eu arredondei) nós teremos 0.8320, que é a razão entre o cateto adjascente e a hipotenusa (em radianos).

Agora, experimente calcular o arco-cosseno de 0.8320. O resultado será 0.5881 (em radianos). Convertendo 0.5881 radianos para graus, nós obtemos 33.69º, que é exatamente o ângulo em graus entre o cateto adjascente e a hipotenusa na figura acima.

Pronto! Agora que já sabemos o que é cosseno na trigonometria, vamos entender mais sobre a função cos() da linguagem Delphi. Esta função, incorporada por padrão à linguagem, recebe um valor numérico (Extended) e retorna um valor Extended, ou seja, também numérico) entre -1 até 1 (ambos inclusos). Veja:

procedure TForm1.Button1Click(Sender: TObject);
begin
  Memo1.Lines.Add('Cosseno de 0 = ' + FloatToStr(Cos(0)));
  Memo1.Lines.Add('Cosseno de 1 = ' + FloatToStr(Cos(1)));
  Memo1.Lines.Add('Cosseno de 2 = ' + FloatToStr(Cos(2)));
end;

Ao executar este código Delphi nós teremos o seguinte resultado:

Cosseno de 0 = 1
Cosseno de 1 = 0,54030230586814
Cosseno de 2 = -0,416146836547142

Note que calculamos os cossenos dos valores 0, 1 e 2. Observe como os resultados conferem com a curva da função cosseno mostrada abaixo:




JavaScript ::: Dicas & Truques ::: Algorítmos Úteis

Como testar se uma palavra (ou frase) é palíndroma em JavaScript

Quantidade de visualizações: 11755 vezes
Palíndromo é uma palavra, frase ou número que permanece igual quando lida de trás para diante. Por extensão, palíndromo é qualquer série de elementos com simetria linear, ou seja, que apresenta a mesma sequência de unidades nos dois sentidos.

Uma palavra palíndroma é aquela cuja sequência de letras é simétrica, permitindo uma leitura idêntica da esquerda para a direita ou da direita para a esquerda: ovo, osso, reler, anilina.

Veja um código JavaScript que pede para o usuário informar um palavra e, em seguida, informa se a palavra é palíndroma ou não:

<!DOCTYPE html>
<head>
<meta http-equiv="Content-Type" content="text/html; 
  charset=iso-8859-1" />
<title>Estudos JavaScript</title>
</head>
<body>
  
<script type="text/javascript">
  function palin(pal){
    var palindroma = true;
    pal = pal.toUpperCase();
  
    for(var i = 0; i < (pal.length / 2); i++){
      if(pal.charAt(i) != pal.charAt(pal.length - i - 1)){
        palindroma = false;
      }
    }
	
    return palindroma;
  }
  
  // testa se uma palavra é palindroma
  var palavra = window.prompt("Informe a palavra", 
    "palavra");
  if(palin(palavra)){
    alert("Esta palavra é palindroma");
  }
  else{
    alert("Esta palavra NÃO é palindroma"); 
  }
</script>
   
</body>
</html>


Carregar Publicações Anteriores


Nossas 20 dicas & truques de programação mais populares

Você também poderá gostar das dicas e truques de programação abaixo

Nossas 20 dicas & truques de programação mais recentes

Últimos Projetos e Códigos Fonte Liberados Para Apoiadores do Site

Últimos Exercícios Resolvidos

E-Books em PDF

E-Book 350 Exercícios Resolvidos de Java - PDF com 500 páginas
Domine lógica de programação e a linguagem Java com o nosso E-Book 350 Exercícios Exercícios de Java, para você estudar onde e quando quiser.

Este e-book contém exercícios resolvidos abrangendo os tópicos: Java básico, matemática e estatística, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book
E-Book 650 Dicas, Truques e Exercícios Resolvidos de Python - PDF com 1.200 páginas
Domine lógica de programação e a linguagem Python com o nosso E-Book 650 Dicas, Truques e Exercícios Exercícios de Python, para você estudar onde e quando quiser.

Este e-book contém dicas, truques e exercícios resolvidos abrangendo os tópicos: Python básico, matemática e estatística, banco de dados, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: C
6º lugar: Delphi
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2025 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 36 usuários muito felizes estudando em nosso site.