Você está na página 1de 4

1) O arquivo ÓbitosInfantisMG2013.

csv contém dados sobre mortes infantis


(até 5 anos) ocorridas em municípios de Minas Gerais, no formato abaixo:

Nesta tarefa você deverá desenvolver um programa que calcule o número total de mortes
infantis relatadas no arquivo. Um primeiro passo consiste na leitura do arquivo, isto é,
consiste em colocar em variáveis Scilab informações presentes no arquivo. A figura abaixo
ilustra o que desejamos desta etapa..

Do arquivo ÓbitosInfantisMG2013.csv queremos obter três vetores,


um, tabCodigosIBGE, contendo informações sobre códigos IBGE,
outro, tabMunicipios, nomes dos municípios e um terceiro, tabObitos, com o número
de óbitos infantis. Infelizmente, o Scilab não oferece nenhum comando ou função que faça
diretamente isso. Como sempre na programação de computadores, o que não podemos
fazer diretamente, fazemos por etapas.
Uma das funções que permitem a leitura de um arquivo é a mgetl(<nome do
arquivo>), que lê todas as linhas de um arquivo para um vetor coluna de strings, como
mostrado abaixo.

Depois disso, percorremos o vetor lido, extraindo os campos de cada linha e


acrescentando os valores dos campos lidos aos vetores que desejamos, como ilustrado na
figura abaixo.
Isso completa a etapa de leitura, e só o que resta a fazer é o cálculo da soma dos valores
dos elementos do vetor tabObitos.
Bom, vamos ao desenvolvimento.

=====================================================================
==
Parte 1: Extração de campos
Vamos começar pela extração dos campos de uma linha do arquivo de entrada. Construa
uma função [codigoIBGE,municipio,obitos] =
extraiCamposObitos(linha) que receba em linha um string com uma linha do
arquivo, e dessa linha extraia valores para os
campos codigoIBGE (string), municipios (string) e obitos (numérico)
Veja abaixo um exemplo de uso desta função:
-->linha = "315350; Alto Jequitibá;1";

-->[codigoIBGE,municipio,obitos] = extraiCamposObitos(linha)
obitos =
1.
municipio =
Alto Jequitibá
codigoIBGE =
315350
=====================================================================
=
Parte 2: Leitura do arquivo
Construa uma função [tabCodigosIBGE,tabMunicipios,tabObitos] =
leArquivoObitos() que utilize a função uigetfile para localizar um arquivo com
dados sobre óbitos infantis, e dali extrair os vetores
coluna tabCodigosIBGE, tabMunicipios e tabObitos, com os valores dos códigos
IBGE, nomes de municípios e número de mortes infantis presentes no arquivo. Sua função
deve funcionar para qualquer tamanho de arquivo, e deve fazer uso da
função extraiCamposObitos para extrair os campos de cada linha. Você deve
entretanto submeter um arquivo fonte contendo somente a função leArquivoObitos;
nós forneceremos a extraiCamposObitos.
Se você utilizar o comando mgetl para a leitura de todas as linhas do arquivo, como
aconselhamos acima, você deve eliminar o primeiro elemento do vetor de strings lido, que
corresponde à linha com o cabeçalho.

Para isso, você pode atribuir ao vetor linhas o vetor formado por seus elementos, do
segundo até o último.
Veja abaixo um teste feito utilizando o arquivo ÓbitosInfantisMG2013.csv:

-->[tabCodigosIBGE,tabMunicipios,tabObitos] = leArquivoObitos();

-->size(tabMunicipios)
ans =

587. 1.

-->tabCodigosIBGE(1:4)
ans =

!310020 !
! !
!310030 !
! !
!310050 !
! !
!310060 !

-->tabMunicipios(585:587)
ans =

!Virginópolis !
! !
!Visconde do Rio Branco !
! !
!Wenceslau Braz !
===================================================
Parte 3: Programa que lê o arquivo e calcula o número total de óbitos infantis.
Faça agora um programa que leia um arquivo com dados de óbitos infantis por município,
e imprima uma frase indicando o número de municípios presentes no arquivo, e o total de
óbitos infantis. Seu programa deve utilizar a função leArquivoObitos, mas você não
precisa submetê-la junto com o programa principal; nós forneceremos esta função.
Em um teste com o arquivo ÓbitosInfantisMG2013.csv nosso programa gabarito
imprimiu:
Em 587 municípios presentes no arquivo, encontramos 3141 óbitos infantis
Atenção:

 Seu programa deve funcionar para qualquer tamanho de arquivo


 Calcule o total de óbitos utilizando um loop; por motivos pedagógicos, você não deve
utilizar a função sum do Scilab (na prática, use a função sum; é muito mais rápida que
o loop).

Você também pode gostar