Ruby ::: Dicas & Truques ::: Programação Orientada a Objetos |
Como usar variáveis de instância em Ruby - Programação Orientada a Objetos em RubyQuantidade 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 JavaQuantidade 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.ObjectCollectionQuantidade 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 StringQuantidade 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 JavaQuantidade 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 DelphiQuantidade 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 JavaScriptQuantidade 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> |
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 |
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 |