Buscar

01.Introducao.e.Conceitos.Basicos

Prévia do material em texto

Algoritmos 
DCC 119 
Introdução e Conceitos 
Básicos 
 
2 
 Sistemas de Numeração 
 Sistemas Computacionais 
 Estrutura de um Computador Digital 
 Sistemas Operacionais 
 Algoritmo – Introdução 
 Formas de representação de algoritmos 
Sumário 
3 
Sistemas de Numeração 
Como fazer a conversão entre o sistema decimal e o 
sistema utilizado num computador? 
HEXADECIMAL 
DECIMAL BINÁRIO 
4 
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. 
5 
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. 
6 
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 
7 
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. 
8 
Sistema Decimal: 
Como Funciona 
0
1
2
3
4
5
6
7
8
9
10 Zera e vai-um
9 
Sistema Binário ou de Base 2 
00
01
10 Zera e vai-um
11
Usa notação posicional e possui dois algarismos distintos: 
0 e 1. 
10 
Conversão Decimal - Binário 
Problema: como converter 
2358(10) para a base 2? 
 
E 100101 (2) para a base 
10? 
Decimal Binário 
0 0 
1 1 
2 10 
3 11 
4 100 
5 101 
6 110 
7 111 
8 1000 
9 1001 
10 1010 
11 
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
12 
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 16
1 + 0 x 160 = (16)10 
(F30A)16  15 x 16
3 + 3 x 162 + 0 x 161 + 10 x 160 = 
 (62218)10 
(1101)2  1 x 2
3 + 1 x 22 + 0 x 21 + 1 x 20 = (13)10 
(10001111)2  2
7 + 23 + 22 + 21 + 20 = (143)10 
13 
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 
14 
Conversão de Base 
18 (10) = 10010(2) 
18 2
0 9 2
1 4 2
0 2 2
0 1 2
1 0
Converter os números decimais abaixo para binários 
15 
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 
16 
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 
17 
Resumo 
DECIMAL 
÷2 
x2n 
tabela 
x16n 
BINÁRIO HEXADECIMAL 
÷16 
18 
Introdução (Parte II) 
Sistemas 
Computacionais 
DCC119 – Algoritmos 
 
 
19 
Sistemas Computacionais 
Peopleware 
(usuário) 
Software 
(programas) 
Hardware 
(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. 
 
20 
Estrutura de um Computador 
Digital 
Unidade Lógica 
e Aritmética 
Unidade de 
Controle 
Memória 
Principal Memória 
Secundária 
Interfaces 
Unidade Central de Processamento 
Unidades 
de 
Entrada 
Unidades 
de 
Saída 
Periféricos 
21 
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. 
22 
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. 
 
 
 
 
A memória é considerada um meio temporário de 
armazenamento de dados, que permanecem ali somente 
durante o tempo em que estiverem sendo processados. 
CPU 
Memória 
Principal 
23 
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. 
24 
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; 
Memória Principal 
Conceitos: Bit, Byte e Word 
25 
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 
26 
Memória Principal 
Organização 
Representação de uma memória de 1 KB: 
 Endereço Byte 
0 
1 
2 0 1 0 0 0 0 0 1 
... 
1023 
No byte de 
endereço 2 está 
armazenado o 
código ASCII do 
caracter “A”. 
O processador acessa o conteúdo de um byte a partir do 
endereço desse byte. 
 Por que 1 KB = 2
10 bytes e não 103 bytes? ou 
Quantos bits são necessários para representar um dos 
endereços da memória acima? 
27 
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. 
 
 
 
Outra função da memória secundária é oferecer uma expansão 
virtual da memória principal – Memória Virtual. 
 
Memória 
Principal 
Memória 
Secundária 
Memória Virtual 
CPU 
Memória 
Principal 
Memória 
Secundária 
28 
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); 
29 
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. 
30 
Tradutor 
Os computadores só podem 
executar diretamente os 
algoritmos expressos em 
linguagem de máquina (que é 
um conjunto de instruções 
capazes de ativar diretamente 
os dispositivos eletrônicos do 
computador). 
Um tradutor é um programa que 
traduz um algoritmo que está 
escrito em uma determinada 
linguagem de programação em 
linguagem de máquina. 
Programa 
Fonte 
Tradutor 
Programa 
Objeto 
Algoritmo ou 
programa escrito 
em uma 
determinada 
linguagem de 
programação 
Algoritmo ou 
programa 
traduzido para 
linguagem de 
máquina 
31 
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. 
Programa 
Fonte 
Compilador 
Interpretador 
Programa 
Objeto 
Execução de 
todo o 
programa 
Executa um 
comando e 
volta 
Linguagem 
de 
Alto Nível 
Tradutor 
Linguagem 
de 
Máquina Execução 
32 
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. 
33 
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. 
 
 
34 
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. 
35 
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. 
36 
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). 
37 
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 
 
38 
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” 
 
39 
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 
 
40 
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. 
 
 
41 
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”; 
 
42 
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. 
 
43 
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”; 
 
44 
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. 
45 
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”; 
 
46 
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. 
 
47 
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) 
48 
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. 
49 
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 
 
50 
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 
51 
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. 
 
52 
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. 
53 
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 
 
54 
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 
55 
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. 
 
 
 
 
 
 
56 
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 
 
57 
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. 
 
 
 
 
 
 
58 
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. 
 
59 
Pseudolinguagem 
 Representação de um Algoritmo na Forma de 
Pseudolinguagem : 
 
principal 
{ 
 <declaração_de_variáveis> 
 <comandos> 
} 
 
60 
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"); 
 } 
} 
 
61 
Próxima aula... 
 Conceito de tipos de dados; 
 
 Variáveis; 
 
 Operadores; 
 
 Comandos de entrada e saída... 
 
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: 
https://sites.google.com/site/algoritmosufjf/ 
 Neste site você encontrará: 
 Material Didático; 
 Data das provas; 
 Listas de Exercício; 
 Horário e site de Monitoria; 
 Links diversos etc.64 
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. 
65 
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. 
66 
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. 
 
67 
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 
 
68 
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.” 
 
69 
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 
 
 
 
 
70 
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 
 
71 
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 
 
72 
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 
 
73 
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/ 
 
74 
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. 
 
75 
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) 
 
76 
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. 
 
77 
IDE – CodeBlocks 
 CodeBlocks: IDE disponível para Linux e 
Windows 
http://www.codeblocks.org/downloads 
 
 Download gratuito 
 
78 
IDE – CodeBlocks 
79 
IDE – CodeBlocks 
Criando um Programa. 
80 
IDE – CodeBlocks 
81 
IDE – CodeBlocks 
82 
IDE – CodeBlocks 
83 
IDE – CodeBlocks 
84 
IDE – CodeBlocks 
85 
IDE – CodeBlocks 
86 
IDE – CodeBlocks 
87 
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) 
 
88 
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 
 
 
89 
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. 
90 
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( ) 
{ 
 
}

Continue navegando