Curso de Sistemas de Informação - Computador de papel: o ...



Curso de Sistemas de Informação

Disciplina: Algoritmos – 1º e 2º Períodos – Turmas 216071A, 216071B e 216062

Notas de Aula – Aulas 01, 02 e 03.

Professor: Edkallenn

1. Objetivos

• Situar a atividade de programação de computadores

• Apresentar conceitos fundamentais relativos à programação de computadores

2. Motivação

A programação de computadores é uma atividade que leva à representação dos passos necessários à resolução de um problema em linguagem de programação. Para dar início ao aprendizado dessa atividade, é importante compreender seu contexto, seu propósito, os conceitos básicos subjacentes, bem como tomar contato com o ferramental necessário a sua realização.

3. Conceitos

1. Introdução

A Informática engloba toda atividade relacionada ao desenvolvimento e uso dos computadores que permitam aprimorar e automatizar tarefas em qualquer área de atuação da sociedade. Podemos definir a informática como a “ciência do tratamento automático das informações”. Muito mais que visar simplesmente a programação de computadores para executar tarefas específicas, a informática estuda a estrutura e o tratamento das informações sob suas mais variadas formas: números, textos, gráficos, imagens, sons, etc.

O computador em si intervém apenas como um instrumento para agilizar o tratamento da informação, e não como seu objetivo final. A informática busca criar uma abstração da realidade dentro de um sistema de computação, com o objetivo de reproduzi­la mais fielmente possível e assim poder substituí­la, ou melhorar sua compreensão.

O profissional de Informática vai atuar basicamente no desenvolvimento do que se pode chamar de um Sistema Computacional, o qual abrangem a combinação de hardware (circuitos), software (programas) e outros elementos essenciais.

A crescente evolução na área de Informática, particularmente no que diz respeito ao desenvolvimento de equipamentos de informática (processadores cada vez mais velozes, o surgimento de novas tecnologias de armazenamento de dados e novos periféricos), aliada às constantes quedas nos preços do hardware, possibilitou um avanço das atividades relacionadas à informática na quase totalidade das atividades humanas, iniciando pelas Engenharias e atingindo as mais diversas áreas como a Medicina, as Artes, o Entretenimento, a Economia, etc...

Como conseqüência disto, é real a necessidade de que em cada área, os profissionais desenvolvam um conhecimento da tecnologia de Informática que seja útil na solução dos problemas relacionados com o seu eixo profissional.

Nesta aula inicial, serão apresentados os conceitos básicos da Informática, partindo dos principais conceitos relacionados às arquiteturas de computadores até introduzir os primeiros aspectos relativos à programação e das linguagens utilizadas na programação de computadores.

2. O que é um computador? Para que serve?

(de sofisticada máquina de calcular à mídia)

• “Um computador é uma coleção de componentes que realizam operações lógicas e aritméticas sobre um grande volume de dados.” (Miyazawa, 2001)

• Computador é ferramenta de trabalho (ex. editores de textos, planilhas, sistemas de informação, etc).

• Computador é mídia: serve como canal na comunicação humana (ex. FAX, Web, ICQ, apresentação multimídia, etc).

• O computador é uma máquina capaz de receber, armazenar, tratar e produzir informações de forma automática, com grande rapidez e precisão. A evolução dos sistemas de computação teve seu início no século 16, mas estes somente mostraram-se úteis neste século, e sua vulgarização se deu graças à recente evolução na micro-eletrônica.

3. Como funciona um computador?

(organização de um computador)

Figura 1: Organização Básica de um Computador Seqüencial (Miyazawa, 2001:1)

O computador pode ser considerado uma máquina programável genérica, constituída por unidades de entrada, de processamento e de saída de dados.

4. Modelo de Von Neumann

A grande maioria dos computadores existentes atualmente segue um modelo proposto pelo matemático americano Von Neumann, por volta de 1940. Nesse modelo, um elemento processador segue as instruções armazenadas em uma memória de programas, para ler canais de entrada, enviar comandos sobre canais de saída e alterar as informações contidas em uma memória de dados. A 0 indica a estrutura desse modelo.

Fig 1 – Modelo de Von Neuman

Esse modelo inicial evoluiu para uma estrutura em barramento (0), que é a base dos computadores modernos. Nessa estrutura, as memórias de dados e de programa são fundidas em uma memória única, e as comunicações entre elementos são efetuadas através de uma via comum de alta velocidade:

[pic]

Fig 2 – Estrutura em Barramento

5. – Lógica e Algoritmo

A lógica é a “arte de bem pensar”. É a “ciência das formas do pensamento”. O raciocínio é a forma mais complexa do pensamento e a lógica estuda a “correção do raciocínio”. Podemos ainda dizer que a lógica tem em vista a “ordem da razão”, por isso, ela estuda e ensina a colocar “ordem no pensamento”.

Lógica de programação é a técnica de encadear pensamentos para atingor determinados objetivos.

O objetivo principal do estudo da lógica de programação é a construção de algoritmos coerentes e válidos.

Um algoritmo pode ser definido como uma seqüência de passos que visam atingir um objetivo bem definido. Ou como uma seqüência ordenada e finita de passos, cuja execução, passo a passo resolve um determinado problema.

Observe que a definição de problema é bastante genérica, o que nos permite imaginar algoritmos para as mais variadas situações, não necessariamente de caráter computacional ou algébrico. Na verdade nossa própria memória e o dia a dia da experiência cotidiana já são recheados e permeados por algoritmos.

Na medida em que precisamos especificar uma seqüência de passos, precisamos utilizar ordem, ou seja, “pensar com ordem”, portanto precisamos utilizar a lógica.

Algoritmos são comuns no nosso cotidiano, como, por exemplo, uma receita de bolo. Nela está descrita uma série de ingredientes necessários e uma seqüência de diversos passos que devem ser fielmente cumpridos para que se consiga fazer o alimento desejado, conforme se esperava antes do início das atividades (objetivo bem definido).

Quando elaboramos um algoritmo devemos especificar ações claras e precisas, que a partir de um estado inicial, após um período de tempo finito, produzem um estado final previsível e bem definido. Isto significa que o algoritmo fixa um padrão de comportamento a ser seguido, uma norma de execução a ser trilhada, com vistas a alcançar, como resultado final, a solução de um problema, garantindo que sempre que executado, sob as mesmas condições, produza o mesmo resultado.

Programar é basicamente construir algoritmos. Ou transcrever os algoritmos para uma linguagem de programação de alto nível como C, C++, Pascal, Basic ou Java.

Na verdade, um programa pode ser definido como um algoritmo escrito em uma linguagem de computador.

Vamos utilizar a nossa linguagem corrente para descrever o comportamento na resolução de uma determinada atividade, como, por exemplo, a troca de uma lâmpada queimada.

Algoritmo trocar lâmpada queimada

1. acionar o interruptor;

2. se a lâmpada não acender, então

1. pegar uma escada;

2. posicionar a escada embaixo da lâmpada;

3. buscar uma lâmpada nova;

4. subir na escada;

5. retirar a lâmpada queimada;

6. colocar a lâmpada nova;

7. acionar o interruptor;

8. enquanto a lâmpada não acender, faça

1. retirar a lâmpada queimada;

2. colocar uma lâmpada nova;

3. acionar o interruptor;

4. fim do enquanto

9. fim do se;

Fim do Algoritmo

Repare que cada linha tem um verbo no infinitivo, um comando, uma ação, uma Instrução.

Instrução é a informação que indica a um computador uma ação elementar a ser executada.

4. Programação Estruturada

Programação estruturada é a técnica de construir e formular algoritmos de uma forma sistemática. Consiste numa metodologia de projeto de programas visando facilitar a escrita, a leitura, a verificação a priori, a manutenção e a modificação de programas. Os algoritmos estruturados utilizam em sua sintaxe um número muito limitado de instruções e estruturas básicas (seqüência, seleção e repetição), que correspondem a formas de raciocínio intuitivamente óbvias.

5. Formas de representação de algoritmos

5.6.1 – Descrição Narrativa

Uso da linguagem natural, como no nosso primeiro exemplo.

Temos a inconveniência da má interpretação, originando ambigüidades e imprecisões. Vejamos mais um exemplo: a troca de um pneu furado.

Analisar as ambigüidades e imprecisões.

Algoritmo

- afrouxar ligeiramente as porcas;

- suspender o carro;

- retirar as porcas e o pneu;

- colocar o pneu reserva e as porcas;

- abaixar o carro;

- dar o aperto final nas porcas.

Vantagens:

• O português é conhecido por todos e é fácil de ler e entender.

Desvantagens:

• Imprecisão;

• Pouca confiabilidade (a imprecisão acarreta desconfiança)

• Extensão (normalmente se escreve muito para dizer pouco).

5.6.2 – Fluxograma

Uso de formas geométricas distintas produzindo ações distintas.

Principais figuras:

Início ou fim do fluxograma.

Entrada de dados.

Cálculo de expressões.

Saída de resultados.

Tomada de decisão

Fluxo.

Exemplo: Cálculo de uma média aritmética com um teste.

Vantagens:

• O fluxograma é uma das ferramentas mais conhecidas;

• Figuras dizem mais do que palavras;

• Padrão Mundial.

Desvantagens:

• A solução é amarrada a dispositivos físicos;

• Pouca atenção aos dados, não oferecendo recursos para descrevê-los ou representá-los coerentemente;

• Complicação à medida que o algoritmo cresce.

5.6.3 – Linguagem Algorítmica, Pseudocódigo, Portugol ou Português Estruturado

Uso de linguagem própria, aproximando-se mais das linguagens de alto nível, chamado, também de pseudolinguagem ou ainda portugol.

Uma linguagem natural (português, inglês, espanhol, etc.) apresenta o inconveniente da ambigüidade de alguns termos, apesar de muitos recursos de comunicação.

Uma linguagem de programação apresenta os inconvenientes das poucas instruções existentes (poucos recursos de comunicação) apesar da grande precisão nos comandos.

Vantagens:

• Independência física da solução;

• Usa o Português como base;

• Pode-se definir quais e de que forma os dados serão estruturados;

• Passagem quase imediata do algoritmo para uma linguagem de programação qualquer.

Desvantagens

• Exige a definição de uma linguagem não real para o trabalho;

• Não padronizado.

Forma geral:

algoritmo "semnome"

// Função :

// Autor :

// Data : 28/2/2007

// Seção de Declarações

var

// seção de variáveis

inicio

// Seção de Comandos

fimalgoritmo

Exemplo: Cálculo da média do exemplo anterior.

Algoritmo Média_do_aluno

var

m1,m2,media: real

inicio

escreva(“Digite as duas notas:”)

leia(m1,m2)

media ( (m1+m2)/2

se (média >= 7) então

Escreva (“APROVADO”)

senão

Escreva (“REPROVADO”)

Fim_se

fimalgoritmo

Posteriormente, veremos detalhadamente cada item desse algoritmo.

A partir desse momento daremos toda atenção, somente, a este tipo de representação de algoritmo.

O pseudocódigo não tem os inconvenientes da ambigüidade de uma linguagem natural, nem os rigores de uma linguagem de programação de alto nível. É um português estruturado em “frases” (comandos) correspondentes as estruturas básicas de programação.

Características de um Algoritmo:

Todo algoritmo tem algumas características básicas:

• Tem fim;

• Não dá margem à dupla interpretação (não ambíguo);

• Capacidade de receber dado(s) de entrada do mundo exterior;

• Pode gerar informações de saída para o mundo externo ao do ambiente do algoritmo;

• É efetivo. (Todas as etapas do algoritmo são alcançadas em um tempo finito).

Passos para a construção de algoritmos.

1. Identificar o problema (objetivo) mediante leitura atenta de seu enunciado.

2. Retirar do enunciado as “entradas de dados”, ou seja, identificar os dados que devem ser fornecidos e, a partir deles, verificar se desenvolverão os cálculos/processamento.

3. Retirar do enunciado as “saídas de dados” que devem ser gerados como resultado da solução.

4. Determinar o que deve ser feito para transformar as “entradas” nas “saídas” (processamento) desejadas. Para isto é preciso:

a. Observar regras e limitações do agente executante do algoritmo (no caso, o computador).

b. Determinar as ações possíveis de serem realizadas.

5. Construir o Algoritmo, utilizando uma das formas de representação de algoritmos.

6. Testar a Solução

Antes de formalizar o algoritmo, devemos identificar os itens 2, 3, 4, ou seja, entrada, processamento e saída. Pode se fazer isso, respondendo às perguntas:

O que preciso? ( (Entrada)

Como chegar ao que quero? ( (Processamento)

O que quero? ( (Saída).

Algoritmos pedidos (em forma narrativa):

Chupar bala, fazer café, atravessa uma rua, sacar dinheiro no caixa eletrônico, escovar os dentes, tomar banho, trocar uma lâmpada, somar dois números, fazer uma ligação em telefone público, calcular o dobro de um número, calcular o triplo de um número, calcular a área de um quadrado, calcular a média do bimestre, descascar batatas, fritar um ovo, fazer um bolo simples, resolver uma prova e fazer um suco de laranja.

Lista de exercícios 1 – RESOLVER TODOS OS ALGORITMOS ACIMA E ENVIAR PARA O PROFESSOR EM SOMENTE UM ARQUIVO.

Email para envio: edkevan@

Não esquecer de colocar a turma e o nome do aluno.

Apêndice da Aula 01- Alguns Termos técnicos

Hardware: componentes mecânicos e eletro-eletrônicos que compõem o computador. Parte dura do computador.

Software: seqüência de instruções e comandos que fazem o computador realizar determinada tarefa, também chamados de programas de computador. Devem estar armazenados em algum tipo de memória.

Bit: menor unidade de informação de um computador (pode assumir os valores 0 ou 1).

Bytes: conjunto de oito bits.

Periférico: é qualquer componente do computador (hardware) que não seja a CPU. Ex.: leitoras de disquete, monitores, teclados, vídeos, impressoras, etc.

Sistema Operacional: coleção de programas que gerencia e aloca recursos de hardware e de software. Exemplos de tarefas que um sistema operacional realiza são: leitura de dados pelo teclado, impressão de informações no vídeo, gerenciamento da execução de vários programas pela CPU, gerenciamento da memória principal e da memória secundária para uso dos programas em execução, etc. Ex.: Linux, Unix, Windows XP, OS2, MS-DOS.

Linguagem de Máquina: conjunto de instruções que podem ser interpretados e executados diretamente pela CPU de um dado computador. É específica para cada computador.

Linguagem Assembler (Linguagem de Baixo Nível): Representação da linguagem de máquina através de códigos mnemônicos. Também é específica de cada máquina.

Linguagem de alto nível: linguagem que independe do conjunto de instruções da linguagem de máquina do computador. Cada instrução de alto nível eqüivale a várias instruções da linguagem de máquina, sendo assim mais produtiva. Ex.: Pascal, C, Algol, BASIC, Lisp, Prolog, etc.

Compilador: tradutor de programas escritos em uma linguagem de programação para programas em linguagem de máquina (ex. GCC). Uma vez que o programa foi convertido para código de máquina, este pode ser executado independente do compilador e do programa original.

Figura 4: Etapas para execução de um programa compilado (Miyazawa, 2001:3)

Interpretador: é um programa que executa outros programas escritos em alguma linguagem de programação. A execução de um programa interpretado é em geral mais lenta que o programa compilado. Por outro lado, o uso de programas interpretados permite que trechos de código possam ser trocados por novos facilmente, fazendo com que o programa fonte possa mudar durante sua execução. Este é um dos grandes motivos de se usar programas interpretados em sistemas especialistas. Duas linguagens para as quais podemos encontrar interpretadores são Basic e Prolog.

Figura 5: Execução de um programa interpretado (Miyazawa, 2001:3)

-----------------------

Unidade de Controle

Memória RAM

Memória ROM

Memória Cache

Unidade Lógica e Aritmética

Registradores

Unidades de Saída

Unidades de Entrada

Memórias Secundárias

Programa Fonte

Compilador

Programa Executável

Sistema Operacional

CPU

Geração do Programa Executável

Programa Executável

Sistema Operacional

CPU

Execução do Programa

Interpretador

Sistema Operacional

CPU

Programa Fonte

Fim

“Reprovado”

“Aprovado”

m >=7 >=5

m (m1+m2)/2

m1, m2

Início

[pic]

Sim

Não

................
................

In order to avoid copyright disputes, this page is only a partial summary.

Google Online Preview   Download