You are on page 1of 93

Algoritmos

DCC 119

Introdução e Conceitos
Básicos
Sumário
 Sistemas de Numeração
 Sistemas Computacionais

 Estrutura de um Computador Digital

 Sistemas Operacionais

 Algoritmo – Introdução

 Formas de representação de algoritmos

2
Sistemas de Numeração

Como fazer a conversão entre o sistema decimal e o


sistema utilizado num computador?

DECIMAL BINÁRIO

HEXADECIMAL

3
Base
 Base ou raiz de um sistema de numeração: é o
número de algarismos distintos usados nesse sistema
de numeração.

 Exemplo: o sistema decimal possui base 10, isto é, usa


10 algarismos distintos.

4
Notação Posicional
 É o nome dado à notação usada por alguns
sistemas numéricos, onde cada algarismo
tem, além do seu valor absoluto, um valor de
posição dentro de cada número desse sistema
em que ele aparece.

 Por exemplo, no sistema decimal:


O valor absoluto 2 no número 2000 representa
uma grandeza diferente do que 2 em 20.

5
Exemplo de Sistema de Numeração
que não usa Notação Posicional
 O sistema de numeração romano é constituído
de um conjunto N de 7 algarismos diferentes,
cada um representando um valor fixo,
independentemente de sua posição relativa no
número:
 N = (I, V, X, L, C, D, M)
 Indicando, respectivamente, os valores: 1, 5, 10,
50, 100, 500 e 1000
 Observe que neste sistema não há representação
para o zero.
 Tente multiplicar XIII x XVII

6
Sistema Decimal ou de Base 10
Possui 10 algarismos distintos (algarismos
arábicos = 0, 1, 2, 3, 4, 5, 6, 7, 8 e 9) e usa
notação posicional.
Ex.: 7 = 7 x 100
35 = 30 + 5 = 3 x 101 + 5 x 100
81,508 = 8 x 101 + 1 x 100 + 5 x 10-1
+ 0 x 10-2 + 8 x 10-3
Obs.: Na notação posicional (qualquer que seja
a base) o primeiro algarismo a esquerda da
vírgula, representa uma potência da base com
expoente igual a 0 (zero) e esse expoente é
inteiro e crescente para a esquerda.
7
Sistema Decimal:
Como Funciona

0
1
2
3
4
5
6
7
8
9
10 Zera e vai-um

8
Sistema Binário ou de Base 2
Usa notação posicional e possui dois algarismos distintos:
0 e 1.

00
01
10 Zera e vai-um
11

9
Conversão Decimal - Binário
Decimal Binário
0 0
1 1
2 10
3 11 Problema: como converter
4 100 2358(10) para a base 2?
5 101 E 100101 (2) para a base
6 110 10?
7 111
8 1000
9 1001
10 1010
10
Sistema Hexadecimal ou de
Base 16
Usa notação posicional e possui 16 algarismos distintos:
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E e F.
Decimal Hexadecimal Decimal Hexadecimal
0 0 8 8
1 1 9 9
2 2 10 A
3 3 11 B
4 4 12 C
5 5 13 D
6 6 14 E
7 7 15 F

11
Conversão de Base
Conversão da base b (qualquer) para decimal:
Para converter um número na base b em decimal, basta
somar os produtos dos algarismos pelas potências da
base b que eles representam.

Ex.: Converter os números abaixo para a base 10


(10)16 ≡ 1 x 161 + 0 x 160 = (16)10
(F30A)16 ≡ 15 x 163 + 3 x 162 + 0 x 161 + 10 x 160 =
(62218)10
(1101)2 ≡ 1 x 23 + 1 x 22 + 0 x 21 + 1 x 20 = (13)10
(10001111)2 ≡ 27 + 23 + 22 + 21 + 20 = (143)10

12
Conversão de Base
Conversão de decimal para a base b (qualquer):
Para converter um número decimal para a base b, devem
ser feitas divisões inteiras sucessivas por b até que se
encontre quociente 0 (zero). O número correspondente na
base b será formado pelos restos das divisões, da última
até a primeira divisão, nessa ordem.
Ex.: Converter o número decimal abaixo para hexadecimal
45286 16
6 2830 16
14 176 16
E 0 11 16
11 0
B (45286)10 ≡ (B0E6)16

13
Conversão de Base
Converter os números decimais abaixo para binários

18 2
0 9 2
1 4 2
18 (10) = 10010(2)
0 2 2
0 1 2
1 0

14
Conversão
Binário ↔ Hexadecimal
Como 16 é potência de 2 (24 = 16), nesta conversão,
cada algarismo hexadecimal dá origem a quatro
algarismos binários.
Tabela de conversão:
Hexadecimal Binário
1 0 0 0 1
2 0 0 1 0
4 0 1 0 0
8 1 0 0 0
Valor da posição 8 4 2 1
15
Conversão
Binário ↔ Hexadecimal
Ex.: Hexadecimal em Binário:
8 4 2 1
(9)16 ≡ (1 0 0 1)2 ( isto é, 1 + 8 = 9)
(D)16 ≡ (1 1 0 1)2
(13A)16 ≡ ( 0 0 0 1 | 0 0 1 1 | 1 0 1 0 )2
(FB09)16 ≡ ( 1 1 1 1 1 0 1 1 0 0 0 0 1 0 0 1)2

Binário em hexadecimal:
8 1
(1 0 0 1)2 ≡ (9)16
(0 0 1 0 | 1 1 0 1 | 1 0 1 1 | 0 1 0 1)2 ≡ (2DB5)16
(1 0 0 0 | 1 0 0 1 | 1 0 1 1 | 1 1 1 1)2 ≡ (89BF)16

16
Resumo

÷16 ÷2

HEXADECIMAL DECIMAL BINÁRIO

x16n x2n

tabela

17
Introdução (Parte II)
Sistemas
Computacionais
DCC119 – Algoritmos

18
Sistemas Computacionais

Peopleware Software Hardware


(usuário) (programas) (máquina)

Hardware: Corresponde à parte material, aos


componentes físicos do sistema. É o
computador propriamente dito.

Software: Conjunto de programas (instruções


arranjadas logicamente) e dados.

19
Estrutura de um Computador
Digital
Unidade Central de Processamento

Unidade Lógica Unidade de Memória


e Aritmética Controle Principal Memória
Secundária

Interfaces

Unidades Unidades
de de
Entrada Saída

Periféricos

20
Processador
Também chamada de microprocessador ou unidade de
processamento central (UPC ou CPU) e é
responsável pelo gerenciamento de todas as funções
do sistema.
A CPU distingue somente dois estados físicos,
representados pelos números 0 e 1 – dígitos
binários.
É dividida em:
 Unidade Aritmética e Lógica: encarregada de realizar
operações aritméticas e lógicas elementares.
 Unidade de Controle: encarregada de coordenar os
diversos componentes.
21
Memória Principal
(RAM – Random Access Memory)
É a unidade encarregada de armazenar os programas e
dados ( recebidos das unidades de entrada) para imediato
processamento pela CPU.
Após a execução de cada instrução do programa, a CPU
armazena o resultado gerado na memória principal.

Memória
CPU Principal

A memória é considerada um meio temporário de


armazenamento de dados, que permanecem ali somente
durante o tempo em que estiverem sendo processados.

22
Memória Principal
Conceitos: Bit, Byte e Word
Bit (“Binary DigiT” – dígito binário)
 Unidade de Informação, tem somente os valores “0”
ou “1”;

Byte (“BinarY Term” – termo binário)


 Conjunto de 8 bits, com o qual pode-se representar
os números, as letras, os sinais de pontuação, etc...

Palavra (Word)
 É a quantidade de bits que a CPU processa por vez.

23
Memória Principal
Conceitos: Bit, Byte e Word
CPU ou micro de: Palavra de:
8 bits 8 bits = 1 byte = 1 caractere
16 bits 16 bits = 2 bytes = 2 caracteres
32 bits 32 bits = 4 bytes = 4 caracteres
64 bits 64 bits = 8 bytes = 8 caracteres
128 bits 128 bits = 16 bytes = 16 caracteres

Exemplo: se a palavra (texto) TRADUTOR tiver sido transferida


da memória para uma CPU de:
 8 bits <= este precisará de 8 operações para processá-la;
 16 bits <= este precisará de 4 operações para processá-la;
 32 bits <= este precisará de 2 operações para processá-la;
 64 bits <= este precisará de uma operação para processá-la;

24
Memória Principal
Unidades de Medida
Unidades Usual Informática
Kilo (K) 103 210 bytes
Mega (M) 106 220 bytes
Giga (G) 109 230 bytes
Tera (T) 1012 240 bytes

Exemplo: Qual a quantidade exata de bits que


um DISQUETE de 1,44 MB possui?
1,44 MB = 1,44 * 220 * 8 = 12079595,52 bits
25
Memória Principal
Organização
Representação de uma memória de 1 KB:
Endereço Byte
No byte de
0
endereço 2 está
1
armazenado o
2 0 1 0 0 0 0 0 1 código ASCII do
... caracter “A”.
1023
O processador acessa o conteúdo de um byte a partir do
endereço desse byte.
Por que 1 KB = 210 bytes e não 103 bytes? ou
Quantos bits são necessários para representar um dos
endereços da memória acima?
26
Memória Secundária
A memória secundária pode ser composta por vários dispositivos
capazes de ampliar a capacidade de armazenamento da memória
principal. Eles podem armazenar grandes quantidades de dados e
programas.
A memória secundária é um tipo de memória não volátil,
teoricamente permanente e mais lenta.
Memória Memória
CPU Secundária
Principal

Outra função da memória secundária é oferecer uma expansão


virtual da memória principal – Memória Virtual.
Memória Virtual

Memória Memória
Principal Secundária

27
Interface
Representa o meio de comunicação entre duas
partes do sistema. Exemplo: disco e
computador, teclado e computador,
computador e impressora.
Existem dois tipos de interface:
 - serial: os dados são enviados um bit de
cada vez (cabos com um único fio);
 - paralela: um byte de cada vez (cabos com 8
fios);
28
Linguagens de Programação

Para que um algoritmo possa ser executado


pelo computador, é necessário que ele seja
programado, isto é, que ele seja transcrito
para uma linguagem que o computador possa
“entender”, direta ou indiretamente.

29
Tradutor
Os computadores só podem
Algoritmo ou
executar diretamente os programa escrito
Programa
em uma
algoritmos expressos em Fonte determinada
linguagem de máquina (que é linguagem de
programação
um conjunto de instruções
capazes de ativar diretamente
Tradutor
os dispositivos eletrônicos do
computador).
Um tradutor é um programa que
Algoritmo ou
traduz um algoritmo que está Programa programa
traduzido para
escrito em uma determinada Objeto
linguagem de
linguagem de programação em máquina

linguagem de máquina.

30
Processo de Tradução
O processo de tradução pode ser feito por:
 Compilação: Lê, analisa e traduz todos os comandos do programa
fonte, criando o programa objeto.
 Interpretação: Traduz ou interpreta cada comando ao executá-lo.
Linguagem
de
Máquina Execução
Linguagem Tradutor
de Programa
Alto Nível Compilador Execução de
Objeto todo o
Programa programa
Fonte

Executa um
Interpretador comando e
volta

31
Principais Tipos de Linguagens
de Programação
 Linguagem de Máquina ( ou Absoluta ):
 É a única linguagem que atende ao computador,
por satisfazer o seu projeto lógico.
 Instruções representadas por códigos binários.
 Exemplo de instrução:
0001 0000 0000 1010 0011 0101
1 0 0 A 3 5
Cód. de Operação Campo de Operando

Esta instrução ordena que o conteúdo do endereço


0A3516 da memória seja somado (1016) ao acumulador
(registrador especial usado para acumular resultados)
e que o resultado fique guardado no acumulador. 32
Principais Tipos de Linguagens
de Programação
 Linguagem Simbólica
(de Baixo Nível, de Montagem ou Assembler):
 Surgiu afim de simplificar a difícil programação da
linguagem de máquina.
 Substitui os códigos binários por abreviações de nomes
sugestivos que lembram a função da instrução.

 Exemplo de instrução: ADD X


 ADD ordena que o valor da variável X seja somado ao
acumulador e que o resultado fique nele guardado.
 X é o nome da variável, criado pelo programador, que
representa um endereço da memória (por exemplo 0A3516)
que contém armazenado o valor desta variável. Surgimento do
conceito de variável.

33
Principais Tipos de Linguagens
de Programação
 Linguagem Automática ( ou de Alto Nível ):
 São semelhantes às linguagens usadas para descrever o
problema que se deseja resolver, ressaltando a linguagem
profissional a que o usuário está acostumado.
 Existem várias linguagens automáticas: FORTRAN
(FORmula TRANslation), ALGOL, PLI, APL, BASIC, LISP,
SNOBOL, PASCAL, ADA, MODULA etc.

 Exemplo de comando: Y = 3 + X;
 Ordena que a constante 3 seja somado ao valor da variável X e
que o resultado seja armazenado como novo valor da variável Y.

Obs.: C é considerada uma linguagem de médio nível.


34
Sistema Operacional (SO)
É um programa especial que controla e coordena todas as
operações básicas de um computador.
Ele controla a execução de outros programas e pode
proporcionar funções como:
 controle de entrada e saída de dados;
 alocação de memória;
 gerenciamento de dados, etc ...

Os programas que compõem os SOs são, na maioria dos casos,


escritos em linguagens de nível mais baixo, fazendo com que
eles sejam mais rápidos e eficientes no gerenciamento de
recursos do hardware.

35
Sistema Operacional (SO)
Os SOs podem ser classificados em:
 Monousuário: somente um usuário pode processar
dados por vez na CPU;
 Multiusuário: vários usuários podem acessar “ao
mesmo tempo” a CPU de um sistema;
 Monotarefa: somente um programa de cada vez é
executado pela CPU.
 Multitarefa: vários programas podem ser executados
de maneira concorrente pela CPU (eles concorrem
pela mesma CPU).

36
Algoritmos - Introdução

 O uso de algoritmos surgiu como uma forma


de indicar o caminho para a solução dos mais
variados problemas.
 Dado um problema, as principais funções de
um programador são:
 Entender perfeitamente o problema
 Escolher métodos para sua solução
 Desenvolver um algoritmo baseado nos métodos
 Codificar o algoritmo na linguagem de programação
disponível

37
Algoritmos - Introdução

 A parte mais importante da tarefa de


programar é a construção de algoritmos.

 Segundo Niklaus Wirth:


 “Programação é a arte de construir e
formular algoritmos de uma forma
sistemática”
 “Algoritmos + Estruturas de Dados =
Programas”

38
Como estudar algoritmos?

 O aprendizado de algoritmos não se consegue a


não ser através de muitos exercícios.

 Algoritmos não se aprendem:


 Copiando algoritmos
 Estudando algoritmos

 Algoritmos só se aprendem:
 Construindo algoritmos
 Testando algoritmos

39
Algoritmos - Conceitos
 Ação: é um evento que ocorre num período de tempo
finito, estabelecendo um efeito intencionado e bem
definido.
Ex.: “Colocar o livro em cima da mesa”;
“Atribuir o valor 3,1416 em uma variável”;

 Observação: toda ação deve ser executável em um


tempo finito (do instante t0 até o instante t1);
 O que realmente interessa é o efeito produzido na execução
da ação;
 Pode-se descrever o efeito de uma ação comparando o
estado no instante t0 com o estado no instante t1.

40
Algoritmos - Conceitos

 Estado de um dado sistema de objetos é o


conjunto de propriedades desses objetos que
são relevantes em uma situação considerada.

Ex.: “Livro na estante ou sobre a mesa”;


“Conjunto de valores das variáveis do
programa num certo instante da execução”;

41
Algoritmos - Conceitos

 Processo: é um evento considerado como uma


seqüência temporal de (sub) ações, cujo efeito total é
igual ao efeito acumulado dessas (sub) ações.

 Observação: Pode-se, geralmente, considerar um


mesmo evento como uma ação ou como um
processo, dependendo se o interesse está em
simplesmente no efeito total (da ação) ou se interessa
um ou mais estados intermediários (do processo). Em
outras palavras, se há interesse, uma ação pode ser
geralmente detalhada em um processo.

42
Algoritmos - Conceitos

 Padrão de Comportamento : em todo o evento


pode-se reconhecer um padrão de comportamento,
isto é, cada vez que o padrão de comportamento é
seguido, o evento ocorre.
 Ex.: seja a seguinte descrição:
“Uma dona-de-casa descasca as batatas para o jantar”
“traz a cesta com batatas do porão”;
“traz a panela do armário”;
“descasca as batatas”;
“devolve a cesta ao porão”;

43
Algoritmos - Conceitos
Essa descrição pode ser usada para descrever eventos
distintos (dias diferentes, batatas diferentes etc.).
Isso só é possível porque os eventos possuem o
mesmo padrão de comportamento.

O efeito de um evento fica totalmente determinado pelo


padrão de comportamento e eventualmente pelo estado
inicial.

44
Algoritmos - Conceitos
 Algoritmo: é a descrição de um padrão de
comportamento, expressado em termos de um
repertório bem definido e finito de ações primitivas
que, com certeza, podem ser executadas.
 Um algoritmo possui caráter imperativo, razão pela
qual uma ação em um algoritmo é chamada de
comando.
 Ex.: algoritmo para descascar batatas para o jantar:
“traga a cesta com batatas do porão”;
“traga a panela do armário”;
“descasque as batatas”;
“devolva a cesta ao porão”;

45
Algoritmos - Conceitos
 Um algoritmo (ou programa) apresenta dois aspectos
complementares:
 Aspecto estático: é a representação concreta do algoritmo
através de um texto contendo comandos que devem ser
executados numa ordem prescrita (atemporal).
 Aspecto dinâmico: que é a execução do algoritmo no
tempo.

O problema central da computação consiste em relacionar


esses dois aspectos, isto é, consiste no entendimento
(visualização) das estruturas dinâmicas das possíveis
execuções do algoritmo a partir da estrutura estática do seu
texto.

46
Algoritmos - Conceitos
 A restrição a um número limitado de estruturas de
controle (de execução dos comandos do algoritmo)
permite reduzir o abismo existente entre o aspecto
estático e o dinâmico do algoritmo.

 Só são usadas três estruturas de controle:


 Seqüência Simples
 Alternativa
 Repetição

“A arte de programar consiste na arte de organizar e


dominar a complexidade” (Dijkstra)

47
Algoritmos - Conceitos
A generalização do algoritmo para descascar batatas para o jantar
pode ser:
“traga a cesta com batatas do porão”;
“traga a panela do armário”;
se “saia é clara” então “coloque avental”;
enquanto “número de batatas é insuficiente” faça
“descasque uma batata”;
“devolva a cesta ao porão”;

Um algoritmo deve ser determinístico, isto é, dadas as mesmas


condições iniciais, deve produzir em sua execução, os mesmos
resultados.

Só interessam os algoritmos executáveis em tempo finito.


48
Algoritmos
Formas de representação
 Dentre as formas de representação de
algoritmos mais conhecidas,
sobressaltam:
 A Descrição Narrativa
 O Fluxograma Convencional
 O Diagrama de Chapin
 A Pseudolinguagem

49
Descrição Narrativa
 Nesta forma de representação os algoritmos são
expressos diretamente em linguagem natural.

 Como por exemplo, têm-se os algoritmos


seguintes:
Troca de um pneu furado:
 Afrouxar ligeiramente as porcas
 Suspender o carro
 Retirar as porcas e o pneu
 Colocar o pneu reserva
 Apertar as porcas
 Abaixar o carro
 Dar o aperto final nas porcas
50
Descrição Narrativa

Cálculo da média de um aluno:


 Obter as notas da primeira e da segunda prova
 Calcular a média aritmética entre as duas
 Se a média for maior ou igual a 6, o aluno foi
aprovado, senão ele foi reprovado.

Obs:Esta representação é pouco usada na


prática porque o uso de linguagem natural
muitas vezes dá oportunidade a más
interpretações, ambigüidades e imprecisões.
51
Fluxograma

 Representação gráfica de algoritmos onde


formas geométricas diferentes implicam
ações (instruções, comandos) distintos.

 Tal propriedade facilita o entendimento


das idéias contidas nos algoritmos.

52
Fluxograma ou Diagrama
de Blocos
Principais formas geométricas usadas em fluxogramas.

= Início e final do fluxograma .

= Operação de entrada de dados

= Operação de saída de dados em impressora

= Operação de saída de dados em vídeo

= Operações de atribuição

53
Fluxograma

= Decisão

= Seta do fluxo de dados

= Conector utilizado quando é preciso


particionar o diagrama, colocando uma letra
ou número no símbolo para indentificar os
pares da conexão

54
Fluxograma
A figura a seguir
mostra a
representação do
algoritmo de cálculo
da média de um
aluno sob a forma de
um fluxograma.

55
Diagrama de Chapin

 O diagrama foi criado por Ned Chapin

 Substituir o fluxograma tradicional por um


diagrama que apresenta uma visão hierárquica
e estruturada da lógica do programa

56
Diagrama de Chapin
 A figura abaixo apresenta um exemplo do tipo de
diagrama de Chapin para o algoritmo de cálculo da
média de um aluno.

57
Pseudolinguagem
 Esta forma de representação de algoritmos, também
conhecida como pseudocódigo, português
estruturado ou portugol, é bastante rica em detalhes e,
por assemelhar-se bastante à forma em que os programas
são escritos, encontra muita aceitação, sendo portanto a
forma de representação de algoritmos que será adotada
nesta disciplina.

 Esta representação é suficientemente geral para permitir


que a tradução de um algoritmo nela representado para
uma linguagem de programação específica seja
praticamente direta.

58
Pseudolinguagem
 Representação de um Algoritmo na Forma de
Pseudolinguagem :

principal
{
<declaração_de_variáveis>
<comandos>
}

59
Pseudolinguagem
A seguir é mostrado a representação do algoritmo de cálculo
da média de um aluno na forma de um pseudocódigo

principal
{
real n1, n2, media;
leia(n1, n2);
media  (n1 + n2)/2;
se (media >= 6)
{
imprima ("Aprovado");
}
senão
{
imprima ("Reprovado");
}
}
60
Próxima aula...
 Conceito de tipos de dados;

 Variáveis;

 Operadores;

 Comandos de entrada e saída...

61
Laboratório de
Programação
DCC 120
Introdução e Conceitos Básicos
Informações Gerais
 Total de Créditos: 2
 Teste de Verificação de Conhecimento (TVC): 3
 Média: 60

 Site da disciplina: http://www.algoritmosufjf.tk


Neste site você encontrará:
 Material Didático;
 Data das provas;
 Listas de Exercício;
 Horário e site de Monitoria;
 Links diversos etc.
Segunda Chamada
 O que é ?
É a prova que você poderá requerer no caso
de perder uma das avaliações.

 Pode substituir uma prova já realizada?


Não. A prova só substitui uma avaliação que
o aluno tenha faltado. Não há provas
substitutivas em Algoritmos / Laboratório
de Programação I.

64
Segunda Chamada - Regras
Caso 1
O aluno que perder uma das avaliações tem direito, sem a necessidade de
justificativa, a fazer segunda chamada ao final do período letivo, sobre conteúdo
acumulado.

Caso 2
O professor responsável pela disciplina poderá conceder segunda chamada ao aluno
ausente em quaisquer das avaliações de conhecimento, desde que o mesmo
apresente requerimento, no prazo máximo de dois dias úteis, com a devida
justificativa de acordo com a legislação em vigor.
Sendo julgada procedente a justificativa, a segunda chamada será designada pelo
Professor, e versará sobre os mesmos tópicos da avaliação não realizada. Do
indeferimento caberá o recurso ao chefe de Departamento, no prazo de dois dias
úteis.
Como proceder?
 Onde: Secretaria do DCC das 14h as 17h
 Quando: Até dois dias úteis após a aplicação da prova
 O que: Entregar requerimento preenchido e anexar justificativa.
 Resultado do requerimento: Será divulgado no site da disciplina
 Prova: Data e hora serão divulgados após o processamento dos requerimentos.

65
Informações Gerais

 Bibliografia Básica:
 GUIMARÃES, A. M. Algoritmos e estruturas de
dados. Rio de Janeiro: LTC, 1994.
 KERNIGHAN, BRIAN W., RITCHIE, DENNIS M.
C: A linguagem de programação padrão. Rio
de Janeiro: Campus, 1989.

 Bibliografia Complementar:
 EVARISTO, JAIME. Aprendendo a Programar
Programando na Linguagem C. Edição Digital.

66
Objetivos

 Representar uma sequência de ações a


serem realizadas para obter uma resposta de
um determinado problema usando uma
linguagem de programação

 Base Teórica: Disciplina de Algoritmos

67
Linguagem de Programação
 “É um conjunto de regras sintáticas e
semânticas usadas para definir um programa
de computador. Uma linguagem permite que
um programador especifique precisamente
sobre quais dados um computador vai atuar,
como estes dados serão armazenados ou
transmitidos e quais ações devem ser
tomadas sob várias circunstâncias.”

68
Linguagem de Programação
 Lista de 2500 (!) linguagens de programação
http://people.ku.edu/~nkinners/LangList/Extras/langlist.htm

 Linha do tempo com aproximadamente 50


linguagens de programação
http://www.levenez.com/lang/lang.pdf

69
Linguagem C
 Linguagem de programação que será utilizada
durante a disciplina: linguagem C

 As bases da linguagem C foram desenvolvidas


entre os anos 1969-1973, em paralelo com o
desenvolvimento do sistema operacional Unix. O
período mais criativo ocorreu em 1972
http://cm.bell-labs.com/cm/cs/who/dmr/chist.html

70
Linguagem C
 A linguagem C é amplamente utilizada,
principalmente no meio acadêmico

 O sucesso do sistema operacional Unix


auxiliou na popularização do C

 A linguagem C é considerada simples

71
Sistema Operacional - Linux
 Sistema instalado nos computadores: Linux
 Criado inicialmente como um hobby pelo
estudante Linus Torvalds, na Universidade de
Helsinki (Finlândia).
 Linus tinha um interesse especial pelo
Sistema Operacional Minix, baseado no
sistema Unix

72
Sistema Operacional - Linux
 1991 : versão 0.02
 1994 : versão 1.0

 O código do núcleo (kernel) é aberto: gratuito


e disponível a todos
 Com base no kernel diversas distribuições
podem ser encontradas: Ubuntu, Debian,
Mandriva, Fedora ...
http://www.linux.org/

73
Organização básica de um
computador
 Um computador é constituído de quatro unidades básicas:
 unidade de entrada,
 unidade de saída,
 unidade de processamento central e
 memória.

74
Organização básica de um
computador
 Unidades devem se comunicar entre si.

Ex.: Teclado -> Memória -> CPU

 Comunicação é feita através de uma


linguagem

75
Organização básica de um
computador
 Linguagem para comunicação interna  Linguagem de
máquina
 Possui apenas dois símbolos: zero e um (bit – binary
digit)
 Palavras da linguagem de máquina são sequências de
bits

76
Programas de computadores
 Programas devem ter uma finalidade específica:
 Games
 Processadores de Texto
 Navegadores (Browsers)
 Etc.

 Programa = conjunto de instruções que podem ser


executadas pelo computador, de tal forma que a
execução de subconjuntos destas instruções
permitem a realização de ações mais genéricas.

77
Lógica de programação
 Desenvolvimento de um programa requer a
utilização de um raciocínio ímpar em relação aos
raciocínios utilizados na solução de problemas de
outros campos do saber
 Para resolver um determinado problema é
necessário que encontremos uma sequência de
instruções cuja execução resulte na solução da
questão
 Programa = Algoritmo que pode ser executado em
um computador
 Lógica de Programação = conjunto de raciocínios
utilizados para o desenvolvimento de algoritmos (e,
portanto, de programas)
78
IDE - Integrated Development
Environment
 Ambiente Integrado de Desenvolvimento:
programa de computador que reúne
características e ferramentas de apoio ao
desenvolvimento de software com o objetivo
de agilizar este processo.

 Editor, compilador, depurador, etc.

79
IDE – CodeBlocks
 CodeBlocks: IDE disponível para Linux e
Windows
http://www.codeblocks.org/downloads

 Download gratuito

80
IDE – CodeBlocks

81
IDE – CodeBlocks
Criando um Programa.

82
IDE – CodeBlocks

83
IDE – CodeBlocks

84
IDE – CodeBlocks

85
IDE – CodeBlocks

86
IDE – CodeBlocks

87
IDE – CodeBlocks

88
IDE – CodeBlocks

89
Criando seu primeiro programa
 A geração do programa executável a partir do
programa fonte obedece a uma seqüência de
operações.
 Editor ( módulo fonte em C)
 Compilador ( gera o arquivo objeto)
 Lincador ( gera o executável)

90
Visão Geral
 Editor ( módulo fonte em C)
 Ex.: first.c

 Compilador ( gera o arquivo objeto)


 Ex.: first.o

 Lincador ( gera o executável)


 Ex.: first.exe

91
Estrutura de um Programa em C
 Toda linguagem de programação deve seguir uma
sintaxe.
 A sintaxe são regras detalhadas para cada
construção válida. Estas regras estão relacionadas
com os tipos, as declarações, as funções e as
expressões.
 Os tipos definem as propriedades dos dados
manipulados em um programa.
 As declarações expressam as partes do programa,
podendo dar significado a um identificador, alocar
memória, definir conteúdo inicial, definir funções.
 As funções especificam as ações que um programa
executa quando roda.

92
Programa Mínimo em C
 Todo programa em C deve conter uma função
identificada por main (cuja tradução é principal).
Esta será sempre a primeira função do programa
a ser executada

main( )
{

93

You might also like