Você está aqui: Cards de Engenharia Civil - Estruturas de Concreto Armado |
||
|
||
|
|
||
Dart ::: Desafios e Lista de Exercícios Resolvidos ::: Arrays e Matrix (Vetores e Matrizes) |
Exercício Resolvido de Dart - Escreva um programa Dart para mover todos os zeros para o final do vetor, sem alterar a ordem dos elementos já presentes no arrayQuantidade de visualizações: 899 vezes |
|
Pergunta/Tarefa: Dado o seguinte vetor de inteiros: // vamos declarar e construir um vetor (List) de 8 inteiros List<int> valores = [0, 3, 0, 5, 7, 4, 0, 9]; Sua saída deverá ser parecida com: Vetor na ordem original: 0 3 0 5 7 4 0 9 Vetor com os zeros deslocados para o final: 3 5 7 4 9 0 0 0 Veja a resolução comentada deste exercício usando Dart:
// Vamos importar a biblioteca dart:io
import "dart:io";
void main(){
// vamos declarar e construir um vetor (List) de 8 inteiros
List<int> valores = [0, 3, 0, 5, 7, 4, 0, 9];
// vamos mostrar o vetor na ordem original
print("Vetor na ordem original:\n");
for(int i = 0; i < valores.length; i++){
stdout.write("${valores[i]} ");
}
// vamos inicializar j como 0 para que ele aponte para
// o primeiro elemento do vetor
int j = 0;
// agora o laço for percorre todos os elementos do vetor,
// incrementanto a variável i e deixando o j em 0
for(int i = 0; i < valores.length; i++){
// encontramos um valor que não é 0
if(valores[i] != 0){
// fazemos a troca entre os elementos nos índices
// i e j
int temp = valores[i];
valores[i] = valores[j];
valores[j] = temp;
// e avançamos o j para o elemento seguinte
j++;
}
}
// agora mostramos o resultado
print("\n\nVetor com os zeros deslocados para o final:\n");
for(int i = 0; i < valores.length; i++){
stdout.write("${valores[i]} ");
}
}
Não se esqueça: A resolução do exercício deve ser feita sem a criação de um vetor, array ou lista adicional, e os elementos diferentes de zero devem permanecer na mesma ordem que eles estavam antes. |
Java ::: Coleções (Collections) ::: HashSet |
Java Collections - Como usar a classe HashSet em seus programas JavaQuantidade de visualizações: 5493 vezes |
A classe HashSet, no pacote java.util, é uma classe concreta que implementa a interface Set. Na maioria das vezes nós usamos objetos desta classe para armazenar elementos não duplicados (ainda que o elemento null seja permitido). Veja sua posição na hierarquia de classes da plataforma Java:
java.lang.Object
java.util.AbstractCollection<E>
java.util.AbstractSet<E>
java.util.HashSet<E>
Veja um trecho de código no qual inserimos cinco elementos do tipo String em um HashSet e os listamos em seguida:
package estudos;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
public class Estudos{
public static void main(String[] args) {
// vamos criar uma instância da classe HashSet
Set<String> conjunto = new HashSet<>();
// vamos inserir cinco Strings neste conjunto
conjunto.add(null); // o elemento null é permitido
conjunto.add("Marcos");
conjunto.add("Osmar");
conjunto.add("Osmar"); // elemento duplicado aqui
conjunto.add("Fernanda");
// vamos exibir os elementos
Iterator iterator = conjunto.iterator();
while(iterator.hasNext()){
System.out.println(iterator.next());
}
}
}
Ao executarmos este código teremos o seguinte resultado: null Fernanda Marcos Abel Osmar |
Java ::: Dicas & Truques ::: Imagens e Processamento de Imagens |
Manipulação de imagens em Java - Como converter uma imagem JPG colorida para uma imagem na escala cinza (gray scale)Quantidade de visualizações: 12447 vezes |
Uma das formas mais comuns de se converter uma imagem colorida para uma imagem na escala cinza (grayscale) é desenhar a imagem colorida em um BufferedImage do tipo TYPE_BYTE_GRAY. Veja o resultado na imagem abaixo:![]() E agora o código completo para o exemplo:
package arquivodecodigos;
import java.awt.*;
import java.io.*;
import java.awt.image.*;
import java.awt.event.*;
import javax.swing.*;
import javax.imageio.*;
public class Estudos extends JFrame{
private BufferedImage imagem;
private BufferedImage imagemCinza;
AreaImagem areaImagem;
public Estudos(){
super("Estudos Java");
Container c = getContentPane();
c.setLayout(new BorderLayout());
JButton btn = new JButton("Carregar Imagem");
btn.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){
JFileChooser fc = new JFileChooser();
int res = fc.showOpenDialog(null);
if(res == JFileChooser.APPROVE_OPTION){
File arquivo = fc.getSelectedFile();
imagem = null;
try{
imagem = ImageIO.read(arquivo);
}
catch(IOException exc){
JOptionPane.showMessageDialog(null,
"Erro ao carregar a imagem: " +
exc.getMessage());
}
if(imagem != null){
areaImagem.imagem = imagem;
areaImagem.repaint();
}
}
}
}
);
JButton btn2 =
new JButton("Converter Escala Cinza");
btn2.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){
converterEscalaCinza();
}
}
);
JPanel painel = new JPanel();
painel.setLayout(new FlowLayout());
painel.add(btn);
painel.add(btn2);
c.add(painel, BorderLayout.SOUTH);
// Cria a área de exibição da imagem
areaImagem = new AreaImagem();
c.add(areaImagem, BorderLayout.CENTER);
setSize(400, 300);
setVisible(true);
}
public void converterEscalaCinza(){
imagemCinza = new BufferedImage(
imagem.getWidth(), imagem.getHeight(),
BufferedImage.TYPE_BYTE_GRAY);
Graphics g = imagemCinza.getGraphics();
g.drawImage(imagem, 0, 0, null);
g.dispose();
areaImagem.imagem = imagemCinza;
areaImagem.repaint();
}
public static void main(String args[]){
Estudos app = new Estudos();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
// Sub-classe de JPanel para exibir a imagem
class AreaImagem extends JPanel{
public BufferedImage imagem;
public void paintComponent(Graphics g){
super.paintComponent(g);
// desenha a imagem no JPanel
g.drawImage(imagem, 0, 0, this);
}
}
|
Delphi ::: Dicas & Truques ::: Ponteiros, Referências e Memória |
Como usar ponteiros na linguagem Delphi - Aprenda a usar ponteiros em DelphiQuantidade de visualizações: 24363 vezes |
|
O Delphi, assim como C e C++ permite o uso de ponteiros, uma das ferramentas mais poderosas de programação e presente em códigos mais elaborados, tais como estruturas de dados. Para entender ponteiros, é preciso lembrarmos do conceito de variáveis. Uma variável, em determinados momentos, possui várias propriedades ou atributos, a saber, um nome, um valor e o tipo de dados que poderá ser armazenado na mesma. Uma variável possui também um endereço na memória do computador e o seu nome não é nada mais que um apelido para tal endereço. Ponteiros também possuem um nome, um valor e um tipo de dados. A diferença é que ponteiros, em vez de guardar valores tais como inteiros, strings, caracteres, etc, guardam o endereço de outras variáveis (ou o endereço de outros ponteiros, o que resulta em um ponteiro para um ponteiro). Assim, um ponteiro é uma forma indireta de se acessar o conteúdo de uma outra variável. Veja, por exemplo, as seguintes declarações de variáveis: var valor: integer; pvalor: ^integer; Aqui nós temos uma variável valor do tipo Integer e uma variável pvalor que é um ponteiro para um Integer. Veja agora como atribuir valores a estas variáveis:
procedure TForm1.Button1Click(Sender: TObject);
var
valor: integer;
pvalor: ^integer;
begin
// atribui um valor à variável valor
valor := 20;
// vamos atribuir à pvalor o endereço de valor
pvalor := @valor;
// vamos usar o ponteiro pvalor para alterar o
// valor de valor
pvalor^ := 30;
// vamos obter o novo valor da variável valor
ShowMessage('Valor de valor: ' + IntToStr(valor));
end;
Veja que usamos o operador @ para obtermos o endereço da variável valor e guardá-lo no ponteiro pvalor. Em seguida usamos o símbolo ^ para acessar o valor da variável para a qual o ponteiro está apontando. Este processo é chamado de desreferenciamento (dereferencing). Em resumo, o símbolo ^ pode ser usado de duas formas: na frente de um tipo de dados, para indicar que a variável está sendo declarada como ponteiro e após o nome de uma variável do tipo ponteiro para indicar que queremos acessar o valor da variável para a qual o ponteiro está apontando atualmente e não o valor do ponteiro, que seria simplesmente um valor inteiro representando um endereço de memória. Para fins de compatibilidade, esta dica foi escrita usando Delphi 2009. |
C++ ::: Dicas & Truques ::: Arquivos e Diretórios |
Como renomear um arquivo em C++ usando a função rename()Quantidade de visualizações: 12071 vezes |
Em algumas situações nossos códigos C++ precisam renomear arquivos. Isso pode ser feito com o auxílio da função rename() ou _rename(), disponível no header io.h or stdio.h (trazido da linguagem C). Veja a assinatura desta função:int rename(const char *oldname, const char *newname); a) EINVAL - Invalid argument - Os nomes dos arquivos contém caracteres inválidos; b) ENOENT - No such file or directory - O caminho do arquivo é inválido; c) EACCESS - Acesso negado - Algum outro programa está usando este arquivo e mantém controle sobre o mesmo. Veja um trecho de código C++ no qual renomeamos um arquivo:
#include <iostream>
using namespace std;
int main(int argc, char *argv[]){
// vamos renomear este arquivo
char arq_antigo[] = "C:\\Dev-Cpp\\arquivo.txt";
char arq_novo[] = "C:\\Dev-Cpp\\arquivo2.txt";
// vamos testar se o arquivo foi renomeado com sucesso
if(rename(arq_antigo, arq_novo) != 0){
cout << "Erro: " << strerror(errno) << endl;
}
else{
cout << "Arquivo renomeado com sucesso" << endl;
}
system("PAUSE"); // pausa o programa
return EXIT_SUCCESS;
}
É possível usar a versão Unicode de rename() ou _rename(). O método _wrename, também presente em io.h or stdio.h é útil quando precisamos internacionalizar nossas aplicações. Veja o exemplo:
#include <iostream>
using namespace std;
int main(int argc, char *argv[]){
// vamos renomear este arquivo
wchar_t arq_antigo[] = L"C:\\Dev-Cpp\\arquivo.txt";
wchar_t arq_novo[] = L"C:\\Dev-Cpp\\arquivo2.txt";
// vamos testar se o arquivo foi renomeado com sucesso
if(_wrename(arq_antigo, arq_novo) != 0){
cout << "Erro: " << strerror(errno) << endl;
}
else{
cout << "Arquivo renomeado com sucesso" << endl;
}
system("PAUSE"); // pausa o programa
return EXIT_SUCCESS;
}
|
Desafios, Exercícios e Algoritmos Resolvidos de C++ |
Veja mais Dicas e truques de C++ |
Dicas e truques de outras linguagens |
|
Android Java - Como detectar um clique em um botão do Android usando setOnClickListener() e exibir uma mensagem AlertDialog |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
|
1º lugar: Java |






