Lista de Exercícios Resolvidos: Java | Python | VisuAlg | Portugol | C | C# | VB.NET | C++
Você está aqui: C++ ::: Dicas & Truques ::: Arquivos e Diretórios

Como renomear um arquivo em C++ usando a função rename()

Quantidade de visualizações: 11406 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);
Se o arquivo for renomeado com sucesso a função retornará o valor 0. O retorno será -1 se um erro ocorrer. Neste caso a variável global errno será definido como um dos seguintes valores:

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
......


É 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
......


Link para compartilhar na Internet ou com seus amigos:

MySQL ::: Dicas & Truques ::: Chaves, Índices e Restrições de Integridade Referencial

Como criar chaves primárias compostas em uma tabela do MySQL

Quantidade de visualizações: 882 vezes
Sabemos que o uso do atributo PRIMARY KEY (PK) permite marcar um campo de uma tabela MySQL como chave primária. Assim, este campo não poderá ter valores repetidos nem conter o valor NULL.

Há, no entanto, situações nas quais precisamos marcar mais de um campo como chave primária, ou seja, a chave primária é composta de dois ou mais campos. Estas situações surgem nos cenários em que temos relacionamentos N x N (muitos para muitos) e uma tabela associativa que represente o relacionamento.

Um exemplo disso é a relação autor-livro: um autor pode escrever vários livros e um livro pode ser escrito por mais um autor (vários autores em conjunto). Mas, o mesmo autor não pode aparecer no mesmo livro mais de uma vez. Vamos representar isso passo-a-passo.

Comece criando a tabela autores. Veja o comando CREATE TABLE completo para esta tarefa:

CREATE TABLE autores(
  id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  nome VARCHAR(45) NOT NULL,
......


Este comando CREATE TABLE vai gerar a seguinte estrutura:

Field    Type               Null   Key    Default   Extra     
id       int(10) unsigned   NO     PRI    -         auto_increment
nome     varchar(45)        NO            -
email    varchar(45)        NO            -
Note que defini o engine como InnoDB, uma vez que este tipo de armazenamento permite o uso de restrições de chaves estrangeiras, diferente do armazenamento MyISAM.

Vamos agora criar a tabela livros. Veja o comando CREATE TABLE completo:

CREATE TABLE livros(
  id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  titulo VARCHAR(45) NOT NULL,
......


Este comando CREATE TABLE vai gerar a seguinte estrutura:

Field     Type                Null    Key   Default    Extra
id        int(10) unsigned    NO      PRI   -          auto_increment
titulo    varchar(45)         NO            -
paginas   int(10) unsigned    NO            -
Pronto. Agora já podemos criar a tabela de ligação ou associativa que fará a ponte entre o autor e o livro que ele escreveu. Veja o comando CREATE TABLE que cria a tabela autores_livros:

CREATE TABLE autores_livros(
  id_autor int(10) unsigned NOT NULL,
  id_livro int(10) unsigned NOT NULL,
  PRIMARY KEY(id_autor,id_livro),
  KEY FK_autores_livros_2(id_livro),
......


Este comando CREATE TABLE vai gerar a seguinte estrutura:

Field      Type               Null   Key    Default     Extra        
id_autor   int(10) unsigned   NO     PRI    -           -
id_livro   int(10) unsigned   NO     PRI    -           -
Note que nesta tabela eu criei as chaves estrangeiras (FOREIGN KEY) e apliquei as restrições de integridade referencial, ou seja, não será possível excluir um autor ou livro se seus ids estiverem registrados na tabela autores_livros.

Agora experimente inserir dados nas tabelas autores e livros. Em seguida faça o relaciomento na tabela autores_livros. Tente repetir o id do autor para o mesmo livro. Imediatamente o MySQL recusará a inserção com a mensagem de erro:

Error 1062: Duplicate entry '2-2' for key 1

E, como usamos chaves estrangeiras na tabela autores_livros, ao tentarmos excluir um livro já relacionado com um autor, teremos a seguinte mensagem de erro:

Cannot delete or update a parent row: a foreign key constraint fails (`estudos/autores_livros`, CONSTRAINT `FK_autores_livros_2` FOREIGN KEY (`id_livro`) REFERENCES `livros` (`id`))

Veja mais dicas nesta seção para aprender mais sobre chaves estrangeiras e restrições de integridade referencial.


Firebird ::: Dicas & Truques ::: Tipos de Dados

Como usar o tipo de dados BLOB do Firebird para a gravação de imagens, vídeos e arquivos de música

Quantidade de visualizações: 17904 vezes
Um BLOB é um tipo de dados que permite armazenar grandes informações no formato binário (Binary Large OBject). Campos deste tipo podem conter dados binários ou ASCII, por exemplo, grandes arquivos de texto, documentos para o processamento de dados, arquivos de programas CAD, imagens e gráficos, vídeos, arquivos de música, etc.

O tamanho de um BLOB é quase ilimitado, uma vez que eles podem ser armazenados utilizando-se várias páginas. Isso assume, contudo, que um tamanho de página suficiente tenha sido fornecido para a base de dados. Por exemplo, usando uma página de 1kb, o tamanho do BLOB não pode exceder 0,5Gb. Se usarmos um tamanho de página de 4Kb, o tamanho do BLOB está limitado a 8Gb.

O Firebird suporta dois tipos pré-definidos de BLOB, diferenciados pelo atributo sub-type (palavra-chave SQL SUB_TYPE):

a) BLOB SUB_TYPE 0 - Este é o tipo BLOB genérico para o armazenamento de qualquer tipo de dados, incluindo texto. Geralmente chamado de "BLOB binário sem registro de tipo".

b) BLOB SUB_TYPE 1 (BLOB SUB_TYPE TEXT) - Sub-tipo mais especializado para o armazenamento de texto puro. É equivalente aos tipos CLOB e MEMO implementados em alguns bancos de dados (DBMS). É recomendado para uso com interfaces de aplicações tais como componentes RAD ou motores de pesquisa que fornecem um tratamento especial para tais tipos.

Veja um comando DDL CREATE TABLE que cria uma tabela contendo um campo do tipo BLOB (usando o sub-tipo text):

CREATE TABLE COMPROMISSOS (
  ID         INTEGER NOT NULL,
  DESCRICAO  BLOB SUB_TYPE 1 SEGMENT SIZE 4096 NOT NULL,
......


Aqui nós temos uma tabela com três campos: ID é do tipo INTEGER, DESCRICAO é do tipo BLOB com o sub-tipo 1 e DATA_HORA é do tipo TIMESTAMP. Veja agora um comando DML INSERT INTO que insere um registro nesta tabela:

INSERT INTO COMPROMISSOS VALUES(10, 'REUNIÃO COM CLIENTE - SÃO PAULO',
......


Note que os valores para campos do tipo BLOB devem ser fornecidos entre aspas simples. Agora, veja um comando SQL DML SELECT que lista o registro inserido anteriormente:

SELECT * FROM COMPROMISSOS;
......


Este comando vai gerar o seguinte resultado:

ID  DESCRICAO	                     DATA_HORA
10  REUNIÃO COM CLIENTE - SÃO PAULO  2/12/2010 12:30:00



PHP ::: Dicas & Truques ::: Strings e Caracteres

Como converter uma string para letras maiúsculas em PHP usando as funções strtoupper() e mb_strtoupper()

Quantidade de visualizações: 16223 vezes
As funções strtoupper() e mb_strtoupper() do PHP nos ajuda quando precisamos transformar uma string inteira para letras maiúsculas. Veja o seguinte exemplo:

<?php
  // uma frase contendo letras minúsculas
  $frase = "PHP? Eu gosto de PHP";
  echo "A frase é: " . $frase . "\n";
  
......


Ao executar este código PHP nós teremos o seguinte resultado:

A frase é: PHP? Eu gosto de PHP
A frase em letras maiúsculas é: PHP? EU GOSTO DE PHP

A função mb_strtoupper(), por sua vez, é usada quando a palavra, frase ou texto contém acentuações. Nas versões mais recentes do PHP, a função strtoupper() sozinha não consegue converter caracteres minúsculas com acentos para caracteres maiúsculas acentuados.

Por isso, a função mb_strtoupper() é usada. Veja:

<?php
  // uma frase contendo letras minúsculas
  $frase = "Java? Não gosto muito de Java não";
  echo "A frase é: " . $frase . "\n";
  
  // agora vamos transformá-la em letras
......


Ao executar este código PHP nós teremos o seguinte resultado:

A frase é: Java? Não gosto muito de Java não
Usando strtoupper(): JAVA? NãO GOSTO MUITO DE JAVA NãO
Usando mb_strtoupper(): JAVA? NÃO GOSTO MUITO DE JAVA NÃO

Veja que usei o valor "UTF-8" como segundo argumento para a função mb_strtoupper(). Se necessário você pode fornecer o valor "ISO-8859-1" também.


VB.NET ::: Fundamentos da Linguagem ::: Estruturas de Controle

Como usar o laço Do...While...Loop do VB.NET

Quantidade de visualizações: 17257 vezes
Um instrução de repetição (também chamada de laço ou loop) permite que um bloco de códigos seja executado repetidamente até que uma condição seja satisfeita.

O laço Do...While...Loop é usado quando queremos testar uma condição e, executar um bloco de código repetidamente enquanto esta condição for verdadeira. Lembre-se de que, se a condição já for falsa, o laço nunca será executado.

Veja um exemplo de laço Do...While...Loop que nos permite exibir os números de 0 a 10:

Dim numero As Integer = 0

Do While numero <= 10
......


Veja uma nova versão deste código, desta vez contando de 10 a 0:

Dim numero As Integer = 10

Do While numero >= 0
......


Aqui nós estamos novamente avaliando uma condição, ou seja, se o resultado da condição for True, a execução do laço continua. Se for False, o laço pára. Veja um exemplo no qual a condição booleana está bem explícita:

Dim pode As Boolean = True
Dim valor As Integer = 1

Do While pode
  Console.WriteLine(valor)
......



Java ::: Coleções (Collections) ::: ArrayList

Como testar se a ArrayList do Java está vazia usando a função isEmpty() - Java ArrayList para iniciantes

Quantidade de visualizações: 18263 vezes
Neste exemplo mostrarei como usar o método isEmpty() da classe ArrayList para verificar se a lista está vazia, ou seja, não contem nenhum elemento. Este método retorna true se a ArrayList estiver vazia e false em caso contrário.

Veja o exemplo a seguir:

package estudos_java;

import java.util.ArrayList;

public class Estudos{
  public static void main(String[] args){
    // cria uma ArrayList que conterá strings
    ArrayList<String> nomes = new ArrayList<>();
    
    // adiciona itens na lista
    nomes.add("Carlos");
    nomes.add("Maria");
    nomes.add("Fernanda");
......


Ao executar este código Java nós teremos o seguinte resultado:

A ArrayList não está vazia.


Desafios, Exercícios e Algoritmos Resolvidos de Java

Veja mais Dicas e truques de Java

Dicas e truques de outras linguagens

Quem Somos

Osmar J. Silva
Programador Freelancer
WhatsApp +55 (062) 98553-6711

Goiânia-GO
Programador Freelancer - Full Stack Developer, Professional Java Developer, PHP, C/C++, Python Programmer, wxWidgets Professional C++ Programmer, Freelance Programmer. Formado em Ciência da Computação pela UNIP (Universidade Paulista Campus Goiânia) e cursando Engenharia Civil pela PUC-Goiás. Possuo conhecimentos avançados de Java, Python, JavaScript, C, C++, PHP, C#, VB.NET, Delphi, Android, Perl, e várias tecnologias que envolvem o desenvolvimento web, desktop, front-end e back-end. Atuo há mais de 20 anos como programador freelancer, atendendo clientes no Brasil, Portugal, Argentina e vários outros paises.
Entre em contato comigo para, juntos, vermos em que posso contribuir para resolver ou agilizar o desenvolvimento de seus códigos.
José de Angelis
Programador Freelancer
WhatsApp +55 (062) 98243-1195

Goiânia-GO
Programador Freelancer - Formado em Sistemas de Informação pela Faculdade Delta, Pós graduado em Engenharia de Software (PUC MINAS), Pós graduado Marketing Digital (IGTI) com ênfase em Growth Hacking. Mais de 15 anos de experiência em programação Web. Marketing Digital focado em desempenho, desenvolvimento de estratégia competitiva, analise de concorrência, SEO, webvitals, e Adwords, Métricas de retorno. Especialista Google Certificado desde 2011 Possui domínio nas linguagens PHP, C#, JavaScript, MySQL e frameworks Laravel, jQuery, flutter. Atualmente aluno de mestrado em Ciência da Computação (UFG)
Não basta ter um site. É necessário ter um site que é localizado e converte usuários em clientes. Se sua página não faz isso, Fale comigo e vamos fazer uma analise e conseguir resultados mais satisfatórios..

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: Delphi
6º lugar: C
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2024 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 10 usuários muito felizes estudando em nosso site.