Você está aqui: Cards de Hidrostática |
||
|
||
|
|
||
GoLang ::: Dicas & Truques ::: Strings e Caracteres |
Como retornar o tamanho de uma string em Golang usando os métodos len() e RuneCountInString()Quantidade de visualizações: 1129 vezes |
|
Em algumas situações nós precisamos obter e retornar o tamanho de uma string, ou seja, a quantidade de caracteres em uma palavra, frase ou texto. Para isso nós podemos duas funções na linguagem Go: len() e RuneCountInString(). O método len() retorna a quantidade de bytes contidos em uma string. Note, porém, que esta função não é recomendada quando estamos lidando com caracteres do conjunto utf8, que requerem dois bytes. Dessa forma, se estivermos certos de que a string não possui acentos ou caracteres especiais, então o método len() é o mais adequado. Veja um trecho de código Golang no qual pedimos para o usuário informar uma palavra ou frase e em seguida nós informamos a quantidade de caracteres contidos nela:
// pacote principal
package main
// vamos importar os módulos necessários
import (
"bufio"
"fmt"
"os"
"strings"
)
// esta é a função principal do programa
func main() {
// variáveis que vamos usar na resolução do problema
var frase string
var tamanho int
// vamos pedir para o usuário informar uma
// palavra ou frase
fmt.Print("Informe uma palavra ou frase: ")
var entrada = bufio.NewReader(os.Stdin)
frase, _ = entrada.ReadString('\n')
frase = strings.TrimSpace(frase)
// vamos obter o tamanho da string
tamanho = len(frase)
// e mostramos o resultado
fmt.Printf("A palavra ou frase contém %d caracteres",
tamanho)
}
Ao executarmos este código Go nós teremos o seguinte resultado: Informe uma palavra ou frase: Gosto de Python A palavra ou frase contém 15 caracteres Se contarmos a quantidade de caracteres na string informada, realmente veremos que o código retornou o resultado esperado. O problema acontece quando informamos uma palavra ou frase com acentos ou caracteres especiais. Experimente e veja que a função len() começa a retornar uma contagem estranha. Quando nossas strings possuem caracteres especiais ou com acentos, a função a ser usada é RuneCountInString(). Veja:
// pacote principal
package main
// vamos importar os módulos necessários
import (
"bufio"
"fmt"
"os"
"unicode/utf8"
"strings"
)
// esta é a função principal do programa
func main() {
// variáveis que vamos usar na resolução do problema
var frase string
var tamanho int
// vamos pedir para o usuário informar uma
// palavra ou frase
fmt.Print("Informe uma palavra ou frase: ")
var entrada = bufio.NewReader(os.Stdin)
frase, _ = entrada.ReadString('\n')
frase = strings.TrimSpace(frase)
// vamos obter o tamanho da string
tamanho = utf8.RuneCountInString(frase)
// e mostramos o resultado
fmt.Printf("A palavra ou frase contém %d caracteres",
tamanho)
}
Ao executarmos este novo código nós teremos o resultado: Informe uma palavra ou frase: Código A palavra ou frase contém 6 caracteres |
Python ::: Fundamentos da Linguagem ::: Passos Iniciais |
Como usar os argumentos padrões das funções em PythonQuantidade de visualizações: 7697 vezes |
Geralmente quando efetuamos chamadas às funções, nosso código fica responsável por fornecer os valores para os argumentos da função. Em Python é possível termos argumentos padrões, e tais argumentos já podem ter um valor pré-definido. Desta forma, a passagem dos parâmetros se torna opcional. Veja um exemplo:
# função com argumento padrão
def erro(msg = "Houve um erro."):
print msg
# chamada à função fornecendo o argumento
erro("Erro desconhecido.")
# chamada à função sem fornecer o argumento
erro()
Veja mais um exemplo: # função com argumentos padrões def volume(comprimento = 1, largura = 1, altura = 1): return (comprimento * largura * altura) # chamada à função fornecendo um argumento print volume(3) # chamada à função fornecendo dois argumentos print volume(4, 5) # chamada à função fornecendo três argumentos print volume(4, 5, 7) # chamada à função fornecendo nenhum argumento print volume() É importante observar que os argumentos padrões devem estar sempre à direita dos demais argumentos. Falhar em cumprir esta exigência pode causar um erro do tipo: SyntaxError: non-default argument follows default argument |
Delphi ::: Data Access Controls (Controles de Acesso a Dados) ::: TClientDataSet |
Como usar a propriedade Eof para verificar se estamos no último registro do TClientDataSet do DelphiQuantidade de visualizações: 14487 vezes |
|
Em algumas situações gostaríamos de verificar se já estamos no último registro do TClientDataSet, ou seja, estamos percorrendo todos os registros do dataset e queremos saber se já estamos no último. Para isso podemos usar a propriedade Eof da classe TClientDataSet. Esta propriedade retorna true se estivermos no último registro e false em caso contrário. Veja um trecho de código no qual usamos um laço while para percorrer todos os registros de um TClientDataSet. Note o uso da propriedade Eof para finalizar as iterações do laço:
procedure TForm3.Button4Click(Sender: TObject);
begin
// vamos percorrer todos os registros do TClientDataSet
ClientDataSet1.First; // vamos para o primeiro registro
// e agora disparamos um laço While
while not ClientDataSet1.Eof do
begin
// vamos mostrar em um TMemo os valores do
// campo id de cada registro
Memo1.Lines.Add(ClientDataSet1.FieldByName('id').AsString);
// vamos mover para o próximo registro
ClientDataSet1.Next;
end;
end;
A propriedade Eof é verdadeira quando: a) Abrimos um dataset vazio. b) Efetuamos uma chamada ao método Last do dataset. c) Chamamos o método Next do dataset e a chamada falha porque o registro atual já é o último registro no dataset. d) Efetuamos uma chamada ao método SetRange em uma faixa de dados ou dataset vazio. Esta dica foi escrita e testada no Delphi 2009. |
Python ::: Desafios e Lista de Exercícios Resolvidos ::: Laços de Repetição |
Exercícios Resolvidos de Python - Como converter de binário para decimal em Python usando o laço forQuantidade de visualizações: 693 vezes |
|
Pergunta/Tarefa: Escreva um programa Python que usa o laço for para converter um número binário (como uma String) em sua representação decimal (como um int). Peça ao usuário para informar um número binário e mostre o mesmo em decimal (como um int). Sua solução deve obrigatoriamente usar o laço for. Sua saída deverá ser parecida com: Informe um número binário: 1100 A representação decimal do valor binário 1100 é 12 Veja a resolução comentada deste exercício usando Python:
# vamos importar o módulo Math
import math
# função principal do programa
def main():
# vamos ler o número binário (como uma String)
binario = input("Informe um número binário: ")
decimal = 0 # guarda a representação decimal
# vamos percorrer todos os dígitos do número binário começando do início
expoente = len(binario) - 1
for i in range(0, len(binario)):
# converte o caractere atual para inteiro
temp = int(binario[i])
decimal = decimal + (temp * int(math.pow(2, expoente)))
# reduz o expoente
expoente = expoente - 1
# mostramos o resultado
print("A representação decimal do valor binário {0} é {1}".format(
binario, decimal))
if __name__== "__main__":
main()
|
C ::: Dicas & Truques ::: Struct (Estruturas, Registros) |
Como alocar memória para instâncias de uma estrutura (struct) e acessá-las usando ponteiros em CQuantidade de visualizações: 11615 vezes |
|
Esta dica mostra como declarar uma estrutura (struct), alocar duas instâncias desta e acessá-las usando ponteiros. Considere a seguinte struct:
// define a estrutura Livro
struct Livro{
char titulo[80];
int codigo;
int paginas;
};
Note que agora a variável titulo foi declarada como uma matriz de caracteres de 80 posições. Mais adiante você entenderá o propósito de tal abordagem. Veja agora como alocamos memória para duas instâncias desta estrutura: // cria dois ponteiros para duas instâncias (recém-alocadas) // de Livro Livro *a = (struct Livro*)malloc(sizeof(struct Livro)); Livro *b = (struct Livro*)malloc(sizeof(struct Livro)); A partir deste ponto as variáveis a e b são ponteiros para as duas instâncias recém alocadas. Observe que, quando usamos ponteiros para estruturas, seus membros são acessados usando-se a notação -> em vez do ponto. Veja: a->codigo = 342; a->paginas = 230; Para definir o valor para o membro titulo é preciso lançar mão da função strcpy(). Isso é feito porque estamos lidando com ponteiros, e cada instância de Livro possui sua área de memória a partir da qual a posição inicial da cadeia de caracteres que receberá o título do livro já foi inicializada. Veja: strcpy(a->titulo, "Programando em Java"); Observe agora o código completo para o exemplo:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// define a estrutura Livro
struct Livro{
char titulo[80];
int codigo;
int paginas;
};
int main(int argc, char *argv[]){
// cria dois ponteiros para duas instâncias (recém-alocadas)
// de Livro
Livro *a = (struct Livro*)malloc(sizeof(struct Livro));
Livro *b = (struct Livro*)malloc(sizeof(struct Livro));
// preenche os dados do primeiro Livro
// Estamos usando ponteiros agora. Para definir o título
// do livro é preciso usar a função strcpy, já que estamos
// usando uma cadeia de caracteres
strcpy(a->titulo, "Programando em Java");
a->codigo = 342;
a->paginas = 230;
// preenche os dados do segundo Livro
strcpy(b->titulo, "JavaScript - O Guia Prático");
b->codigo = 675;
b->paginas = 930;
// exibe os dados do primeiro livro
printf("Primeiro Livro\nTitulo: %s\nCodigo: %d\nPaginas: %d\n",
a->titulo, a->codigo, a->paginas);
// exibe os dados do segundo livro
printf("\nSegundo Livro\nTitulo: %s\nCodigo: %d\nPaginas: %d\n",
b->titulo, b->codigo, b->paginas);
puts("\n\n");
system("PAUSE");
return 0;
}
|
Desafios, Exercícios e Algoritmos Resolvidos de C |
Veja mais Dicas e truques de C |
Dicas e truques de outras linguagens |
|
VB.NET - Como usar o laço While em VB.NET |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
|
1º lugar: Java |




