Mostrando postagens com marcador programar. Mostrar todas as postagens
Mostrando postagens com marcador programar. Mostrar todas as postagens

segunda-feira, 28 de janeiro de 2019

Programando em Go (Golang) - Interface

Em golang uma interface é uma coleção de assinaturas de métodos. Em golango para se utilizar um intreface basta apenas implementar os métodos contidas na mesma.

Sintaxe:

type nome_interface interface{
  assinatura_metodo_1
  assinatura_metodo_2
  ...
  assinatura_metodo_n
}

Onde:

nome_interface - Nome da interface
assinatura_metodo_1 - Assinatura de um método.
assinatura_metodo_2 - Assinatura de um método.
assinatura_metodo_N - Assinatura de um método.

Exemplo:


package main

import ( "fmt"
         "strings")


type impressao interface{
    maiusculo() string
    minusculo() string
}


type usuario struct{
 nome, sobrenome string
}

type cidade struct{
 nome, estado string
}


func (c cidade) maiusculo() string{
  retorno:=strings.ToUpper(c.nome)+" - "+strings.ToUpper(c.estado)
  return retorno
}


func (c cidade) minusculo() string{
  retorno:=strings.ToLower(c.nome)+" - "+strings.ToLower(c.estado)
  return retorno
}


func (u usuario) maiusculo() string{
  retorno:=strings.ToUpper(u.nome)+" "+strings.ToUpper(u.sobrenome)
  return retorno
}


func (u usuario) minusculo() string{
  retorno:=strings.ToLower(u.nome)+" "+strings.ToLower(u.sobrenome)
  return retorno
}

func main(){
 cidade:= cidade{nome:"Lorena", estado:"São Paulo"}
 usuario:= usuario{nome:"Robson", sobrenome:"Gomes"}

 fmt.Println("\nDados da Usuario:\n")

 fmt.Println(" ",usuario.maiusculo())
 fmt.Println(" ",usuario.minusculo())

  fmt.Println("\nDados da Cidade:\n")


 fmt.Println(" ",cidade.maiusculo())
 fmt.Println(" ",cidade.minusculo())
 
}


Como foi possível ver acima foi criado um programa que conta com a interface  impressao:

type impressao interface{
    maiusculo() string
    minusculo() string
}


Nela é definida duas assinaturas de métodos simples, sendo que ambas retornam uma string. Logo os dois métodos são implementados pela estrutura usuario e cidade.

func (c cidade) maiusculo() string{
  retorno:=strings.ToUpper(c.nome)+" - "+strings.ToUpper(c.estado)
  return retorno
}


func (c cidade) minusculo() string{
  retorno:=strings.ToLower(c.nome)+" - "+strings.ToLower(c.estado)
  return retorno
}


func (u usuario) maiusculo() string{
  retorno:=strings.ToUpper(u.nome)+" "+strings.ToUpper(u.sobrenome)
  return retorno
}


func (u usuario) minusculo() string{
  retorno:=strings.ToLower(u.nome)+" "+strings.ToLower(u.sobrenome)
  return retorno
}



E a chamada as mesma é as mesmas são utilizadas no método main.

func main(){
 cidade:= cidade{nome:"Lorena", estado:"São Paulo"}
 usuario:= usuario{nome:"Robson", sobrenome:"Gomes"}

 fmt.Println("\nDados da Usuario:\n")

 fmt.Println(" ",usuario.maiusculo())
 fmt.Println(" ",usuario.minusculo())

  fmt.Println("\nDados da Cidade:\n")


 fmt.Println(" ",cidade.maiusculo())
 fmt.Println(" ",cidade.minusculo())
 
}



Abaixo é possível ver o resultado do método do programa acima:




Menu Principal

segunda-feira, 21 de janeiro de 2019

O que é uma Exception em java ?

Uma Exception ou excessão é uma situação que acontece quando um programa foge em algum momento da maneira como ele deveria funcionar.

Por exemplo um NullPointerException acontece quando tentamos acessar alguma informação de dentro de um varável nula.

Exemplo:

....
public String getNome()
 {
   Usuario usuario;
   usuario.getNome();
}
....

No caso acima é lançado um NullPointerExecpton, pois estamos tentando acessar um atributo de uma variável não instanciada ou seja fugimos do fluxo correto do funcionamento do sistema.

Como evitar uma excessão ?

Uma maneira de tratar uma provável Exception em java é fazer utilização do try /cath ou enviar a mesma para  método que veio chamar o método que pode estorar a Exception atraves do throws.

Exemplo 1 - Fazendo o tratamento com try/catch:

//Tratando com try/cath
...
....
public String getNome()
 {
   Usuario usuario;
 try{
     usuario.getNome();
    }catch(Exception e){
      //  ...tratamento
     usuario= new Usuario();
     usuario.nome = "Sem nome";
     
  }
}
....

Exemplo 2 - lançando a Exception par ao método que fez a chamada ao método problemático:

....
public String getNome() throws Exception
 {
   Usuario usuario;
   usuario.getNome();
}
....

quarta-feira, 26 de setembro de 2018

Programando em Go (Golang) - Arrays

Um array (arranjo) é um estrutura de dados onde é armazenado uma quantidade definida de valores e que podem serem acessados através de um índice.

Sintaxe:


var nome[tamanho] tipo

Onde:


  • nome - Nome de variável array
  • tamanho - Tamanho do array
  • tipo - Tipo do array


No exemplo abaixo é criado um array de string com dez posições.


Exemplo 1: 


var nomes[10]string


Iniciando array com valores


É possível inicializar um array já com seus devidos valores


Sintaxe:


 nome := [tamanho]tipo{valor1,valor2,valorn}

Onde:


  • nome - Nome do array.
  • tamanho - Tamanho do Array
  • valor1,valor2,valorn - Valores do array, lembrando que a quantidade de valor é a mesma citada no campo tamanho.

Exemplo:

idades :=[3]int{12,21,30}


Setar valor a uma posição especifica

É possível setar um valor para uma posição especifica de seu array para isso basta utilizar a sintaxe abaixo:

Sintaxe:

array[posicao]=valor

Onde:

array - Nome do array do qual terá um valor alterado.
posição - Posição no qual o valor será modificado.
valor - Valor a ser inserido na posição indicada pelo campo posição

Exemplo:

package main

import "fmt"

func main() {
var nomes [2]string
nomes[0] = "Mario"
nomes[1] = "Joaquim"
fmt.Println(nomes[0], nomes[1])
}


Acessando o valor de uma posição do array


Para pegar o valor de uma determinada posição do array basta usar a sintaxe abaixo:

Sintaxe:


array[posição]

Onde:

  • array - nome do array a ter uma posição acessada.
  • posição - Posição a ser acessada.

Exemplo:

Abaixo é possível ver um exemplo ver o acesso ao array, nos campos:   nomes[0]nomes[1]                                         

package main

import "fmt"

func main() {
var nomes [2]string
nomes[0] = "Mario"
nomes[1] = "Joaquim"
fmt.Println(nomes[0]nomes[1])
}

 0
Onservaçõe Finais

terça-feira, 18 de setembro de 2018

Programando em Go (Golang) - Variáveis

Assim como em outras linguagens de programação uma variável é de suma importância em Go, para iniciar uma variável em Go utiliza a palavra chave var.

Sintaxe:

var nome_variavel tipo_variavel

Onde:


  • nome_variavel - O nome propriamente dito da variável.
  • tipo_variavel - Tipo da variável (int, string, etc)



Exemplos 1:

var idade int
var nome string
var nome,cpf string



Nível de acesso a variáveis


As variáveis em Go pode estar ao nível de pacote(package) ou local a uma função(func).

Sintaxe:

package pacoteX

var nome string //Variável ao nivel do pacote

func main()
{
var cpf string //Variável ao nivel da função main
...
}

func calculoX()
{
var numero1,numero2 int //Variável ao nivel da função calculoX
...
}



Exemplo 2: 

package main

import "fmt"

var nome, rg, cpf string

func main() {
var idade int
fmt.Println(nome, rg, cpf, idade)
}


Nesse exemplo as váriaveis nome, rg e cpf estão no nivel do pacote, já a idade está no nivel da função.


Variveis com inicialização


Em Go podemos inicializar multiplas váriveis em uma unica linha, uma por vez.

Sintaxe:


var var1,var2,var3 tipo_variavel = valor1,valor2,valor3

Onde:



  • var1,var2,var3 - São as váriaveis a serem inicializadas.
  • valor1,valor2,valor3 - Os valores que serão atribuidos as variáveis var1,var2,var3


Exemplo 3: 

No exemplo abaixo é possível ver multiplas váriaveis sendo inicializadas ao mesmo tempo.

package main

import "fmt"

var dia,mes,ano int = 1, 2, 2012

func main() {
var nome,sobreNome,habilitado = "Mario", true, "Kent"
fmt.Println(nome,habilitado,dia, mes, ano,  sobreNome)
}



Inicialização rápida de váriaveis


Em Go (golang) é possível inicializar variáveis de maneira rápida através da assinatura := . Utilizando a mesma ao invés da palavra chave var a variável é inicializada com um tipo implícito.

Sintaxe:


nome_variavel := valor

Onde:


  • nome_variavel - Nome da váriavel propriamente dita.
  • valor - Valor a ser atribuido intricicamente a váriavel nome_variavel.


Exemplo 4:


package main

import "fmt"

var dia int = 8

func main() {
ano:=1988
nome:="Mario"

fmt.Println(nome,dia, ano)
}


Não é possível inicializar uma váriavel de maneira "rápida" fora do corpo de uma função o exemplo abaixo não está correto.


Exemplo 5: 

Um exemplo com erro.

package main

import "fmt"

var dia int = 8
nome:="Mario" // trecho com erro

func main() {
ano:=1988

fmt.Println(nome,dia, ano)
}


Tipos de variáveis em Go 


Os tipos básicos de variáveis em Go são:


  • bool
  • byte 
  • complex64 complex128
  • float32 float64
  • int  int8  int16  int32  int64
  • rune 
  • string
  • uint uint8 uint16 uint32 uint64 uintptr


Variável inicializada sem valor


Em Go váriveis inicializadas sem um valor inicial explicito é dado o valor default para o mesma.


  • Para tipos números é atribuido o valor 0
  • Para tipo booleano é atribuido o valor false
  • Para tipo string é atribuído o valor "" (string vazia)


Exemplo 6:


package main

import "fmt"

func main() {
var idade int
var altura float64
var habilitado bool
var nome string
fmt.Printf("%v, %v, %v , %v, %v", nome,idade, altura, habilitado, nome)
}



Conversão de tipo


Em Go é possível converter o tipo de várivel utilizando a seguinte sintaxe:


tipo(valor)

Onde:


  • tipo - Tipo para o qual o "valor" será convertido.
  • valor - Valor a ser convertido.


Exemplo:




var idade int = 30
var fidade float64 = float64(idade)
var uIdade uint = uint(fidade)




Anterior                                       Início                                                       Próximo

sexta-feira, 19 de janeiro de 2018

Como encontrar erros no código mais facilmente

Introdução


O principal objetivo deste post é disponibilizar algumas dicas simples algumas maneiras simples de como encontrar erros e dar manutenção de maneira mais simples em um código fonte.


Dicas


1º Escreva um código auto explicativo.


Tente escrever um código auto explicativo, que por si só diga o que faz passo a passo, por exemplo caso você tenha uma variável que guarde um atributo do tipo texto o valor de um nome do usuário,  de um nome para ela de "nome" ou "nomeUsuario" não faz sentido colocar o nome dessa variavel de "n" ou algo parecido.

Tente dar nomes aos métodos de sua classe que faça sentido, caso seu método seja um gerador de organizador de texto por exemplo, de um nome para o mesmo que se condiz com sua função, por exemplo "organizar Texto".


2º Escreva métodos pequenos 


Escreva métodos pequenos de no máximo 25 linhas, isso tornará seu código mais fácil de manutenção.


3º Reaproveite o código


Reaproveite os métodos e trechos e códigos já criados na mesma classe, evite colocar trechos de códigos repetidos que faça a mesma função em toda um classe. Um exemplo seria ter uma condição que verifica se uma variável está nula, crie um método que faça isso e o chame quando necessário, isso evitará manutenção em várias locais para o mesmo fim.

4º O modo debug é seu amigo


Quando possível debug seu código isso poderá facilitar em muito o processo para achar os erros mais facilmente.


5º Não esconda exceções para baixo do tapete


Em nenhuma hipótese capture um exceção e faça ela desaparecer. Caso o seu código capture uma execeção exiba de alguma maneira que a mesma foi capturada.