C ::: Dicas & Truques ::: Strings e Caracteres |
Como escrever uma função C que verifica se duas strings são iguais ou diferentes (sem considerar maiúsculas e minúsculas)Quantidade de visualizações: 10158 vezes |
Esta dica mostra como escrever uma função em linguagem C que verifica se duas strings são iguais ou diferentes (sem considerar maiúsculas e minúsculas, ou seja, case insensitive). O nome da função é str_equal(). Esta função aceita duas strings como argumentos e retorna 1 se estas forem iguais e 0 em caso contrário. Experimente, faça as devidas alterações e adicione mais esta função ao seu repertório de códigos C:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
// função personalizada que permite verificar
// se duas strings são iguais ou diferentes sem
// considerar maiúsculas e minúsculas
int str_equal(const char *str1, const char *str2){
while((toupper(*str1) == toupper(*str2)) && (*str1)){
str1++;
str2++;
}
return((*str1 == 0) && (*str2 == 0));
}
int main(int argc, char *argv[]){
char palavra1[] = "Java";
char palavra2[] = "Java";
if(str_equal(palavra1, palavra2) == 1)
printf("As palavras sao iguais");
else
printf("As palavras sao diferentes");
puts("\n\n");
system("PAUSE");
return 0;
}
|
Java ::: Dicas & Truques ::: Programação Orientada a Objetos |
Programação orientada a objetos em Java - Como criar e usar interfaces em seus programas JavaQuantidade de visualizações: 12281 vezes |
|
Muitos estudantes de Java torcem o nariz quando nós, professores e instrutores, tocamos no assunto de interfaces. Definitivamente este não é um tópico fácil de entender ao primeiro contato. Comecemos com uma analogia simples. É sabido que é cada vez maior o número de softwares sendo desenvolvidos em equipes, ou seja, o projeto do software é desmembrado e suas funcionalidades são implementadas por grupos diferentes de programadores. Quando estamos desenvolvendo software em grupos de programadores, é comum desenvolvermos partes que dependem do trabalho de um outro grupo. E, nem sempre podemos esperar que uma parte da qual dependemos fique pronta para só então progredirmos. Para isso, um contrato entre os grupos de programadores é firmado. E este contrato é o que chamamos de interface. Suponhamos que em um determinado momento meu grupo está desenvolvendo código que depende da parte de impressão, sendo desenvolvida por outro grupo. Todos se reúnem e decidimos quais funcionalidades a classe de impressão terá e quais métodos públicos serão disponibilizados. Feito isso, uma interface contendo a assinatura destes métodos é disponibilizada para todos e o desenvolvimento continua. Mais tarde, quando a classe de impressão estiver sendo desenvolvida, ela poderá implementar a interface anteriormente disponibilizada e tudo está resolvido. Sendo assim, uma interface na linguagem de programação Java é um tipo referência, similar a uma classe. A diferença é que uma interface pode conter apenas constantes e assinaturas e métodos. Não há a implementação dos corpos dos métodos. Além disso, interfaces não podem ser instanciadas usando new. Veja o que acontece quando tentamos fazer isso (lembre-se de que List é interface):
import java.util.*;
public class Estudos{
public static void main(String args[]){
// cria um objeto da interface List
List lista = new List();
}
}
Ao tentarmos compilar este código teremos a seguinte mensagem de erro:
Estudos.java:6: java.util.List is abstract;
cannot be instantiated
List lista = new List();
^
1 error
Interfaces devem ser implementadas por classes ou extendidas por outras interfaces. Agora, um detalhe interessante. Se você verificar a API do Java, verá que a interface List é implementada pelas classes AbstractList, ArrayList, LinkedList e Vector. Desta forma, o código anterior pode ser modificado para:
import java.util.*;
public class Estudos{
public static void main(String args[]){
// cria um objeto da interface List
List lista = new ArrayList();
}
}
Este código compila normalmente e fortalece nossa discussão a respeito da interface de impressão. O sistema inteiro pode fazer referências a uma interface e, para que ele funcione da forma esperada, só precisamos fornecer a classe que implementa a interface no momento de instanciar os objetos. Isso demonstra que o nome de uma interface pode ser usado em qualquer lugar no qual um tipo da classe que a implementa seja necessário. Vamos ver agora como criar uma interface chamada Pessoa. Veja:
public interface Pessoa{
public void setNome(String nome);
public String getNome();
}
Salve esta interface como Pessoa.java e a compile. Pronto! Esta interface já pode ser usada no sistema, contanto que todos do grupo tenham concordado com as assinaturas dos métodos. Agora observe uma classe Cliente que implementa esta interface:
public class Cliente implements Pessoa{
private String nome;
private int idade;
public void setNome(String nome){
this.nome = nome;
}
public String getNome(){
return this.nome;
}
}
Salve este código como Cliente.java e o compile. O primeiro detalhe a observar é o uso da palavra-chave implements para mostrar que a classe implementa a interface Pessoa. Note também que a classe fornece implementação para todos os métodos da interface. Não seguir esta regra geraria o seguinte erro de compilação:
Cliente.java:1: Cliente is not abstract and
does not override abstract method getNome() in
Pessoa
public class Cliente implements Pessoa{
^
1 error
Em resumo, uma interface define um protocolo de comunicação entre dois objetos e pode conter, além das assinaturas dos métodos, constantes. Neste caso todas estas constantes serão implicitamente public, static e final. Mesmo que estes modificadores sejam omitidos. |
Java ::: Estruturas de Dados ::: Árvore Binária e Árvore Binária de Busca |
Estruturas de Dados em Java - Como obter o nó com menor valor em uma árvore binária de busca em JavaQuantidade de visualizações: 3788 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 menor valor em uma árvore binária. O truque aqui é descer o lado esquerdo da árvore até o último nó. Veja:
// método que permite retornar o menor nó de uma árvore
// binária de busca
public No retornarMenorElemento(){
// chama a versão recursiva do método
return retornarMenorElemento(raiz);
}
public No retornarMenorElemento(No no){
if((no == null) || (no.getEsquerdo() == null)){
return no; // ponto de parada
}
else{ // vamos continuar descendo do lado esquerdo
return retornarMenorElemento(no.getEsquerdo());
}
}
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 o menor elemento na árvore binária de busca
System.out.println("\nO menor nó é: " +
arvore.retornarMenorElemento().getValor());
System.out.println("\n");
}
}
Ao executar este código teremos o seguinte resultado: Informe um valor inteiro: 5 Informe um valor inteiro: 12 Informe um valor inteiro: 87 Informe um valor inteiro: 1 Informe um valor inteiro: 3 O menor nó é: 1 |
Java ::: Dicas & Truques ::: Arrays e Matrix (Vetores e Matrizes) |
Java Vetores e Matrizes - Como inicializar os elementos de um vetor usando o laço for da linguagem JavaQuantidade de visualizações: 10182 vezes |
|
Neste exemplo veremos como inicializar um vetor (array) de ints usando o laço for. Note que os elementos do array serão inicializados com os valores de 1 a 10. Veja o código completo:
package arquivodecodigos;
public class Estudos{
public static void main(String[] args){
// vamos declarar e construir um vetor de 10 elementos
int[] a = new int[10];
// inicializa os elementos do vetor
for(int i = 0; i < a.length; i++){
a[i] = (i + 1);
}
// exibe os valores dos elementos do vetor
for(int i = 0; i < a.length; i++){
System.out.print(a[i] + ", ");
}
System.exit(0);
}
}
Ao executar este código Java nós teremos o seguinte resultado: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, |
Nossas 20 dicas & truques de programação mais populares |
|
Python - Como retornar o dia do mês em Python como um decimal no intervalo 01-31 usando strftime("%d") Java - Como verificar se um arquivo ou diretório existe em Java usando o método exists() da classe File |
Você também poderá gostar das dicas e truques de programação abaixo |
|
Delphi - Como retornar a quantidade de itens em uma TListBox do Delphi usando a propriedade Items.Count Java - Como transformar um StringBuffer em uma String usando o método toString() da classe StringBuffer |
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 |




