Introdução ao Processamento de Dados e Programação – Parte 02

Introdução

No post anterior (Introdução ao Processamento de Dados e Programação – Parte 01), levantamos cinco possibilidades de calcular a média de uma lista de notas salvas em um arquivo texto, onde quatro delas usam um script ou um programa. Nesse post, vamos tentar resolver o mesmo problema com outras linguagens:  C++ ( Windows e Linux ), Java (Windows e Linux), Visual Basic .NET (Windows), e Linux Bash.

Recapitulando

Um arquivo texto (por exemplo “notas.txt) possui 30 linhas, cada linha com a nota da prova de um aluno — de 0 a 100 — e eu preciso criar um programa que leia todas as linhas do arquivo, calcule a soma de todas as notas, e calcule a média inteira das notas.

C++

Usando por exemplo o Visual Studio da Microsoft, podemos gerar um aplicativo sem dependências, que pode ser executado em qualquer máquina com Windows 7 pra cima — acho até que roda em Windows mais antigos, não tenho nenhum “na manga” pra teste.

#include <stdio.h>
#include <stdlib.h>
#include <fstream>
#include <sstream>
#include <string>

int main()
{
  int alunos = 0;
  int media = 0;
  int notas = 0;
  std::ifstream infile("notas.txt");
  std::string line;
  while (std::getline(infile, line))
  {
    notas += atoi(line.c_str());
    alunos++;
  }
  media = notas / alunos;
  printf("Alunos ........... %d\n", alunos);
  printf("Soma das notas ... %d\n", notas);
  printf("Media da Classe .. %d\n", media);
  
return 0;
}


E, o resultado obtido:

CalcNotas CPP

Este mesmo código foi compilado no linux (g++), e funcionou (quase) perfeitamente:

CalcNotas G++

— Tem uma diferença na contagem de linhas, um comportamento diferente entre plataformas. Faltou uma proteção no código para ignorar uma linha vazia — depois da ultima nota preenchida.

Java

O mesmo código abaixo foi compilado no Windows, e a classe gerada foi executada no Windows e no Linux, tranquilo — Claro, apos baixar o Java JDK do Windows (Ferramentas de desenvolvimento e compilação do Java) e o Java JRE (Máquina Virtual Java para executar aplicações) no Linux.

import java.io.*;

public class calcnotas 
{ 
  public static void main(String[] args)throws Exception 
  { 
    File file = new File("notas.txt"); 
    int alunos = 0;
    int notas = 0;
    int media = 0;
    BufferedReader br = new BufferedReader(new FileReader(file)); 

    String st; 
    while ((st = br.readLine()) != null) 
    {
      notas += Integer.valueOf(st);
      alunos++;
    }

    media = notas / alunos;

    System.out.printf("Alunos ........... %d\n", alunos);
    System.out.printf("Soma das notas ... %d\n", notas);
    System.out.printf("Media da Classe .. %d\n", media);

  }
}

Resultado no Windows

CalcNotas Java

Visual Basic .NET

Usando o Visual Studio 2017 com VB .NET, funcionou também. Alguns passos para criar uma aplicação “Console”, depois codificar, compilar, corrigir, compilar, debugar … pronto, funciona.

Imports System

Module Module1

  Sub Main()

    Dim fileReader As System.IO.StreamReader
    fileReader = My.Computer.FileSystem.OpenTextFileReader("notas.txt")
    Dim stringReader As String
    Dim notas As Integer
    Dim alunos As Integer
    Dim media As Integer
    notas = 0
    alunos = 0
    stringReader = fileReader.ReadLine()
    Do While stringReader IsNot Nothing
      alunos = alunos + 1
      notas = notas + Convert.ToInt32(stringReader)
      stringReader = fileReader.ReadLine()
    Loop
    media = notas \ alunos
    Console.WriteLine("Alunos ........... " + alunos.ToString())
    Console.WriteLine("Soma das notas ... " + notas.ToString())
    Console.WriteLine("Media da Classe .. " + media.ToString())

  End Sub

End Module

Resultado obtido:

CalcNotas VB

Linux Bash

O “bash” ou interpretador de comandos do Linux também possui funcionalidades excepcionais. Vamos calcular usando um script — calcnotas.sh

#!/bin/bash
input="notas.txt"
notas=0
alunos=0
while IFS= read -r line
do
  if [ ! -z "$line" ]
  then
    alunos=$(( alunos + 1 ))
    notas=$(( notas + line ))
  fi
done < "$input"
media=$(( notas / alunos ))
echo "Alunos ........... $alunos"
echo "Soma das notas ... $notas"
echo "Media da Classe .. $media"

Resultado obtido:

calcnotas_bash

Conclusão

Bem, por hora já temos bastante exemplos funcionais. Cada linguagem mostrada nestes posts tem as suas características especificas, sintaxe e comportamentos. Algumas são case-sensitive ( considera letras minúsculas são diferentes de maiúsculas ), em algumas (como Python) o espaçamento dos comandos (identação, espaços a esquerda de cada linha) definem inicio e final de bloco, em outras a identação é apenas uma boa prática … as declarações mudam, os tipos de dados também, os limites e comportamentos, cada uma tem o seu “charme” … E eu usei POR ENQUANTO APENAS 8 linguagens de exemplo 😀

Espero que estas informações lhes sejam úteis, ou pelo menos interessantes !!! E desejo a todos como sempre TERABYTES DE SUCESSO !!!