Notas de aula 1 - Computação UFCG

Propaganda
Profs.: Andrey Elisio Monteiro Brito
Carga Horária:
CEEI
60 h
DSC
[email protected]
José Eustáquio Rangel de Queiroz
Joseluce de Farias Cunha
Roberto Medeiros de Faria
Introdução à Programação
 Tópicos:
 Introdução
O
que é um Computador?
 Organização de um Computador
 Evolução de Sistemas Operacionais
 Computação Pessoal, Distribuída e Cliente/Servidor
 Linguagens de Máquina, de Montagem (Assembly) e
de Alto Nível
 Histórico da Linguagem C
 A Biblioteca Padrão de C
2
[email protected]
Introdução à Programação
 Tendências
de Desenvolvimento de Software:
Tecnologia de Objetos
 C e C++
 Java
 Outras Linguagens de Alto Nível
 Programação Estruturada
 Fundamentos de um Ambiente Típico de
Desenvolvimento de Programas em C
 Tendências de Hardware
 Internet
 World Wide Web (WEB)
3
[email protected]
Objetivos
 Após a discussão do material deste capítulo, v.
será capaz de:
 Compreender
conceitos computacionais
básicos;
 Familiarizar-se
com diferentes tipos de
linguagens de programação;
 Familiarizar-se
com o histórico da linguagem de
programação C;
 Tomar
conhecimento da biblioteca-padrão da
linguagem C;
4
[email protected]
Objetivos
 Após a discussão do material deste capítulo, v.
será capaz de:
 Compreender
os elementos de um ambiente
típico de programação em C;
 Entender
porque é importante aprender C em um
primeiro curso programação;
 Ponderar
porque C oferece um embasamento
para estudos posteriores de outras linguagens
de programação, em especial C++ e Java.
5
[email protected]
Introdução

Objeto de Estudo
A linguagem de programação C
 Técnicas de Programação Estruturada


Extensão do Livro-texto

Fundamentos de C++


Fundamentos de Java


Capítulos 15 a 23
Capítulos 24 a 30
Público-alvo

Estudantes universitários com pouca ou nenhuma
experiência de programação
6
[email protected]
O que é um Computador?
 Computador
 Dispositivo capaz de realizar computações e
tomar decisões lógicas
 Computadores processam dados a partir de
conjuntos de instruções denominadas
programas
 Máquina eletrônica capaz de receber dados,
submetê-los a um conjunto especificado/prédeterminado de operações lógicas/aritméticas
e fornecer o resultado destas operações
7
[email protected]
O que é um Computador?
 Os computadores atuais são dispositivos
eletrônicos que, sob direção e controle de um
programa, executam quatro operações
fundamentais

Entrada (Input)

Processamento (Processing)

Saída (Output)

Armazenamento (Storage)
8
[email protected]
O que é um Computador?
 Ciclo IPOS
Entrada
Processamento
Saída
Armazenamento
9
[email protected]
O que é um Computador?
 Sistema de computação

Integração de componentes atuando como
uma entidade, com o propósito de processar
dados, i.e. realizar algum tipo de operação
aritmética/ lógica envolvendo os dados, de
modo a produzir diferentes níveis de
informações
10
[email protected]
O que é um Computador?
 Componentes de um Sistema Computacional
Peopleware
Hardware
Software
11
[email protected]
O que é um Computador?
 Componentes de um Sistema Computacional

Peopleware

Componente humana de um sistema de
computação, i.e. indivíduos que utilizam o
computador como ferramenta
12
[email protected]
O que é um Computador?
 Componentes de um Sistema Computacional

Hardware

Componente física de um sistema de
computação, i.e. todos os equipamentos
utilizados pelo usuário nas ações de entrada,
processamento, armazenamento e saída de
dados
13
[email protected]
O que é um Computador?
 Componentes de um Sistema Computacional

Software

Componente lógica de um sistema de
computação, i.e. séries de instruções que fazem
o computador funcionar (programas de
computador)
14
[email protected]
O que é um Computador?
 Hardware

Gama variada de dispositivos que compõem um
computador

Teclado, terminal de vídeo (monitor), mouse, discos,
memória, CD-ROM e unidades de processamento
 Software

Programas que são executados em um computador
15
[email protected]
O Software
 "É o software que dá vida à máquina".

Os programas que compõem o software
da máquina são instruções eletrônicas
que informam ao computador como
realizar determinadas tarefas.
 Existem duas classes de software:
 Software básico.
 Software aplicativo.
16
[email protected]
O Software
 Software aplicativo :
 Os programas aplicativos se concentram na
solução de algum tipo de problema
específico, utilizando o computador como
ferramenta (o foco está na aplicação).
 exemplos: jogos, planilhas eletrônicas,
aplicações gráficas, e-mail, etc.
17
[email protected]
O Software
 Software básico:
 O software básico têm como objetivo
possibilitar a operação e o uso do
computador, seja qual for a aplicação (o
foco está na máquina) – o software básico
se concentra nas necessidades gerais de
grande parte dos usuários.

exemplos: sistemas operacionais, BIOS,
compiladores, etc.
18
[email protected]
O Software
Exemplos:
 Uma planilha excel é um software aplicativo
que faz um gráfico. Já o software básico é o
driver da placa de vídeo que de fato exibe o
gráfico na tela.
 Um software aplicativo é o email. Ele manda
mensagens de uma pessoa para outra. Um
software básico seria o driver de rede local que
conecta o computador que envia a mensagem
ao servidor que irá entregá-la ao destinatário.
19
[email protected]
Organização de um
Computador
Unidade Central de Processamento
Dispositivos
de Entrada
Unidade
de Controle
ULA
Dispositivos
de Saída
Unidade Primária
de Armazenamento
Dispositivos de
Armazenamento
Secundário
20
[email protected]
Organização de um
Computador

Unidades Lógicas Básicas
 Unidade de Entrada (Input Unit)

Obtenção de dados a partir de dispositivos de
entrada (e.g. teclado, mouse)
 Unidade de Saída (Output unit)

Apresenta a informação em dispositivos de saída
(e.g. monitor, impressora)
 Unidade de Memória (Memory unit)

Acesso rápido, de baixa capacidade de
armazenamento de informações.
21
[email protected]
Organização de um
Computador
 Unidade Central de Processamento – UCP (Central
Processing unit - CPU)

Supervisão e coordenação das demais unidades
que compõem o computador
 Unidade de Armazenamento Secundário (Secondary
storage unit)
 Armazenamento barato, de alta capacidade e longa
duração
 Armazenamento de programas inativos
22
[email protected]
Unidade Central de
Processamento

Conjunto complexo de
circuitos eletrônicos.

Executa instruções de
programas armazenadas.

Duas partes:
 Unidade de Controle
 Unidade Aritmética e
Lógica (ALU)
© 2004 by Pearson
Education
23
[email protected]
Unidade de Controle
 Direciona o sistema do computador a
executar instruções de programa
armazenadas.
 Deve comunicar-se com a memória e com a
ALU.
 Envia dados e instruções do
armazenamento secundário para a memória,
quando necessário.
© 2004 by Pearson
Education
24
[email protected]
Unidade Aritmética e Lógica
 Executa todas as operações
aritméticas e lógicas.
 Operações aritméticas:

Adição, subtração, multiplicação, divisão.
 Operações lógicas:
 Compara números, letras ou caracteres
especiais.
 Testa uma de três condições:



Condição de igualdade (igual a)
Condição menor que
Condição maior que
© 2004 by Pearson
Education
25
[email protected]
Armazenamento de Dados e a
CPU
 Dois tipos de armazenamento:

Armazenamento primário (memória):



Armazena dados temporariamente.
A CPU referencia-o tanto para obtenção de
instruções de programa como de dados.
Armazenamento secundário:

Armazenamento de longo prazo.
 Armazenado em mídia externa;
por exemplo, um disco.
© 2004 by Pearson
Education
26
[email protected]
A CPU e a Memória
 A CPU não pode processar dados diretamente do
disco ou de um dispositivo de entrada:



Primeiramente, eles devem residir na memória.
A unidade de controle recupera dados do disco e
transfere-os para a memória.
Itens enviados à CPU para ser processados:

A unidade de controle envia itens à CPU e depois os
envia novamente à memória após serem processados.
 Dados e instruções permanecem na memória até
serem enviados a um dispositivo de saída ou
armazenamento, ou o programa ser fechado.
© 2004 by Pearson
Education
27
[email protected]
Áreas de Armazenamento
Temporário
 Registradores
 Memória
© 2004 by Pearson
Education
28
[email protected]
Registradores
 Áreas de armazenamento temporário de
alta velocidade.

Localizações de armazenamento situadas
dentro da CPU.
 Funcionam sob direção da unidade de
controle:


Recebem, guardam e transferem
instruções ou dados.
Controlam onde a próxima instrução a ser
executada ou os dados necessários serão
armazenados.
© 2004 by Pearson
Education
29
[email protected]
Memória
 Também conhecida como armazenamento
primário e memória principal.

Freqüentemente expressa como memória de
acesso aleatório (RAM).
 Não faz parte da CPU.
 Retém dados e instruções para
serem processados.
 Armazena informações somente enquanto o
programa está em operação.
© 2004 by Pearson
Education
30
[email protected]
Como a CPU Executa
Instruções

Quatro etapas são executadas para
cada instrução: captação, decodificação,
execução e armazenamento.

Ciclo de máquina: a quantidade de tempo
necessária para executar uma instrução.



Computadores pessoais executam-nas em
menos de um milionésimo de segundo.
Supercomputadores executam-nas em menos
de um trilionésimo de segundo.
Cada CPU tem seu próprio conjunto
de instruções:

Aquelas instruções as quais a CPU pode
entender e executar.
31
[email protected]
O Ciclo da Máquina
 O tempo necessário
para recuperar,
executar e armazenar
uma operação.
 Componentes:


Tempo de instrução
Tempo de execução
 O clock de sistema
sincroniza as
operações.
© 2004 by Pearson
Education
32
[email protected]
Tempo de Instrução
 Também chamado de I-time.
 A unidade de controle recebe a instrução da
memória e a coloca em um registro.
 A unidade de controle decodifica a instrução
e determina qual é a localização na memória
para os dados necessários.
© 2004 by Pearson
Education
33
[email protected]
Tempo de Execução
 A unidade de controle transfere dados da
memória para registros na ALU.

A ALU executa instruções relativas
aos dados.
 A unidade de controle armazena o resultado
da operação na memória ou em um registro.
© 2004 by Pearson
Education
34
[email protected]
Endereços de Memória

Cada localização de memória tem
um endereço:


Pode conter somente uma
instrução ou peça de dados:


Um número único, como em
uma caixa postal.
Quando dados são reescritos
na memória, o conteúdo
anterior desse endereço é
destruído.
Referenciado pelo número:

As linguagens de programação
usam um endereço simbólico
(nomeado), tal como Horas
ou Salário.
© 2004 by Pearson
Education
35
[email protected]
Representação de Dados
 Os computadores entendem
duas coisas: ligado e
desligado.
 Dados são representados na
forma binária:


Sistema numérico binário
(base 2).
Contém somente 2 dígitos: 0 e
1.

Corresponde a dois estados:
ligado e desligado.
© 2004 by Pearson
Education
36
[email protected]
Representando Dados
 Bit
 Byte
 Palavra
© 2004 by Pearson
Education
37
[email protected]
Bit
 Abreviação de binary digit (dígito binário).


Dois valores possíveis: 0 e 1.
Nunca pode estar vazio.
 Unidade básica para armazenar dados:

0 significa desligado; 1 significa ligado.
© 2004 by Pearson
Education
38
[email protected]
Byte
 Um grupo de 8 bits.

Cada byte tem 256 (28) valores possíveis.
 Para texto, armazena um caractere:

Pode ser letra, dígito ou caractere especial.
 Dispositivos de memória e armazenamento
são medidos em número de bytes.
© 2004 by Pearson
Education
39
[email protected]
Palavra
 O número de bits que a CPU processa como
uma unidade.



Tipicamente, um número inteiro de bytes.
Quanto maior a palavra, mais potente
é o computador.
Computadores pessoais tipicamente têm
32 ou 64 bits de extensão de palavras.
© 2004 by Pearson
Education
40
[email protected]
Capacidades de
Armazenamento

Kilobyte: 1024 (210) bytes.


Megabyte: aproximadamente, um milhão (220) de bytes.



Memória de computadores pessoais.
Dispositivos de armazenamento portáteis (disquetes,
CD-ROMs).
Gigabyte: aproximadamente, um bilhão (230) de bytes.



Capacidade de memória dos computadores pessoais
mais antigos.
Dispositivos de armazenamento (discos rígidos).
Memória de mainframes e servidores de rede.
Terabyte: aproximadamente, um trilhão (240) de bytes.

Dispositivos de armazenamento para sistemas muito grandes.
© 2004 by Pearson
Education
41
[email protected]
Capacidades de
Armazenamento
 SUMÁRIO:
 · 1 Bit = Binary Digit
· 8 Bits = 1 Byte
· 1000 Bytes = 1 Kilobyte
· 1000 Kilobytes = 1 Megabyte
· 1000 Megabytes = 1 Gigabyte
· 1000 Gigabytes = 1 Terabyte
· 1000 Terabytes = 1 Petabyte
· 1000 Petabytes = 1 Exabyte
· 1000 Exabytes = 1 Zettabyte
· 1000 Zettabytes = 1 Yottabyte
· 1000 Yottabytes = 1 Brontobyte
· 1000 Brontobytes = 1 Geopbyte
42
[email protected]
Esquemas de Codificação
 Provêem uma maneira comum para
representar um caractere de dados.

Necessários para os computadores
poderem intercambiar dados.
 Esquemas comuns:



ASCII
EBCDIC
Unicode
© 2004 by Pearson
Education
43
[email protected]
ASCII
 Sigla de American Standard Code for
Information Interchange.
 O padrão mais amplamente usado.
 Usado virtualmente em todos os
computadores pessoais.
© 2004 by Pearson
Education
44
[email protected]
EBCDIC
 Sigla de Extended Binary Coded Decimal
Interchange Code.

Usado principalmente em mainframes IBM
e compatíveis com IBM.
© 2004 by Pearson
Education
45
[email protected]
Unicode
 Projetado para acomodar alfabetos com
mais de 256 caracteres.
 Usa 16 bits para representar um caractere.

65.536 valores possíveis.
 Exige duas vezes mais espaço para
armazenar dados.
© 2004 by Pearson
Education
46
[email protected]
A Unidade de Sistema
 Abriga os componentes eletrônicos do
sistema de computador:


Placa-mãe (motherboard)
Dispositivos de armazenamento
© 2004 by Pearson
Education
47
[email protected]
Placa-mãe (motherboard)
 Placa de circuitos plana
que contém os circuitos
do computador.

A unidade central de
processamento
(microprocessador) é o
componente mais
importante.
http://www.youtube.com/watch?v=zq
WKDzlIssU
© 2004 by Pearson
Education
48
[email protected]
Dispositivos de
Armazenamento
 Armazenamento de longo prazo da memória.

Dados não se perdem quando o
computador é desligado.
 Incluem-se entre os exemplos: discos
rígidos, disquetes, DVD-ROMs.
© 2004 by Pearson
Education
49
[email protected]
Microprocessador
 Unidade central de
processamento impressa
em chip de silício.
 Contém dezenas de milhões
de minúsculos transistores.
 Componentes-chave:



Unidade central de
processamento.
Registradores.
Clock do sistema.
© 2004 by Pearson
Education
50
[email protected]
Microprocessador
 Como funcionam os processadores
http://www.youtube.com/watch?v=IfOIB4-pn1k
 Conheça mais o processador
http://olhardigital.uol.com.br/produtos/central_
de_videos/conheca-seu-micro-processador
51
[email protected]
Transistores
 Comutadores eletrônicos que podem
permitir ou não a passagem de corrente
elétrica.


Se a corrente elétrica passar, o comutador
estará ativado, representando um bit 1.
Caso contrário, o comutador estará
desativado, representando um bit 0.
© 2004 by Pearson
Education
52
[email protected]
Tipos de Chips
 A Intel produz uma família de processadores:



Processadores Pentium 4, Pentium Dual Core, Core 2
Duo, i3 e i5 na maioria dos PCs.
Processador Celeron e Atom vendido para PCs
de baixo custo.
Opteron, Xeon, Itanium, Core 2 Extreme, Core 2 Quad e i7
para estações de trabalho high-end e servidores de rede.
 Outros processadores:



A Cyrix e a AMD produzem microprocessadores
compatíveis com Intel.
Chips PowerPC são usados principalmente em
computadores Macintosh.
O microprocessador Alpha, da Compaq, é usado em
servidores high-end.
53
[email protected]
Componentes da Memória
 Memória semicondutora
 RAM e ROM
 Memória Flash
© 2004 by Pearson
Education
54
[email protected]
Memória Semicondutora
 Usada pela maioria dos computadores
modernos:


Confiável, barata e compacta.
Volátil: exige corrente elétrica contínua.


Se a corrente for interrompida, os dados se perdem.
Semicondutor Complementar de Óxido de Metal
– Complementary Metal Oxide Semiconductor
(CMOS).


Retém informação quando a energia é desligada.
Usado para armazenar informações necessárias
quando o computador é inicializado.
© 2004 by Pearson
Education
55
[email protected]
RAM e ROM
 Memória de Acesso Aleatório – Random-
Access Memory (RAM)
 Memória Somente de Leitura – Read-Only
Memory (ROM)
© 2004 by Pearson
Education
56
[email protected]
Memória de Acesso Aleatório
 Dados podem ser acessados
aleatoriamente:

O endereço de memória 10 pode ser
acessado tão rapidamente quanto o
endereço de memória 10.000.000.
© 2004 by Pearson
Education
57
[email protected]
Memória Somente de Leitura
 Contém programas e dados registrados
permanentemente na memória pela fábrica.


Não pode ser alterada pelo usuário.
Não-volátil: o conteúdo não desaparecerá
quando houver queda de energia.
 Chips de ROM programáveis (PROM):

Algumas instruções no chip podem
ser alteradas.
© 2004 by Pearson
Education
58
[email protected]
Memória Flash
 RAM não-volátil



Usada em telefones celulares, câmeras
digitais e computadores manuais
(handheld).
Os chips de memória flash assemelham-se
aos cartões de crédito.
Menores do que uma unidade de disco
e requerem menos energia.
© 2004 by Pearson
Education
59
[email protected]
Classificação de tipos de
Memória
 Quanto às operações suportadas:


RAM
ROM
 Quanto ao tempo de permanência de dados:


Volátil
Não Volátil
[email protected]
O Barramento (Bus) do
Sistema
 Percursos elétricos paralelos que
transportam dados entre a CPU e a
memória.
 Largura de barramento:


O número de percursos elétricos para
transportar dados.
Medida em bits.
 Velocidade de barramento:
 Medida em megahertz (MHz).
© 2004 by Pearson
Education
61
[email protected]
Largura de Barramento
 Tipicamente, a mesma largura do tamanho
de palavra da CPU.
 Com um tamanho de barramento maior,
a CPU pode:



Transferir mais dados simultaneamente:
 Torna o computador mais rápido.
Referenciar números de endereço de memória maiores:
 Permite mais memória.
Suportar um número e uma variedade maiores de
instruções.
© 2004 by Pearson
Education
62
[email protected]
Velocidade de Barramento
 Quanto maior a velocidade de barramento,
mais rapidamente os dados viajarão por
meio do sistema.
 Computadores pessoais têm velocidades de
barramento de 400 MHz , 533 MHz, 800 MHz
ou 1066 MHz.
© 2004 by Pearson
Education
63
[email protected]
Barramentos de Expansão
 Adiciona dispositivos periféricos ao
sistema:
 Placa
de expansão
 Porta
© 2004 by Pearson
Education
64
[email protected]
Placas de Expansão
 Conectam-se a slots
(encaixes) de
expansão ou à
placa-mãe.

São usadas para
conectar
dispositivos
periféricos.
 A maioria dos
computadores são
“onboard”.
© 2004 by Pearson
Education
65
[email protected]
Portas
 Conectores externos para plugar periféricos,
como, por exemplo, impressoras.
 Dois tipos de portas:

Seriais: transmitem dados à base de
um bit a cada vez.


Usadas para dispositivos lentos, como o
mouse e o teclado.
Paralelas: transmitem grupos de bits
em conjunto, lado a lado.

Usadas para dispositivos mais rápidos, como
impressoras e scanners.
© 2004 by Pearson
Education
66
[email protected]
Cache
 Uma área de armazenamento temporário:

Agiliza a transferência de dados
dentro do computador.
 Memória cache
 Cache de processador
© 2004 by Pearson
Education
67
[email protected]
Memória Cache
 Um pequeno bloco de memória de alta velocidade:

Armazena os dados e as instruções usados com mais
freqüência e mais recentemente.
 O microprocessador procura primeiramente na
cache os dados de que necessita:


Transferidos da cache muito mais rapidamente do
que da memória.
Se não estiverem na cache, a unidade de controle
recupera-os da memória.

Quanto mais “presença de dados” na cache, mais rápido é
o desempenho do sistema.
© 2004 by Pearson
Education
68
[email protected]
Cache de Processador
 Cache interna (Nível 1) embutida no
microprocessador.

Acesso mais rápido, porém custo mais
elevado.
 Cache externa (Nível 2) em um chip
separado.

Incorporada ao processador e alguns
microprocessadores atuais.
© 2004 by Pearson
Education
69
[email protected]
Cache e Registradores
 Diferença entre Memória Cache e Registradores
 Registradores: armazenam dados a serem
usados de imediato
 Cache: armazena dados usados mais
frequentemente

http://taturial.blogspot.com.br/2012/02/diferenca-entre-asmemorias.html

http://informatica.hsw.uol.com.br/memoria-do-computador4.htm

http://crv.educacao.mg.gov.br/sistema_crv/index.aspx?ID_OBJETO=3
7829&tipo=ob&cp=003366&cb=&n1=&n2=Biblioteca%20Virtual&n3=C
adernos%20de%20Inform%C3%A1tica&n4=&b=s
70
[email protected]
Tendências de Hardware
 Características que, grosso modo, duplicam a cada
um ou dois anos:

Quantidade de memória (execução de programas)

Quantidade de meio de armazenamento secundário
(e.g. disco rígido)


Armazenamento de longa duração de programas
e dados
Rapidez do Processador

Velocidade com que os computadores executam
os programas
71
[email protected]
Evolução dos Sistemas
Operacionais
 Processamento por Lotes (Batch processing)
 Apenas um serviço (job) ou uma tarefa (task)
por vez
 Sistemas Operacionais
 Gestão de transições entre serviços/tarefas
 Throughput incrementada

Quantidade de trabalho processada por
computadores
72
[email protected]
Evolução dos Sistemas
Operacionais
 Multiprogramação
 Compartilhamento de recursos
computacionais por vários serviços ou
tarefas
 Compartilhamento de Tempo (Timesharing)
 Execução de diversos serviços, com a UCP
alternando-se entre eles tão freqüentemente
que os usuários podem interagir com cada
programa durante sua execução.
73
[email protected]
Computação Pessoal, Distribuída e
Cliente/Servidor
 Computação Pessoal
 Econômica o bastante para uso individual
 Computação Distribuída
 Processamento da informação através de
redes de computadores
 Computação Cliente/Servidor
 Compartilhamento da informação ao longo de
redes de computadores entre servidores e
clientes de arquivos (computadores pessoais)
74
[email protected]
Linguagens de Máquina, de
Montagem e de Alto Nível
 Tipos de Linguagens de Programação
 Linguagens de Máquina

Seqüências de números relativas a instruções
de máquina específicas

Exemplo: +1300042774
+1400593419
+1200274027
75
[email protected]
Linguagens de Máquina, de
Montagem e de Alto Nível
 Tipos de Linguagens de Programação
 Linguagens de Montagem (Assembly)

Instruções computacionais formuladas a
partir de termos ingleses abreviados,
representando operações elementares,
traduzidas a partir de montadores
(assemblers)

Exemplo: LOAD A
ADD B
STORE (A+B)
76
[email protected]
Linguagens de Máquina, de
Montagem e de Alto Nível
 Tipos de Linguagens de Programação
 Linguagens de Alto Nível
 Códigos
similares ao inglês cotidiano
 Uso
de notações matemáticas (traduzidas via
compiladores)
 Exemplo:
Bruto = Líquido + Descontos
Área = (Base * Altura)/2
77
[email protected]
Histórico da Linguagem C
 Linguagem C
 Desenvolvida por Ritchie, a partir de duas
linguagens de programação antecessoras:
BCPL e B
 Uso no desenvolvimento do UNIX
 Emprego na codificação de sistemas
operacionais modernos
 Independência de hardware (portável)
 "C Tradicional"  C desenvolvido no final da
década de 70
78
[email protected]
Histórico da Linguagem C
 Padronização da Linguagem C
 Motivação: Incompatibilidade entre diversas
variantes existentes de C
 Formação de um comitê da ANSI para a
definição de uma linguagem "isenta de
ambigüidades e independente de máquina"
 Criação do C padrão em 1989
 Atualização da linguagem em 1999
79
[email protected]
A Biblioteca Padrão de C
 Programas em C  módulos denominados
funções
 Possibilidade de criação de funções
específicas pelo programador

Vantagem


Conhecimento exato do comportamento das
funções
Desvantagem

Dispêndio de tempo no desenvolvimento de
funções específicas
80
[email protected]
A Biblioteca Padrão de C
 Programas em C  módulos denominados
funções
 Uso freqüente das funções da biblioteca de C por
programadores

Uso como “blocos” para a construção de
aplicações próprias
 Reuso evita a “reinvenção da roda”

Uso de funções existentes é, em geral, melhor do
que a reescrita de código com o mesmo
propósito

Funções da biblioteca foram cuidadosamente
desenvolvidas para uso eficiente e portabilidade
81
[email protected]
Tendências de Desenvolvimento de
Software: Tecnologia de Objetos
 Objetos
 Componentes reusáveis de software que
modelam itens do mundo real
 Unidades significativas de software

Objetos de dados, tempo, pagamento,
áudio, vídeo, arquivos, etc.

Qualquer nome pode ser representado
como um objeto com comportamento
bem definido
 Maior capacidade de reuso
82
[email protected]
Tendências de Desenvolvimento de
Software: Tecnologia de Objetos
 Objetos
 Maior compreensibilidade, melhor
organização, maior facilidade de manutenção
do que a programação baseada em
procedimentos (procedural)
 Favorescimento à modularidade
83
[email protected]
C e C++
 C++
 Superconjunto de C, desenvolvido por Bjarne
Stroustrup no Bell Labs
 “Extende" C, oferecendo facilidades de
orientação a objetos
 Poder do projeto orientado a objetos

Produtividade incrementada de 10 a 100
vezes
 Linguagem dominante na indústria e em
academias
84
[email protected]
C e C++
 Aprendizado de C++

Uma vez que C++ abrange C, se afigura
indispensável o domínio de C para um
aprendizado efetivo de C++

Vide Capítulo 15 (introdução ao C++)
85
[email protected]
JAVA
 Uso de Java

Criação de páginas Web com conteúdo
dinâmico e interativo

Desenvolvimento de aplicações empresariais
em larga escala

Incrementação da funcionalidade de
servidores Web

Desenvolvimento de aplicações para
dispositivos tais como telefones celulares,
pagers e assistentes digitais pessoais (PDA)
86
[email protected]
Outras Linguagens de Alto
Nível
 FORTRAN

Uso em aplicações de engenharia e
aplicações científicas
 COBOL

Uso para a manipulação de grandes
quantidades de dados
 Pascal

Uso acadêmico
87
[email protected]
Programação Estruturada
 Programação Estruturada
 Abordagem com regras bem definidas para
a escrita de programas
 Clareza, facilidade de teste e depuração e
facilidade de alteração do código
88
[email protected]
Ambiente Típico de Desenvolvimento
de Programas em C
 Fases de Programas
Editor
Disco
O programa é criado no
editor e armazenado em
disco.
Disco
O programa préprocessador processa o
código.
Disco
O compilador cria o
código-objeto e o
armazena em disco.
Disco
O linker faz o link do
código-objeto com as
bibliotecas.
em C/C++

Edição

Pré-processamento

Compilação

Pré-processador
Compilador
Linker
Memória Primária
Linkagem

Carregamento

Execução
Carregador
O carregador transfere o
programa para a memória.
Disco
UCP
Memória Primária
A UCP recupera cada
instrução e a executa,
armazenando (quando
possível) novos valores de
dados à medida que o
programa é executado.
89
[email protected]
Preparação para o Capítulo 2
Exemplo (Soma de 2 Inteiros)
/* Programa que executa a soma de dois inteiros */
#include <stdio.h>
/* início da função main */
int main()
{
int inteiro1; /*variável que contém a primeira parcela da soma */
int inteiro2; /* variável que contém a segunda parcela da soma */
int soma; /* variável na qual será armazenado o resultado da soma */
printf(“Digite o primeiro inteiro:\n"); /*preparação para o recebimento do
primeiro número inteiro */
scanf( "%d", &inteiro1 ); /* leitura do primeiro número */
printf(“Digite o segundo inteiro:\n"); /* preparação para o recebimento do
segundo número inteiro*/
scanf( "%d", &inteiro2 ); /* leitura do primeiro número */
soma = inteiro1 + inteiro2; /* realização da soma dos 2 inteiros digitados pelo
usuário */
printf( “A soma eh igual a %d\n", soma ); /* impressão da soma */
return 0; /* indicação de que o programa encerrou satisfatoriamente */
} /* fim da função main */
90
[email protected]
Andrey Elisio Monteiro Brito
José Eustáquio Rangel de Queiroz
Joseluce de Farias Cunha
Roberto Medeiros de Faria
UNIVERSIDADE FEDERAL DE CAMPINA GRANDE
CENTRO DE ENGENHARIA ELÉTRICA E INFORMÁTICA
CEEI
DSC
[email protected]
DEPARTAMENTO DE SISTEMAS E COMPUTAÇÃO
Download