Buscar

Conhecimentos Básicos Gerais

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 3, do total de 7 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 6, do total de 7 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Prévia do material em texto

1 
LINGUAGEM E TÉCNICA DE PROGRAMAÇÃO I 
 
Profa. Gisele Busichia Baioco 
gisele@ft.unicamp.br 
 
 
Conhecimentos Básicos Gerais 
1 Estrutura e Funcionamento dos Computadores 
Um sistema de computador é formado por: 
• Hardware: é o conjunto de componentes físicos de um computador. Ex: placa de 
memória, teclado, etc; 
• Software: é o conjunto de programas necessários ao funcionamento do hardware e 
que são escritos para realizar os diversos tipos de serviços aos usuários do sistema. 
Ex: editores de texto, planilhas eletrônicas, etc. 
1.1 Hardware de um Computador 
 Memória 
Dispositivo 
de Entrada 
Dispositivo 
de Saída 
Unidade de 
Controle 
Unidade de 
Aritmética 
e Lógica 
Unidade Central 
de Processamento 
sinais de controle 
fluxo de dados 
 
 
Figura 1: Componentes físicos de um computador 
1.1.1 Memória 
A memória é o local onde são armazenados os programas e os dados. Pode ser de dois 
tipos: 
• Principal (ou Interna): contém os programas em execução juntamente com os dados 
necessários. É volátil, ou seja, toda informação desnecessária é retirada da memória 
principal; 
• Auxiliar (ou Externa): são os discos magnéticos (winchester), disquetes, fitas 
magnéticas, CDs e DVDs. A informação pode ser armazenada na memória auxiliar 
 2 
por quanto tempo quanto o usuário julgar necessário, pois o custo de armazenamento 
externo é relativamente baixo. 
 
A capacidade de armazenamento externo pode ser considerada ilimitada enquanto que 
a memória principal é sempre mais escassa. Em compensação, o tempo de recuperação de 
informações armazenadas em um dispositivo de memória auxiliar é relativamente maior do 
que na memória principal. 
Quando a memória é apenas para leitura de informação recebe o nome de ROM (Read 
Only Memory). Quando é utilizada tanto para leitura como para gravação de informação é 
conhecida como RAM (Randomic Acess Memory). 
A informação é armazenada na memória por meio de dígitos binários. Um dígito 
binário ou bit é a menor unidade de informação e assume os valores 0 ou 1. No sistema 
binário: 
1 Byte = 8 Bits 
1 KByte = 1024 Bytes 
1 MByte = 1024 * 1024 Bytes = 1.048.576 Bytes 
1 GByte = 1024 * 1024 * 1024 Bytes 
 
Para converter um número binário em decimal faz-se: 
 
01011011 ⇒ 0 × 27 + 1 × 26 + 0 × 25 + 1 × 24 + 1 × 23 + 0 × 22 + 1 × 21 + 1 × 20 
 ⇒ 0 + 64 + 0 + 16 + 8 + 0 + 2 + 1 = 91 
 
01101110 ⇒ 0 × 27 + 1 × 26 + 1 × 25 + 0 × 24 + 1 × 23 + 1 × 22 + 1 × 21 + 0 × 20 
 ⇒ 0 + 64 + 32 + 0 + 8 + 4 + 2 + 0 = 110 
 
Para converter um número decimal em binário faz-se divisões sucessivas por 2: 
 
91 / 2 
11 45 / 2 
 1 05 22 / 2 
 1 02 11 / 2 
 0 1 5 / 2 
 1 2 / 2 
 0 1 De baixo p/ cima tem-se: 1011011 
 
O maior valor decimal que se pode representar com n bits é dado por 2n - 1. Zeros à 
esquerda não são significativos. 
 
 
0 1 2 
0 1 0 1 1 0 1 1 0 1 1 0 1 1 1 0
Palavra de 8 bits 
Endereços 
Valores em 
binário 
Valores decimais 
equivalentes 91 110 
 
Figura 2: Armazenamento da informação na memória principal de um computador 
 3 
 
A memória principal de um computador é dividida em unidades de mesmo tamanho 
chamadas de palavras, sendo que cada uma tem um único endereço, como mostrado na 
figura 2. Cada palavra é capaz de armazenar uma informação (representada em dígitos 
binários) como, por exemplo, o resultado de uma operação numérica. Os tamanhos de palavra 
mais comuns são 8, 16, 32 e 64 bits. 
A representação de informações não-numéricas é feita por meio de um esquema de 
codificação onde, por convenção, certos conjuntos de bits representam certos caracteres. Dois 
métodos de codificação são os mais utilizados: 
• EBCDIC (Extended Binary Coded Decimal Interchange): utiliza 8 bits permitindo a 
codificação de 256 (28) caracteres diferentes; 
• ASCII (American Standard Code for Information Interchange): utiliza 7 bits 
permitindo 128 (27) representações diferentes de caracteres. O oitavo bit do byte é 
usado como bit de paridade (não codifica informação mas detecta erros durante a 
transmissão de dados). 
1.1.2 Unidade Central de Processamento (UCP ou CPU) 
A UCP é o local de onde partem todas as decisões e onde são executadas todas as 
tarefas. 
Como mostrado na figura 1, a UCP é composta por: 
• Unidade de Aritmética e Lógica: responsável pela realização de todos os cálculos 
aritméticos (adição, subtração, multiplicação e divisão) e lógicos (comparação de 
valores); 
• Unidade de Controle: controla as ações de todos os outros componentes. Opera de 
acordo com as instruções do programador (programa) que estão armazenadas na 
memória principal. Controla a transferência de dados da memória para a unidade de 
aritmética e lógica (onde os cálculos são executados) e vice-versa, do dispositivo de 
entrada para a memória e da memória para o dispositivo de saída. 
1.1.3 Dispositivos de Entrada e Saída (Periféricos) 
Os dispositivos de entrada fornecem o meio pelo qual os dados e as instruções são 
transmitidos ao computador. São dispositivos de entrada: teclado, mouse, unidades de disco, 
microfone, scanner, etc. 
Os dispositivos de saída são necessários à apresentação de resultados. São dispositivos 
de saída: vídeo, impressora, unidades de disco, alto falante, etc. 
1.2 Software de um Computador 
 
Programas Aplicativos 
Sistema Operacional 
Hardware 
Softwares 
Editores de Texto 
Vídeo-games 
Compiladores 
Interpretadores 
etc 
 
Figura 3: Acesso ao hardware de um computador 
 4 
 
Como pode ser observado na figura 3, o acesso ao hardware de um computador é feito 
em camadas, ou seja, um programa aplicativo não acessa diretamente o hardware, mas sim 
através do sistema operacional. Tanto os programas aplicativos como os sistemas 
operacionais são softwares, entretanto os sistemas operacionais têm características específicas 
sendo considerados um tipo especial de software. 
2 Sistemas Operacionais 
Os sistemas operacionais são programas responsáveis por supervisionar o 
funcionamento do computador, criando um ambiente onde os usuários (programadores) 
podem preparar seus programas e executá-los sem se preocuparem primordialmente com 
detalhes do hardware. A característica fundamental é a de que um sistema operacional é um 
software sobreposto funcionalmente ao hardware. 
Os sistemas operacionais possuem múltiplas funções: 
• apresentar ao usuário uma máquina mais flexível e adequada para programar do que 
aquela que o hardware apresenta, tornando a comunicação do usuário com a máquina 
mais fácil e natural; 
• possibilitar o uso eficiente e controlado dos vários componentes do hardware: 
processador (UCP), memória (principal e auxiliar), dispositivos de Entrada/Saída, etc; 
• gerenciar o processamento de programas: um sistema operacional pode permitir a 
execução de dois ou mais programas simultaneamente, ou de maneira geral, permitir a 
execução de duas ou mais tarefas simultaneamente (editar um texto e imprimir um 
arquivo ao mesmo tempo). Nesse caso, o sistema operacional tem a característica de 
ser multitarefa; 
• possibilitar a diversos usuários o uso compartilhado e protegido dos diversos 
componentes de hardware e de software do sistema de computação, de modo que o 
mesmo seja utilizado de maneira mais eficiente: nesse caso, o sistema operacional tem 
a característica de ser multiusuário, onde se tem vários usuários interligados ao 
sistema de computação por meio de terminais, compostos apenas de vídeo e teclado, 
ou por meio de uma rede de computadores. No primeiro caso, existe um único sistema 
de computador ao qual todos os usuários estão interligados por meio dos terminais e 
no qual executam suas tarefas. No caso de uma rede de computadores, existe um 
conjunto de sistemas de computadores interligados que podem estar geograficamente 
muito distanciados entre si, sendo que os usuários podem ter suas tarefas executadasem qualquer outro sistema de computador da mesma rede, além daquele que estiver 
utilizando diretamente. 
 
Exemplos de sistemas operacionais: DOS (Disk Operating Systems), Windows, UNIX, 
etc. 
3 Linguagens de Programação 
As linguagens de programação surgiram da necessidade de livrar o programador de 
detalhes específicos da máquina em que programava. Qualquer linguagem consiste de um 
conjunto de regras que especificam como as coisas devem ser expressas para serem 
compreendidas. 
De maneira geral, os passos para se escrever um programa são: 
1- Especificação 
2- Codificação 
3- Testes 
 5 
4- Manutenção 
As linguagens de programação influem nos passos 2 e 4, ou seja, na codificação onde 
o programa é escrito e na manutenção onde o programa é alterado. 
São propriedades desejáveis em uma linguagem de programação: 
1- Legibilidade (principal propriedade) 
2- Documentação (possibilidade de colocação de comentários no decorrer do código 
do programa) 
3- Facilidade de escrita 
4- Confiabilidade (uma linguagem não deve induzir o programador a erros) 
Geralmente, legibilidade e facilidade de escrita são propriedades opostas, ou seja, a 
linguagem pode ser legível (fácil de ler e entender), mas pode não ser fácil de escrever, pois 
para ser legível necessita de muitos símbolos que detalham o código. 
3.1 Níveis de Linguagens 
As primeiras linguagens de programação foram classificadas como de baixo nível 
(nível mais próximo das características do hardware) ou linguagens de montagem (assembly 
languages). Nessas linguagens as características de um sistema de computador estão 
representadas diretamente, fazendo com que o programador deva conhecer as características 
da máquina como: memória, instruções reais da máquina (especificadas por mnemônicos, por 
exemplo, ADD para somar, MVI para mover, etc) e, possivelmente, a velocidade das 
instruções. Um programador, utilizando uma linguagem de montagem, manipula os elementos 
básicos da arquitetura do computador por meio da UCP. 
Um passo decisivo para a programação foi a introdução, na segunda metade da década 
de 1950, de linguagens de alto nível (nível mais distante das características do hardware), a 
fim de facilitar a programação e a depuração de erros. As primeiras linguagens de alto nível a 
surgirem foram FORTRAN (FORmula TRANslation system) e ALGOL (ALGOrithmic 
Language). 
Na década de 1970, surgiu a linguagem C, que foi classificada como sendo uma 
linguagem de nível médio, pois combina o que há de melhor nas linguagens de baixo e de alto 
nível (combina as características de uma linguagem de alto nível com a funcionalidade das 
linguagens de montagem). 
 
Comparação entre as linguagens de baixo e alto nível: 
 
 Linguagens de Baixo Nível Linguagens de Alto Nível 
Velocidade de execução Fácil comunicação (fácil de ler, 
compreender e escrever) 
Economia de memória Possibilita a documentação do 
código através de comentários 
É portável 
Vantagens 
Aproveitamento dos recursos do 
hardware Redução no tamanho do programa 
Difícil compreensão e 
aprendizado 
Desvantagens Falta de portabilidade (os programas são específicos para 
máquinas com as mesmas 
características de hardware) 
Tempo gasto na tradução 
 
 6 
Alguns exemplos de linguagens de programação: 
 
Usuário 
Alto Nível Ada 
 Modula-2 
 Pascal 
 COBOL 
 FORTRAN 
 ALGOL 
 BASIC 
 
Nível Médio C 
 
Baixo Nível Macroassembler 
 Assembler 
Máquina 
 
Uma característica de algumas linguagens de médio/alto nível é de serem estruturadas. 
Uma linguagem estruturada tem como característica a possibilidade de se 
compartimentalizar o código e os dados, isto é, permite que tarefas distintas tenham suas 
informações e instruções separadas em blocos e escondidas do restante do programa. Esses 
blocos de informações e instruções são chamados de subrotinas ou subprogramas. 
As linguagens estruturadas tornam a programação e a manutenção de programas mais 
fáceis de serem realizadas. Essas linguagens tendem a ser mais modernas, enquanto que as 
não-estruturadas são mais antigas. Por exemplo: 
 
Linguagens Não-estruturadas Linguagens Estruturadas 
FORTRAN Pascal 
BASIC Ada 
COBOL C 
 Modula-2 
3.2 Campos de Aplicação 
Para cada campo de aplicação deve-se utilizar linguagens de programação apropriadas. 
Por exemplo: 
• Aplicações científicas: BASIC, Pascal, C, C++ 
• Aplicações comerciais: COBOL, DBase, Clipper 
• Aplicações de inteligência artificial: PROLOG, LISP 
• Aplicações para internet: JAVA 
Desse modo, antes de começar a desenvolver um programa deve-se analisar o campo 
da aplicação e, então, escolher a linguagem de programação mais apropriada. 
3.3 Compilação e Interpretação 
Com a introdução das linguagens de programação surgiu a necessidade de programas 
tradutores, isto é, softwares que traduzem programas escritos em uma linguagem de 
programação para programas em linguagem de máquina (código binário). Os tradutores para 
linguagens de montagem são chamados de montadores (assemblers) e os para linguagens de 
alto nível, de compiladores. Outra opção para a tradução de linguagens de alto nível é o uso 
de interpretadores. 
 7 
O processo de compilação para uma determinada linguagem de programação consiste 
na tradução de programas escritos nessa linguagem, chamados de programas-fonte, para 
programas escritos na linguagem da máquina onde serão executados, chamados de 
programas-objeto. Esquematicamente tem-se: 
 
Programa 
Fonte 
Compilação Programa Objeto Execução 
Saída do 
Programa 
Tempo de compilação Tempo de execução 
 
O tempo de compilação se refere aos eventos que ocorrem durante o processo de 
compilação e o tempo de execução, aos eventos que ocorrem enquanto o programa está 
sendo executado. Assim, erros em tempo de compilação são os erros ocorridos durante o 
processo de compilação do programa-fonte e erros em tempo de execução são aqueles 
ocorridos durante a execução do programa. 
 
O processo de interpretação para uma determinada linguagem de programação 
consiste em traduzir cada instrução ou comando do programa-fonte e executá-la 
imediatamente. Portanto, não existe a geração de um programa-objeto. Esquematicamente 
tem-se: 
 
Programa 
Fonte 
Interpretação 
e Execução 
Saída do 
Programa 
Tempo de interpretação 
+ Tempo de execução 
 
Comparação entre compiladores e interpretadores: 
 
Interpretador Compilador 
Mais lento; alguns passos são repetidos 
cada vez que uma instrução deve ser 
interpretada 
Mais rápido; é possível adaptar o código 
gerado para um comando de acordo com 
o seu contexto, visando a otimização 
É possível detectar erros que não são 
visíveis ao compilador (erros em tempo de 
execução) 
Erros em tempo de execução são 
detectados posteriormente à compilação 
É usado por linguagens com estruturas 
simples. Por exemplo: LISP, APL, 
SNOBOL, PROLOG 
É usado, por exemplo, pelas linguagens: 
Pascal, C, FORTRAN, COBOL 
 
Usuários distintos visualizam a máquina de formas também distintas devido aos 
softwares que utilizam. Essa visualização é chamada de máquina virtual. Por exemplo: 
 
Máquina Virtual C: Sistema Operacional + Compilador C 
 
Teoricamente, a implementação da máquina virtual é transparente ao usuário. Na 
prática, os efeitos da implementação são sentidos, por exemplo, pelo tempo de execução, 
pelas mensagens de erro, etc.

Outros materiais