CONCEITOS FUNDAMENTAIS
O processamento de dados consiste, basicamente, em um conjunto de três partes fundamentais (Entrada, Processamento e Saída de dados) que são articuladas para se atingir as expectativas desejadas.
Entrada de dados: usa dispositivos eletrônicos que possibilitam o fornecimento de dados ao computador que os utilizará conforme as instruções contidas em seu algoritmo para se chegar aos resultados desejados. Vários são estes dispositivos como: teclado, mouse, etc.
Processamento: os dados obtidos pelos dispositivos de entrada serão processados conforme as instruções existentes no algoritmo, sendo ambos, os dados de entrada e resultados processados, armazenados na memória do computador. Esta parte, identificada como processamento, é relacionada diretamente com os dispositivos de armazenamento de dados (memória), pois são neles guardados os dados que serão acessados e manipulados pelo computador que procura atingir os resultados desejados.
Saída de dados: consiste na realização das instruções que estão sendo processadas pelo computador com o objetivo de mostrar os dados obtidos na execução do algoritmo. Esta apresentação acontece por meio dos dispositivos de saída de dados como: monitores ou vídeos, impressoras e outros recursos tecnológicos capazes de facilitar o acesso a estes dados alcançados.
A coleta e armazenamento de dados solicitados ao usuário de um algoritmo é realizada através dos dispositivos de entrada de dados. Estes dados são manipulados pelo processador respeitando rigorosamente as instruções contidas no algoritmo e buscando satisfazer as necessidades de seu usuário. Assim, se concebe a importante compreensão sobre os dados brutos que são necessários para geração da informação, que é contextualizada para um fim específico e atende as expectativas do usuário, tendo este acesso aos mesmos através dos dispositivos de saída de dados.
A efetivação de todo este processo só ocorre com dados que estejam armazenados em memória, sendo todos os seus recursos relacionados ao armazenamento e recuperação de dados de fundamental importância ao funcionamento do computador.
O uso da memória pelo computador é fundamental ao seu correto funcionamento, por isso é necessário, na elaboração do algoritmo, o fornecimento de nomes que identificaram os dados, informações ou recursos computacionais que possam estar armazenados na mesma. Um exemplo desta identificação é o seu próprio nome, que no meio de muitas pessoas quando for pronunciado você saberá que estão se referindo somente a você.
Na elaboração do algoritmo todos os recursos de armazenamento e manipulação de dados deverão ser identificados para serem acionados mediante seu nome específico de identificação. Conforme as características de definição de um identificador para os possíveis recursos computacionais a serem usados na construção dos algoritmos estará sendo abordado seus detalhes para utilização coerente com a programação eficiente dos computadores.
Os computadores atuais compreendem um conjunto de dados e informações através de seus recursos de arquitetura e operacionalização dos diversos dispositivos elétricos e eletrônicos que o compõe. Para o início da aprendizagem na área de Programação é relevante conhecer quais tipos de dados os computadores compreendem e aplicam suas características e propriedades coerentes com a realidade onde estes são usados. Estes tipos de dados podem ser classificados em Numéricos, Lógicos e Literais.
Numéricos: representados por valores definidos nos conjuntos matemáticos dos inteiros e reais, onde o ponto '.' separa a parte inteira da decimal. Exemplo: -0.59; 2.0; 0; -34; 597; 10
Lógicos: representados pelas palavras VERDADEIRO ou FALSO, respeitando as definições matemáticas contidas na Lógica Convencional ou Booleana.
Literais: formados por um ou vários símbolos (caracteres) aceitos na simbologia da linguagem (símbolos especiais, letras e dígitos) em questão. Estes valores são representados por seus símbolos válidos e correspondentes em nossa linguagem de comunicação (português), além de estarem sempre entre aspas (" ") no corpo descritivo das instruções contidas no algoritmo.
A especificação do grau de complexidade e o escopo de valores possíveis para um dado que será usado em um algoritmo exige a definição de seu tipo de dado, assim como o identificador que possibilitará seu armazenamento e manipulação em memória. A identificação de como um certo dado poderá se apresentar, qual a sua simbologia e quais operações e propriedades podem ser realizadas sobre o mesmo são definidas através da indicação de qual é seu tipo.
Os tipos de dados já reconhecidos pelo computador são chamados de escalares ou primitivos. Estes tipos são indicados no algoritmo por meio de palavras ou expressões chaves (inteiro, real, lógico, caracter) que são reservadas ao reconhecimento correto do computador que os utilizará no processamento do algoritmo.
Inteiro: corresponde ao conjunto matemático dos valores numéricos inteiros. Exemplo: 100, 0, -3
Real: corresponde ao conjunto matemático dos valores numéricos reais. Exemplo: 100, 0, -3, 1.7, 1000, -0.7
Lógico: conjunto de valores possíveis na lógica convencional (booleana) - FALSO ou VERDADEIRO. Esse tipo só apresenta um desses dois valores, sendo eles mutuamente exclusivos.
Caracter: valores alfanuméricos, contendo letras, dígitos (símbolos numéricos) e símbolos especiais, estando sempre descritos entre aspas (" "). O conjunto de caracteres consecutivos, como o nome de uma pessoa, uma frase, entre várias outras situações com caracteres, também é chamado de cadeia de caracteres ou String. Exemplo: "M", "Taguatinga - DF", "356-9025", "Taxa=10%", "#".
A especificação do tipo de dado correto é fundamental ao processamento do computador, pois ele reconhecerá quais dados podem ou não sofrer determinadas manipulações e quais as necessidades de espaços de memória necessários na efetivação do armazenamento de cada dado ou informação a ser utilizada no algoritmo.
Uma constante consiste em um recurso computacional que pode ser criado em um algoritmo, sendo ela capaz de armazenar um único valor de um tipo de dados definido durante toda execução deste algoritmo. Este recurso não está sujeito a variações no seu valor armazenado, ou seja, o valor guardado em uma constante não sofre alteração, se mantendo sempre constante após a sua criação.
A criação de uma constante exige a indicação de um identificador e um tipo de dado para mesma ser armazenada e acessada na memória do computador. Quando esta constante é criada com sucesso, ela ocupa uma área de memória que poderá ser acessada por meio de seu nome (identificador), mas seu valor inicial nunca poderá ser alterado enquanto seu algoritmo estiver em execução.
Sintaxe:
<tipo do dado> <identificador>; // CONSTANTE
A definição de uma constante consiste na criação de uma variável que não se altera durante toda uma execução do algoritmo (variável que não se altera consiste em uma constante).
Exemplo:
inteiro mesAtual; // CONSTANTE
real salario; // CONSTANTE
LEMBRETE: Não se pode modificar o conteúdo armazenado por uma constante.
Outro recurso computacional criado por um algoritmo e que permite a variação de seu valor armazenado na memória durante uma mesma execução deste algoritmo, é denominado variável. Os valores guardados por este importante recurso podem ser incertos, instáveis ou inconstantes, conforme a situação a ser processada pelo computador.
Similar às constantes, uma variável exige um tipo de dado conhecido pelo computador e um identificador para ser criada e manipulada na memória do mesmo. No entanto, este recurso pode guardar um ou vários valores de um mesmo tipo de dado nesta área de memória, conforme seja necessário ao computador processar o algoritmo elaborado e em execução.
Apesar da variável poder armazenar vários valores de um mesmo tipo, ela só consegue guardar um valor por vez, ou seja, o armazenamento de uma variável não é simultâneo de vários valores, mas somente um de cada vez (sobreposição dos valores de uma mesma variável na memória).
Analise o exemplo a seguir que almeja facilitar a compreensão dos conceitos relacionados ao uso de variáveis pelo computador.
No dia de seu aniversário sua tia lhe presenteou com uma linda pasta de couro e disse que esta era para você se lembrar sempre dela quando fosse guardar seus documentos profissionais. No entanto, ela se esqueceu que você está começando a faculdade e só daqui alguns anos é que isso poderá acontecer. Porém, por esta pasta ser muito bonita e resistente, você resolveu utilizá-la para outros fins, até a carreira profissional deslanchar. Assim, começa a frequentar a aula com a pasta e guardar seus materiais acadêmicos de estudo na mesma.
Dessa forma, sempre que for necessário encontrar algum material de estudo você saberá exatamente onde ele estará guardado (na bela pasta). Com o passar do tempo você trocou o conteúdo que estava sendo armazenado na pasta, passando a guardar os documentos e relatórios de seus estágios onde a mesma fazia sucesso entre os colegas que sempre lhe perguntavam onde você havia comprado-a. Com o desgaste natural de muito uso da pasta você teve que trocá-la, logo que a carreira começou a acontecer depois do término da faculdade.
Na situação ilustrada anteriormente pode-se observar a variação do conteúdo armazenado na mesma pasta. Esta variação aconteceu de acordo com a sua necessidade de armazenamento de coisas ao longo do tempo.
Uma variável também funciona assim, sendo ela um espaço de memória que o computador reserva para utilização de um algoritmo. Quando este termina, a variável deixa de existir na memória, assim como a pasta teve que ser deixada de lado após tanto uso.
Provavelmente não caberiam todos os livros de sua faculdade nesta pasta, e seria no mínimo impróprio tentar guardar somente água dentro dela. É por isso que uma variável deve ter o seu tipo de dado definido, indicando, exatamente, quais os dados e informações que poderão ser armazenadas e manipuladas com seu uso em um algoritmo.
Sintaxe:
<tipo do dado> <identificador>;
Exemplo:
inteiro dia;
real alturaPessoa;
Assim como na declaração de constantes, a declaração de variáveis define primeiro o tipo de dado a ser armazenado como seu conteúdo e qual o seu identificador (nome da variável). A principal diferença entre estes recursos é a possibilidade de modificação do conteúdo armazenado na variável, sendo ele alterado quantas vezes forem necessárias para o correto funcionamento do algoritmo. No entanto, as constantes possuem uma mesma sintaxe de definição, incluindo somente a expressão // CONSTANTE, porém elas não sofrem alteração durante toda execução do algoritmo, somente recebendo um valor que permanece inalterável durante toda esta execução.
O conhecimento relacionado a declaração de variáveis e constantes coerentes com a definição de seus tipos de dados adequados, para serem manipulados corretamente no processamento de um computador, estabelece o emprego de seus dispositivos de entrada e saída de dados no algoritmo.
Esses dispositivos são acionados por instruções computacionais definidas por palavras reservadas que possuem compreensão do computador sobre qual ação realizar e sobre qual dispositivo eletrônico. Os dispositivos de entrada de dados são acionados por meio da expressão chave (ou instrução) leia. Esta palavra reservada (leia) possui um significado definido às operações lógicas que serão realizadas pelo computador sobre seus recursos eletrônicos disponíveis (instalados). Por isso não se pode declarar nenhum identificador igual a uma palavra reservada na construção de um algoritmo, pois isso prejudicaria a lógica de execução relacionada a esta instrução e não permitiria a correta compreensão do computador sobre o que lhe está sendo solicitado executar.
Para os dispositivos de saída de dados a palavra reservada é escreva, que aciona os dispositivos disponíveis no computador que está executando o algoritmo. Porém, caso um algoritmo solicite a impressão de uma carta na impressora e este recurso não esteja instalado no computador em questão a carta não será impressa.
O uso desta instrução é responsável pelo recebimento de dados (entrada) fornecidos pelo usuário e armazenados em áreas reservadas da memória através da declaração de variáveis, pois as constantes só podem ter seu valor definido no próprio algoritmo. Tal instrução é utilizada para ler variá;veis inteiras, reais e textos. Esse dado será recebido por um dispositivo de entrada de dados, normalmente, sendo padronizado o teclado para tal operação.
Sintaxe:
leia(alturaPessoa);
Sendo alturaPessoa o identificador de uma variável que armazenará o dado coerentemente tipificado na declaração da variável logo no início do algoritmo.
Exemplo:
A criação da variável com identificador dia armazenará o número relacionado a um dia dentro de um mês.
inteiro dia; // cria uma variável inteira com identificador dia
leia(dia); // lê o dia informado pelo usuário e o guarda na variável dia
Suponha que o usuário de seu algoritmo informou o dia 25, tendo assim lido o valor desejado pelo usuário no processamento a ser efetuado pelo computador.
Dessa forma, o conteúdo da variável dia passou a guardar o valor 25, informado pelo usuário do algoritmo. Isto significa que uma determinada posição (endereço) de memória, identificada pelo nome dia, irá armazenar o dado fornecido 25.
A utilização dessa instrução é similar ao leia. Sendo que leiaCaracter é utilizado para ler variáveis do tipo caracter
Sintaxe:
leiaCaracter(sexo);
Sendo sexo o identificador de uma variável que armazenará o dado em uma variável do tipo caracter no início do algoritmo.
Exemplo:
A criação da variável com identificador sexo armazenará a primeira letra do sexo de uma pessoa, ou seja, letra m para masculino e f para feminino.
caracter sexo; // cria uma variável caracter com identificador sexo
leiaCaracter(sexo); // lê o sexo informado pelo usuário e o guarda na variável sexo
Esta instrução ou comando indica que determinados dados serão exibidos ao usuário do algoritmo que está sendo executado. Esse dado é exibido em um dispositivo de saída de dados instalado neste computador, sendo considerado como padrão o vídeo ou monitor (tela).
A instrução escreva pode apresentar o conteúdo armazenado em uma variável ou, exatamente, a mensagem de orientação especificada entre aspas por esta instrução. Observe o exemplo a seguir que melhora o exemplo anterior que usava a instrução leia.
Exemplo:
Além de criar a variável dia, o trecho do algoritmo a seguir orienta as ações do usuário e apresenta o valor armazenado por esta variável na memória do computador.
principal // Declarações inteiro dia; // cria uma variável inteira com identificador dia // Instruções escreva("Digite o dia de hoje:"); // orientação para ação do usuário leia(dia); // lê o dia informado e armazenado na memória do computador escreva(dia); // apresenta o conteúdo da variável dia escreva("foi armazenado com sucesso"); // mostra mensagem ao usuário fimPrincipal
Novamente, imagine que o usuário deste algoritmo informou o dia 25.
A primeira instrução escreva mostrará a mensagem fixa (conjunto de caracteres) descrita entre as aspas (" ") para orientar a ação do usuário no algoritmo que esta sendo executado pelo computador.
Em seguida é efetuada a leitura do dia informado e a segunda instrução escreva exibi o valor armazenado pela variável dia. Observe que não existem aspas nesta instrução porque se deseja apresentar o conteúdo armazenado por esta variável e não exatamente o nome da variável como uma mensagem (veja que não tem aspas, somente o identificador exato da variável).
A seguir é apresentada uma mensagem entre aspas que será exibida exatamente como está escrita entre estas aspas.
Observe o que será executado pelo trecho do algoritmo usado como exemplo anteriormente nesta representação da tela (ou vídeo) de seu computador que o está executando.
Repare na diferença do que será apresentado se for utilizada as possibilidades de sintaxe da instrução escreva. Suponha o algoritmo a seguir:
principal // Declarações texto nome; // cria uma variável caracter com identificador nome // Instruções escreva("Informe seu nome:"); // orientação para o usuário leia(nome); // lê e armazena o nome informada na variável nome escreva("Nome = ",nome); // mostra a mensagem entre aspas e o conteúdo da // variável nome fimPrincipal
O segundo escreva do algoritmo acima, apresenta uma mensagem entre aspas, e em seguida, após uma vírgula, é descrito o identificador que mostrará seu conteúdo. Por meio deste exemplo, é possível esclarecer que a instrução escreva pode apresentar vários valores em uma única instrução, porém todos eles devem estar separados por vírgula, além de respeitar a sintaxe para exibir cada mensagem ou conteúdo de variável ou constante guardado na memória do computador.
Existe ainda uma variação da instrução escreva que permite uma melhor organização da apresentação e orientação do usuário do algoritmo. Esta variação é a instrução escreval que realiza a mesma ação explicada anteriormente para instrução escreva, porém a escreval ainda salta uma linha após escrever todo o conteúdo especificado em sua instrução. Este salto de linha acontece na janela de execução do algoritmo após escrever tudo que lhe foi solicitado.
Alguns símbolos ou caracteres específicos são responsáveis pela execução de operações sobre os valores manipulados por um algoritmo, sendo estas operações completamente dependentes dos tipos de dados envolvidos. As principais operações realizadas em um algoritmo são aritméticas, relacionais e lógicas.
As operações aritméticas mais comuns são representadas pelos símbolos descritos na relação a seguir.
OPERAÇÃO | SÍMBOLO |
Soma | + |
Subtração | - |
Multiplicação | * |
Divisão real | / |
Exponenciação | exp(b, e) |
Divisão Inteira | \ |
Resto da Divisão Inteira | mod |
Exemplos:
2 + 3
altura * peso // usando variáveis declaradas no algoritmo
Os símbolos que solicitam a execução de operações relacionais na elaboração dos algoritmos são descritas a seguir.
OPERAÇÃO | SÍMBOLO |
Igualdade | == |
Diferença | != |
Maior | > |
Maior ou Igual | >= |
Menor | < |
Menor ou Igual | <= |
Exemplos:
5 < 7 // 5 é menor que 7?
altura == 1.64 // altura é igual 1.64?
4 != -4 // 4 é diferente de -4?
As operações lógicas são definidas pela Matemática, sendo seus símbolos apresentados na relação a seguir. Todas os aspectos existentes nestas operações são empregados na elaboração dos algoritmos.
OPERAÇÃO | SÍMBOLO |
Conjunção | e (E) |
Disjunção | ou (OU) |
Negação | nao (NAO) |
Exemplos:
falso e falso // resultará em falso
nao ano // inverte o valor contido na variável ano
((aux == ano) ou (5 < d)) // expressão matemática com operador ou
A operação de atribuição consiste em uma das mais importantes na manipulação dos conteúdos armazenados na memória do computador, pois ela é uma das operações responsáveis pela troca do conteúdo armazenado em variáveis, além do fornecimento do único valor possível para as constantes existentes nos algoritmos.
OPERAÇÃO | SÍMBOLO |
Atribuição | = |
A sintaxe desta operação é simples, mas não deve ser confundida com a operação matemática de atribuição de valores, sendo a atribuição computacional mais rígida em sua sintaxe. Esta operação sempre atribui a uma variável ou constante identificada à esquerda do símbolo de atribuição (=) o valor ou resultado da expressão existente à direita do deste mesmo símbolo.
Exemplo:
ano = 1893; // valor atribuído a variável ou constante ano
salarioJaneiro = 5.2 + 3.0; // valor atribuído a variável salarioJaneiro
A concatenação de textos se dá pelo operador + onde o mesmo é responsá;vel por ligar (juntar) os textos.
OPERAÇÃO | SÍMBOLO |
Concatenar textos | + |
Exemplo:
nomeCompleto = "Primeiro nome"+"ultimo nome"; // valor atribuído à nome completo
O desenvolvimento de algoritmos adequados e eficientes devem sempre respeitar um conjunto de normas ou regras para elaboração de uma representação correta a lógica que será realizada pelo mesmo. Por existirem várias maneiras de representar os raciocínios desejados, essas regras é que são responsáveis pela orientação na elaboração e compartilhamento dos mesmos, devendo sempre serem seguidas buscando a garantia de um algoritmo correto e claro a todos que lhe tenham acesso.
Para representação gráfica (fluxograma e Chapin) as figuras geométricas e os esquemas de diagramação corretos devem ser respeitados, enquanto que na representação descritiva (português estruturado) se deve seguir sempre o modelo descrito a seguir.
algoritmo exemplo; // Síntese // Objetivo: descrição resumida do que o algoritmo abaixo faz // Entrada: valores lidos pelos recursos de entrada de dados // Saída: valores apresentados pelos recursos de saídas de dados principal // Declarações <constantes> <variáveis> //Instruções <bloco de instruções> fimPrincipal
A definição deste modelo indica a primeira regra organizacional de todos os algoritmos que serão elaborados, sendo possível identificar com certa facilidade a existência de três blocos fundamentais na criação de um algoritmo, sendo eles:
sempre iniciado pelo marcador especial, que possui um significado implícito para a programação computacional, Síntese como comentário.
A síntese é formada por três itens relevantes ao processamento de dados: Objetivo - descreve sucintamente o que o algoritmo faz; Entrada - indica quais dados serão solicitados e lidos do usuário; Saída - indica os dados que serão apresentados ao usuário como resultados alcançados pelo processamento do algoritmo.
bloco sinalizado pelo comentário (//) Declarações
neste bloco são criados os recursos computacionais de variáveis, constantes e subprogramas utilizados no algoritmo.
este bloco termina na palavra reservada principal que indica também o começo do terceiro e último bloco (de instruções). O bloco de declarações pode ficar sem nenhuma instrução, de acordo com a necessidade da solução proposta.
inicia a partir da sinalização do comentário (//) Instruções, após a palavra reservada principal e o bloco de Declarações, sendo encerrado somente pela palavra reservada fimPrincipal, que termina a descrição total do algoritmo.
contém todas as instruções ou comandos que descrevem o que o algoritmo deve fazer (processamento do algoritmo).
neste bloco deve existir no mínimo uma instrução, caso contrário o algoritmo não existiria.
A abertura ou início do algoritmo é marcada pela palavra reservada algoritmo, que é obrigatória e identifica o algoritmo com fornecimento de seu nome significativo, que não segue as demais regras de identificação. Por exemplo: algoritmo modelo ou algoritmo mediaAritmetica. Note que a única restrição para nomeação do algoritmo é a NÃO utilização de caracteres especiais (acentos, espaços em branco, etc.) e nem espaços em branco.
Conhecendo a estrutura básica para elaboração de algoritmo, observe com atenção o primeiro algoritmo em português estruturado que respeita exatamente esta estrutura (regras).
algoritmo calculadora; // Síntese // Objetivo: calcular a adição entre dois números // Entrada : dois números // Saída : resultado da adição principal // Declarações inteiro num1, num2, resultado; // Instruções escreva ("Digite um número inteiro:"); leia(num1); escreval ("Digite o segundo número inteiro:"); leia(num2); resultado = num1+num2; escreva("Total = ",resultado); fimPrincipal
O correto processamento do algoritmo depende da sintaxe (palavras, expressões, pontuações) e da semântica coerente com a forma de representação adotada para representar o raciocínio desejado. Portanto, acompanhe com atenção as regras existentes em cada tipo de representação, pois isso lhe facilitará a elaboração das lógicas corretas, sendo estas normas um conjunto de regras que não tem exceções e garantem um algoritmo de qualidade desde sua concepção até a implementação final.
No intuito de fixar a aprendizagem iniciada por meio deste módulo e verificar como seu entendimento sobre este conteúdo está, estão sendo sugeridos alguns exercícios de fixação para serem resolvidos. Clique no link de exercícios ao lado, pois será por meio dele iniciada a lista de exercícios sobre os conteúdos estudados até este momento nesta disciplina.