Julia – Arquivos de texto

Julia é uma linguagem de programação dinâmica de alto nível e alto desempenho. Embora seja uma linguagem de uso geral e possa ser usada para escrever qualquer aplicativo, muitos de seus recursos são adequados para análise numérica e ciência computacional.

Neste exemplo, vamos ter uma ideia de como abrir, escrever, editar e fechar arquivos de texto – no caso, o trecho inicial da letra da canção “Só Vou Gostar de Quem Gosta de Mim”, do Rossini Pinto, imortalizada por Roberto Carlos.

  • Design-time
println("1-Escrever")
println("2-Anexar")
println("3-Ler")
print("Escolha alternativa 1, 2 ou 3: ")
escolha = parse(Int64, readline())
print("Informe o nome do arquivo: ")
nome = readline()

function escrever(param)
	arquivo = open(param, "w")
	println("Entre com as linhas de texto - Ctrl-D para terminar")
	linhas = readlines()
	for l in linhas
		println(arquivo, l)
	end
	close(arquivo)
end

function anexar(param)
	arquivo = open(param, "a")
	println("Entre com as linhas de texto - Ctrl-D para terminar")
	linhas = readlines()
	for l in linhas
		println(arquivo, l)
	end
	close(arquivo)
end

function ler(param)
	arquivo = open(nome, "r")
	linhas = readlines(arquivo)
	close(arquivo)
	for l in linhas
		println(l)
	end
end


if escolha == 1
	escrever(nome)
elseif escolha == 2
	anexar(nome)
elseif escolha == 3
	ler(nome)
else
	println("Somente 1, 2 ou 3, por favor!")
end
  • Runtime
Julia rodando no terminal do Ubuntu 22.04 (Jammy Jellyfish), captura de tela com Peek
  • Sintaxe

A instrução de abertura de um arquivo pode ser feita de duas formas:

  • A primeira forma precisa de 2 strings como parâmetros : o nome do arquivo e o modo de manipulação: “w” (write), “a” (append) ou “r” (read):

objeto_arquivo = open(nome_do_arquivo, “w” | “a” | “r”)

#instruções para escrita e anexação com write() ou leitura com read(), readline() ou readlines()

close(objeto_arquivo)

  • A segunda forma dispensa o modo de manipulação e a instrução de fechamento:

open(nome_do_arquivo) do objeto_arquivo

#instruções…

end

  • Reflexões

O pensamento científico é um tipo de busca de conhecimento que envolve a busca intencional de informações, incluindo fazer perguntas, testar hipóteses, fazer observações, reconhecer padrões e fazer inferências.

A habilidade mais importante para um cientista da computação é a resolução de problemas. A resolução de problemas significa a capacidade de formular problemas, pensar criativamente sobre soluções e expressar uma solução de forma clara e precisa. Como se vê, o processo de aprender a programar é uma excelente oportunidade para praticar habilidades de resolução de problemas.

Lembre-se de aprender sempre: é preciso manter cérebro e corpo ativos para conquistar uma plena vida na maturidade.

Go – Arquivos de texto

Go é uma linguagem de programação compilada, estaticamente tipada e projetada no Google por Robert Griesemer, Rob Pike e Ken Thompson. É sintaticamente semelhante a C, mas com segurança de memória, coleta de lixo, tipagem estrutural e simultaneidade no estilo CSP. É muitas vezes referida como Golang devido ao seu antigo nome de domínio, golang.org, mas seu nome próprio é Go mesmo.

  • Design-time
package main
import (
	"fmt"
	"strings"
	"os"
	"io/ioutil"
	"bufio"
)

func main(){
	fmt.Println("Nome do arquivo:")
	var nome, escolha string
	fmt.Scan(&nome)
	
	for {
		fmt.Println("\nEscolha 1-Escrever / 2-Ler / Q-Sair:")
		_, err := fmt.Scan(&escolha)
		if escolha == "1" {
			escrever(nome)
		} else if escolha == "2" {
			ler(nome)
		} else if escolha == "Q" || err != nil {
			break
		} else {
			fmt.Println("Somente 1, 2 ou Q, por favor!")
		}
	}
}

func escrever(n string){
	file, err := os.Create(n)
	if err != nil{
		return
	}
	defer file.Close()

	fmt.Println("Entre o texto (ENTER duas vezes para sair):")
	reader := bufio.NewReader(os.Stdin)
	var lines []string	
	for{
		line, err := reader.ReadString('\n')
		if err != nil {
		}
		if len(strings.TrimSpace(line)) == 0 {
			break
		}
		lines = append(lines, line)
	}
	for _, l := range lines {
		file.WriteString(l)
	}
}

func ler(n string){
	data, err := ioutil.ReadFile(n)
	if err != nil{
		return
	}
	str := string(data)
	fmt.Println(str)	
}
  • Runtime
Go rodando no terminal do Ubuntu 22.04 (Jammy Jellyfish), captura de tela com Peek
  • Sintaxe

Para a manipulação de arquivos foram importados os pacotes os e io/ioutil.

Neste exemplo um novo arquivo de texto foi criado com a instrução

arquivo, _ := os.Create(nome_do_arquivo)

Nele as linhas de texto foram escritas com a instrução

arquivo.WriteString(linhas_de_texto)

O fechamento do arquivo foi realizado com a instrução

arquivo.Close()

Para leitura ou recuperação dos dados foi usada a instrução

dados, _ := ioutil.ReadFile(nome_do_arquivo)

  • Reflexões

O intervalo de praticamente um mês entre as publicações anterior e atual se deve ao fato de o autor ser iniciante na linguagem de programação Go. A parte mais difícil não foi a manipulação de arquivos, cujas instruções são simples e similares àquelas em outras linguagens, mas a captura das linhas de texto usando laços for e o tipo slice (array com tamanho variável).

Ao longo da vida há desafios que escolhemos ou não. Para todos os desafios, a fé é fundamental. Não a fé mística, religiosa, abstrata, ideológica, mas acreditar que algo é possível e acreditar em si mesmo, mesmo que outros não acreditem. Exceto talvez nos casos de acidentes e doenças, em que a probabilidade de superação pode ser 50%, dependendo da carga genética, do sistema imunológico e do tratamento farmacêutico e médico, em geral a superação depende significativamente de vontade, escolha, decisão, propósito, empenho, compromisso, fé, esperança. Experimente pensar e dizer sempre “é possível”, “eu posso”, “nós podemos”. Esse é o motor e a força necessária para superação de qualquer desafio, transformação, desenvolvimento, inovação, aprendizado.

Leitura recomendada hoje: Dez maneiras de superar os desafios que a vida traz a você.