


































































Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Encontra documentos específicos para os exames da tua universidade
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Componentes básicos de um computador, Linguagem de programação
Tipologia: Notas de estudo
1 / 74
Esta página não é visível na pré-visualização
Não perca as partes importantes!



































































Prof. Augusto Antonio Pinheiro Neto Curso de Licenciatura em Matemática – UFPBVIRTUAL [email protected]
Ambiente Virtual de Aprendizagem: Moodle www.ead.ufpb.br Site da UFPBVIRTUAL www.virtual.ufpb.br Telefone UFPBVIRTUAL (83) 3216 7257
Carga Horária: 60 horas Créditos: 04
Nesta disciplina apresentaremos a configuração básica de um computador, de modo que o aluno tenha uma compreensão geral de sua arquitetura. Estudaremos em seguida uma linguagem de programação imperativa, permitindo capacitar o aluno na programação de resoluções de problemas numéricos.
Ao final da disciplina o aluno deverá ser capaz de:
compreender a arquitetura básica de um computador, programar as operações de entrada\saída, programar operações básicas como: atribuição de valores a variáveis ou constantes, permutação de valores entre duas variáveis, uso de acumuladores de soma e de produtos, programar os diversos tipos de decisão e de repetição (laços), compreender os principais tipos de dados inerentes à linguagem estudada, trabalhar com funções (elemento de programação) elaborar algoritmos de resolução de diversos tipos de problemas numéricos, programar esses algoritmos
Os computadores estão cada vez mais presentes no dia-a-dia dos cidadãos. Mesmo aqueles que não os utilizam diretamente têm essas máquinas ligadas às suas vidas. Basta nascer para que as informações referentes ao novo cidadão passem a fazer parte de algum banco de dados, por exemplo, o do hospital onde a criança nasceu. Ao registrá-la, o pai (a mãe) estará contribuindo para alimentar outro banco de dados, o do cartório de registros civis. Ao iniciar seus estudos oficiais, novas informações serão transferidas para os computadores, desta vez os da escola. E assim será por toda a vida, imagino. A informação deve ser armazenada e disseminada no momento necessário. Seria bom então entender um pouco sobre essas máquinas que nos acompanham por toda a vida.
Os computadores são sistemas eletrônicos de processamento de dados, compostos de uma parte física, denominada hardware e de uma parte lógica, denominada software. O hardware é formado por um conjunto de funções lógicas, geralmente associadas a um ou mais equipamentos físicos, capazes de executar determinadas tarefas. Iniciamos os nossos estudos sobre programação apresentando uma noção sobre a configuração básica de um computador.
As funções lógicas associadas ao hardware de um computador são geralmente agrupadas em blocos chamados de unidades funcionais. Um computador possui as seguintes unidades funcionais básicas, compostas de circuitos eletrônicos específicos:
As unidades de Entrada são blocos funcionais compostos por circuitos eletrônicos com a finalidade específica de transmitir dados do meio exterior para a memória do computador. As unidades de Saída realizam a operação inversa, transmitem dados da memória do computador
**3. 1 Unidades funcionais básicas
Teclado Mouse Leitor de disquete Scanner Tela sensível Leitor de CD, DVD
Monitor (Vídeo) Impressora Gravador de disquete Gravador de CD, DVD
Por memória, compreende-se todo dispositivo capaz de guardar qualquer dado ou informação. A memória principal de um computador é o local onde estão armazenados os programas e dados que são utilizados durante um processamento. Todo dado ou programa a ser processado deve estar na memória principal do computador. Caso esses dados estejam armazenados em disquetes, Cd’s ou HD’s, será necessário, primeiro, transferi-los para a memória principal. A memória principal do computador possui a característica de ser volátil, isto é, caso o computador seja indevidamente desligado (falta de energia elétrica, por exemplo), todo o seu conteúdo será perdido, ou seja, tornar-se-á inacessível. A memória principal de um computador existe na forma de “pentes de memória” como mostrado nas figuras a seguir. Atualmente, os pentes de memória, mais encontrados, instalados nos microcomputadores são os de 256 MBytes, 512 MBytes, ou 1GBytes.
As memórias estão representadas em duas grandes categorias de chips: RAM (random access memory): são chips de memória que podem ser lidos e/ou gravados pela CPU. A memória principal é deste tipo. ROM (read only memory) : são chips de memória que podem apenas ser lidos pela CPU. Uma memória ROM é permanente e sua gravação é feita pelo fabricante do computador, ou pelo fabricante de memórias. Um conjunto específico de programas, necessários à inicialização de um computador, denominado BIOS, localizado na placa mãe do computador, está encapsulado em uma memória deste tipo.
A unidade central é o elemento funcional central de todo computador. É o “coração”, ou melhor, o “cérebro” do computador. Nesta unidade são realizadas todas as operações. Todas as informações tratadas pelo computador transitam por esta unidade funcional. A unidade central é também conhecida por CPU (Central Processing Unit), Unidade Central de Processamento e é dividida classicamente em três partes:
I - Unidade de Controle , responsável pela extração das instruções da memória do computador e por sua análise. Essa unidade controla dois registros especiais denominados CONTADOR DE INSTRUÇÃO (PC) que contém o endereço de memória da próxima instrução a ser executada e REGISTRO DE INSTRUÇÕES que contém a instrução extraída da memória. É a unidade de controle que gerencia todos os eventos necessários à operação do computador.
II - Unidade de Aritmética e Lógica (UAL) controla um conjunto de registros que devem conter os códigos dos operandos e do operador, necessários à realização de uma operação aritmética ou lógica. Exemplos de operações aritméticas: adição, subtração, multiplicação ou divisão de números. Exemplos de operações lógicas: comparação de dois valores alfabéticos, operações envolvendo operadores os booleanos, AND, OR e NOT.
**3. 6 Memória Principal
Memória DDR2- 533 1GB Memória 256 MB
Nos dias atuais, uma CPU está completamente embutida em uma pastilha, denominada chip, de dimensões reduzidas. As primeiras CPUs integradas em um único chip foram a CPU 4004 e a CPU 8008. Hoje esses chips são mais conhecidos no mercado pelo nome de processador ou microprocessador.
Em 1974 a Intel fabricou o 8080, o primeiro microprocessador a ser usado em larga escala nos chamados "computadores pessoais". Antes dele, os microcomputadores eram usados apenas em laboratórios científicos, em fábricas e em universidades.
III - Registradores , memórias especiais, de alta velocidade, localizadas no interior de um microprocessador, enquanto a memória principal é externa a este. Cada registrador possui uma função específica. Dentre os registradores destacam-se os seguintes:
Contador de programa (PC - Program Counter), que aponta para a próxima instrução a executar. Registro de instrução (IR - Instruction Register) que armazena a instrução em execução. Outros registros que permitem o armazenamento de resultados intermediários.
Clock Clock é um circuito oscilador que tem a função de sincronizar a velocidade de transferência de dados entre duas partes durante um processamento. Por exemplo, a transferência de dados entre o processador e a memória principal. Essa velocidade de transferência (freqüência) é medida em ciclos por segundo, ou Hertz. A velocidade de acesso dentro do processador é maior que na memória principal. Os processadores Pentium-100, Pentium II-300, acessam a memória principal a 66 MHz.
Sistemas operacionais são conjuntos de programas que permitem explorar (fazer funcionar) o computador. Atualmente os sistemas operacionais mais conhecidos são Windows e Linux. Um computador é um conjunto de materiais inertes. São as diversas camadas de software que fazem com que ele funcione. Quando ligado à rede elétrica, uma primeira camada de software, sempre a mesma, é posta em ação. Esta camada foi gravada diretamente no hardware: é a BIOS ( Basic Input/Output System ). Esta camada realiza certo número de verificações e de testes (presença de diversos periféricos, volume de memória, etc). Após isso o sistema operacional assume o controle. É o sistema operacional que permite aos humanos dialogar com os computadores. Segundo o grau de convivialidade do sistema, esse diálogo será mais ou menos amigável, podendo ser textual, gráfico ou uma mistura desses. A partir do sistema operacional o usuário pode então lançar os aplicativos (programas específicos).
Todo arquivo é visto e tratado do mesmo modo pelo sistema operacional em vista de seu armazenamento em disco. Tecnicamente, um arquivo é um conjunto de bits formando uma entidade identificada por um nome e uma extensão seguindo a forma: nome.ext. Somente a sua extensão é capaz de determinar a natureza e assinalar ao sistema operacional o que esse arquivo é capaz de fazer. Assim, um arquivo .doc é reconhecido como um programa Word, um arquivo .xls é reconhecido como um arquivo do Excel e esses softwares são carregados na memória para execução. Alguns arquivos de imagens (.jpeg ou .jpg, .gif, .png, etc.) necessitam de um visualizador de imagens instalado no computador para que essas imagens possam ser exibidas na tela. Por padrão, está previsto que esses arquivos podem ser abertos no Internet Explorer, capaz de exibi-los a partir de páginas da Internet.
Dependendo do sistema operacional, existem regras com mais ou menos restrições para dar nomes aos arquivos. No MS-DOS, antigo sistema operacional, os nomes de arquivo deveriam ter no máximo 8 caracteres com uma extensão de três caracteres. A partir do Windows 95 os nomes dos arquivos passaram a ter até 256 caracteres (incluindo o caminho onde se encontra o arquivo, por exemplo, C:\programas\C\programa1.exe).
**3. 9 Sistemas Operacionais
Refinamento do passo 1
Refinamento do passo 1.
O passo 1.6 revela a existência de um procedimento repetitivo: enquanto não houver espaço suficiente para colocar o estepe , faça o seguinte: levante o carro com o macaco.
Outro procedimento que pode ser associado ao passo 1.6 é: repita o levantamento do carro com o macaco até que haja espaço suficiente para colocar o estepe.
**3. 3 Algoritmo Trocar Pneu Furado
1.1 remova o macaco do porta-malas 1.2 coloque o macaco sob o carro, próximo ao pneu furado 1.3 desaperte os parafusos da roda 1.4 insira a manivela no macaco (ou monte-o de acordo com o modelo do macaco) 1.5 coloque um calço sob o carro para impedi-lo de se mover 1.6 levante o carro com o macaco até que haja espaço suficiente para colocar o
estepe
1.5.1 se o carro estiver em uma ladeira, de frente para o topo desta, então coloque o calço atrás de um pneu em bom estado caso contrário, coloque o calço na frente de um pneu em bom estado
Esses passos e refinamentos seriam importantes para a realização dessas tarefas por uma máquina. Um ser humano faz essas coisas intuitivamente, mas as máquinas...
1 – Elabore um algoritmo para fazer pipoca em uma panela de fogão, usando manteiga, sal e milho.
2 – Elabore um algoritmo para realizar uma chamada telefônica local.
3 – Elabore um algoritmo para realizar uma chamada telefônica de longa distância (interurbana).
4 – Elabore um algoritmo que simule sua saída de casa pela manhã. Comece com o passo “ dormindo na cama ” e inclua todas as suas atividades matinais.
5 – Elabore um algoritmo para calcular as raízes reais de uma equação do 2º grau. Se a equação não tiver raízes reais, isto deve ser mencionado como resposta.
**3. 5 Exercícios
Fase de resolução do problema
Fase de implementação da solução
Passo único
Problema
Pensar por etapas, foi o que vimos. Não adianta querer que os computadores se comportem como os humanos. Eles fazem, realmente, operações aritméticas e de comparações, muito mais rápido do que nós o fazemos, mas é preciso dizer-lhes, felizmente, o deve ser feito, como e quando. Os algoritmos se resumem nisso, informar ao computador de modo inequívoco essas formas e temporalidade.
Poderíamos dizer que a palavra programar vem do Latim programmeus. Você acredita? Pois bem, é verdade. Mas o que nos interessa é que a palavra programar, em nosso contexto, significa simplesmente: escrever programas de computador. Os programas solicitam aos computadores a realização de ações. Veremos como dialogar com um computador, procurando ensinar-lhe como realizar essas ações, ou seja, vamos aprender a codificar em uma linguagem de programação um algoritmo apresentado como solução para um problema.
O computador é uma máquina estranha, é o mínimo que se pode dizer. Ele entende apenas aquilo que está codificado somente com 0’s e 1’s. Esse tipo de linguagem é denominado linguagem de máquina, ou de baixo nível. Imaginemos, por exemplo, que a operação de somar seja representada por 11001100 e que desejemos somar 2 com 3. Para transmitir essa ordem a um computador, temos que escrever uma instrução equivalente a esta: 11001100 00000010
Linguagens de alto nível As linguagens atuais com as quais se escreve programas para computadores são estruturadas (possuem estruturas de controle), mais próximas da linguagem natural e com certo formalismo matemático. Essas linguagens são chamadas de linguagens de Alto Nível. Exemplos de linguagens de alto nível.
C, C++, Java, Pascal, Visual Basic, Delphi, PHP, etc...
Programa fonte e programa executável Os programas escritos em linguagens de alto nível, aqueles escritos pelo programador, são geralmente chamados de programas fonte, pois ali são codificados os conhecimentos necessários para a solução de determinada tarefa. Uma vez traduzido para a linguagem de máquina, aquela dos 0’s e 1’s, o programa resultante recebe o nome de programa executável.
Tradutores Tradutores são programas especiais que traduzem um programa fonte para linguagem de máquina. Alguns programas são ditos compilados e outros interpretados. O que é isso? Existem tradutores que, quando da tradução do programa fonte, traduzem cada linha e a executam imediatamente. Nesse caso diz-se que houve uma interpretação do programa fonte e esse tipo de tradutor é denominado interpretador. Quando a tradução se dá por inteiro e tão somente após seu término o programa é executado, diz-se que ocorreu uma compilação e esse tipo de tradutor é denominado compilador. Programas compilados são mais rápidos do que programas interpretados.
Importante! Existe um compilador diferente para cada linguagem de alto nível. Isso é lógico. As linguagens sendo diferentes, não se traduz C do mesmo modo que Delphi, por exemplo.
3. 1 Conceitos básicos
É comum utilizarmos um programa 3-em-1 que combina editor de texto, compilador e depurador. Esses programas são também chamados de IDE "Integrated Development Environment". Exemplos de IDE para programar em C: Bloodshed Dev-C++ e Code::Blocks.
Em nosso curso escreveremos os programas fonte no bloco de notas (notepad) se o sistema operacional for Windows ou no KEdit (ou outro editor de texto que acompanhe a versão instalada) se o sistema operacional for Linux. Isto nos restringe aos conhecimentos da linguagem de programação, o que é mais interessante para quem está iniciando. Após conhecermos bem a sintaxe e a semântica da linguagem, usar uma interface tipo IDE será fácil. Acredite.
Para que tenhamos uma idéia, eis aqui diferentes tipos de memória existentes dentro de um computador, da mais rápida para a mais lenta:
Ao dizermos que uma memória é lenta, estamos considerando a escala de tempo de um computador. Afinal, 8 milissegundos são quase imperceptíveis aos humanos, mas é muito tempo para acessar um disco rígido, por exemplo!
A memória principal Fotografando de perto a memória principal (RAM) de um computador, não vemos grandes coisas. É mais importante sabermos como ela funciona internamente.
Vejamos o esquema abaixo. Ele é bastante simples, mas é do necessitamos saber para programar.
Como podemos ver é preciso distinguir duas coisas:
3. 2 Memória e variáveis
O endereçamento de memória é uma técnica que permite ao processador acessá-la. A interface utilizada para isto é, na maioria das vezes, chamada barramento (BUS) , um conjunto de fios dedicados a uma utilização particular. No caso do acesso à memória, esse barramento é chamado de barramento de endereços.
A memória RAM só pode armazenar números. Como fazer então para armazenar outros caracteres (palavras, por exemplo)? Boa pergunta. Na verdade, as letras não passam de números para os computadores! Uma frase é uma simples sucessão de números. Existe uma tabela, denominada ASCII, que faz a correspondência entre os números e as letras e outros caracteres. Essa tabela diz, por exemplo, que o número 65 corresponde à letra A.
Variáveis Em C, uma variável é constituída de dois atributos:
Isso parece um pouco confuso no momento (qual o interesse de armazenar um número se é preciso lembrar o seu endereço), mas, tudo vai tomar sentido em seguida.
Em C cada variável deve ter um nome. Se uma variável guarda o valor da vida média de um cidadão, nós bem que gostaríamos de chamá-la “vida média”. Infelizmente isso não é possível. Existem certas restrições. Veja a seguir as regras que devemos seguir ao darmos um nome a uma variável.
Enfim, e isto é muito importante, a linguagem C (como C++) faz diferença entre as letras maiúsculas e minúsculas. Então Brasil, bRasil e brasil são nomes que representariam três variáveis distintas. Veja alguns exemplos de nomes válidos de variáveis: Vidamedia, vida_media, vida_Media, VidaMedia, num_de_telefone, bola215, etc
Cada programador tem sua maneira própria de nomear as variáveis. Uma maneira bastante utilizada é:
Uma declaração de variável é muito simples, agora que você sabe tudo que é necessário. Basta indicar, na ordem:
Por exemplo, se desejamos criar uma variável de nome TotalDePontos do tipo long, basta digitar a linha seguinte: long TotalDePontos; Isso é tudo!
Outros exemplos: long NotaDeFisica; double TotalRecebido; unsigned long NumeroDeEspacosNaLeituraDeUmTextoLongo;
Atenção! A declaração das variáveis deve ser feita no início das funções. O texto no quadro abaixo é um código de programa escrito em C. Um programa em C é formado por vários trechos de código com um formato especial denominado função. Todo programa possui uma função principal chamada main, essa é a única no programa abaixo. Não se preocupe, aprenderemos aos poucos a escrever um programa.
Se executarmos este programa ficaremos pasmos ao ver que ele não faz nada.
Algumas explicações Na verdade se passa alguma coisa, mas não é possível vê-la. Quando a execução do programa chega à linha de declaração da variável TotalDePontos ele « solicita » ao computador permissão para utilizar um espaço de sua memória principal. Se tudo vai bem, o computador responde « pois não, faça como se estivesse em sua casa ». O único problema que poderia acontecer seria não haver mais espaço disponível na memória do computador, mas isso será um caso extremo. É possível declarar mais de uma variável em uma mesma linha do programa. Por exemplo, long a, b, c; Isso criará três variáveis de tipo long denominadas a , b e c.
É tudo que há de mais simples. Para atribuir o valor 8 à variável TotalDePontos basta escrever: TotalDePontos = 8;
Nome do tipo Número de bits Char 8 Int 32 Long 32 Float 32 double 64
**3. 5 Declarando uma variável
De modo geral, um comando de atribuição tem a forma: variável = expressão ; Nosso programa completo se parece agora com
Nada é exibido na tela do computador até agora. Em algum lugar da memória do computador o valor 8 é armazenado, esse lugar é conhecido no programa pelo nome da variável TotalDePontos e isso é tudo.
O valor de uma nova variável Eis uma questão muito interessante. Quando se declara uma variável, qual o seu valor inicial? De fato, quando o computador lê a linha long TotalDePontos; ele reserva uma pequena parte da memória para armazenar um valor do tipo long. Mas que valor é esse? Existe um valor padrão (0, por exemplo)? Bem, a resposta é não. Não existe um valor padrão. O computador reserva um espaço na memória para armazenar um novo valor, mas não apaga o que já existia naquele espaço. Imediatamente a variável recebe o valor que se encontrava no espaço que foi reservado, que pode ser qualquer coisa. Assim, o melhor é inicializar as variáveis quando de suas declarações, sempre que possível. Procedemos assim:
long TotalDePontos = 8; Agora a variável foi declarada e recebeu imediatamente o valor 8. Foi apagado o que poderia haver na posição de memória que lhe foi alocada e colocado ali o valor 8.
Ocorre às vezes que se tem a necessidade de armazenar um mesmo valor durante toda a execução de um programa. O valor de pi (3.14), por exemplo. Isso quer dizer que uma vez declarada e inicializada, a variável deverá conservar o seu valor impedindo que qualquer pessoa possa modificá-lo. Essas variáveis particulares recebem o nome de constantes, por motivos óbvios. Para declarar uma constante em um programa deve-se utilizar a palavra “const” antes do tipo e obrigatoriamente, inicializar a variável. Exemplo de declaração de uma constante:
const long PI = 3.14;
Não é uma obrigação, mas por convenção, escreve-se os nomes das constantes com letras maiúsculas. Isso nos permite distinguir facilmente os nomes de constantes dos de variáveis. Fora isso uma constante é utilizada do mesmo modo que uma variável. Ao tentar modificar o valor de uma constante no corpo de um programa o compilador acusará um erro (por quê?).
Utilizamos a função printf para exibir valores na tela do computador.
printf ("Total de pontos = %d ", TotalDePontos);
O símbolo especial % seguido da letra d é um especificador de formato. Este especificador permite a exibição de um número inteiro na tela do computador. Existem vários especificadores de formato que serão visto mais tarde. Por enquanto usaremos os especificadores para números inteiros e números decimais.
Símbolo Significado %d Número inteiro (ex: 56) %f Número decimal (ex: 13.75)
**3. 7 Constantes