Ementrio Noes de hardware e software Conceito de

  • Slides: 58
Download presentation
Ementário • Noções de hardware e software. • Conceito de algoritmo e programação. •

Ementário • Noções de hardware e software. • Conceito de algoritmo e programação. • Algoritmos: representação, técnicas e estruturas de elaboração. Técnicas de projeto e desenvolvimento de algoritmos. • Representação de dados. Tipos de dados. Cadeia de caracteres, vetores e registros. Instruções simples e compostas. Subprogramação. Recursividade. Elaboração e implementação de programas em uma linguagem estruturada de alto nível. Alocação dinâmica de memória. Listas lineares, pilha, fila, árvores e grafos. • Métodos de ordenação. • Definição e manipulação de arquivos externos. • Aplicações práticas utilizando uma linguagem estruturada de alto nível (Pascal e C).

Introdução • Todo trabalho realizado por um computador é baseado na manipulação das informações

Introdução • Todo trabalho realizado por um computador é baseado na manipulação das informações contidas em sua memória. – instruções, comandam o funcionamento da máquina e determinam a maneira como devem ser tratados os dados. – dados, correspondem à porção das informações a serem processadas pelo computador.

Tipos de Dados • os dados são representados pelas informações a serem tratadas (processadas)

Tipos de Dados • os dados são representados pelas informações a serem tratadas (processadas) por um computador. – numéricos • inteiro • real – literais – lógicos (booleanos) integer real char / string boolean

Tipos Primitivos (ou básicos) Numérico Inteiro Real Literal Lógico

Tipos Primitivos (ou básicos) Numérico Inteiro Real Literal Lógico

Tipo Inteiro • dados numéricos positivos ou negativos, excluindo-se destes qualquer número decimal ou

Tipo Inteiro • dados numéricos positivos ou negativos, excluindo-se destes qualquer número decimal ou fracionário {. . . , -3, -2, -1, 0, 1, 2, 3, . . . }

Tipo Inteiro - Exemplos 0 número inteiro zero 7 +7 número inteiro positivo sete

Tipo Inteiro - Exemplos 0 número inteiro zero 7 +7 número inteiro positivo sete -7 número inteiro negativo sete

Tipo Real (1/2) • dados numéricos positivos ou negativos e números decimais ou fracionários

Tipo Real (1/2) • dados numéricos positivos ou negativos e números decimais ou fracionários 12. 05 - n° real positivo com duas casas decimais 255. - n° real positivo com zero casas decimais 0. 75 - n° real positivo com duas casas decimais -11. 3 - n° real negativo com uma casa decimal -0. 55 - n° real negativo com duas casas decimais

Tipo Real (2/2) • Há uma diferença entre 0, que é um dado do

Tipo Real (2/2) • Há uma diferença entre 0, que é um dado do tipo inteiro, e 0. (ou. 0 ou 0. 0) que é um dado do tipo real. Portanto, a simples existência do ponto decimal serve para diferenciar um dado numérico do tipo inteiro de um do tipo real. 0. 0 - n° real com uma casa decimal 0. - n° real com zero casas decimais

Tipo Real - Exemplos (1/2) 0. 0. 00000 E+00 número real zero 0. 50

Tipo Real - Exemplos (1/2) 0. 0. 00000 E+00 número real zero 0. 50 +0. 5 0. 75 número real positivo zero ponto cinco número real positivo zero ponto setenta e cinco 7. 500000 E-01 número real positivo zero ponto setenta e cinco -0. 5 número real negativo zero ponto cinco -0. 50 número real negativo zero ponto cinco -5. 00000 E-01 número real negativo zero ponto cinco

Tipo Real - Exemplos (2/2) -0. 75 número real negativo zero ponto setenta e

Tipo Real - Exemplos (2/2) -0. 75 número real negativo zero ponto setenta e cinco -7. 500000 E-01 número real negativo zero ponto setenta e cinco 7. 0 7. +7. 7. 00000 E+00 número real positivo sete -7. 0 número real negativo sete -7. 00000 E+00 número real negativo sete

Tipo Literal (1/2) • sequência de caracteres contendo letras, dígitos e/ou símbolos especiais (tabela

Tipo Literal (1/2) • sequência de caracteres contendo letras, dígitos e/ou símbolos especiais (tabela de códigos ASCIIAmerican Standard Code for Information Interchange) • caracter, alfanumérico, cadeia de caracteres, ou ainda, do inglês, string • os dados literais são representados nos programas pela coleção de caracteres, delimitada em seu início e término com a aspas simples (')

A Tabela ASCII (American Standard Code for Information Interchange) é usada pela maior parte

A Tabela ASCII (American Standard Code for Information Interchange) é usada pela maior parte da indústria de computadores para a troca de informações. Cada caractere é representado por um código de 8 bits, ou seja, um byte. 28 = 256 caracteres: 0 31 Caracteres de Controle 32 127 ASCII Normal 128 255 ASCII Estendida

Tipo Literal (2/2) • o tipo literal possui um comprimento dado pelo número de

Tipo Literal (2/2) • o tipo literal possui um comprimento dado pelo número de caracteres nele contido 'Brasil' - literal de comprimento 6 '255. ' - literal de comprimento 4 '-0. 55' - literal de comprimento 5 '' - literal nula, comprimento 0 '0' - literal de comprimento 1

Tipo Lógico (ou booleano) • representam dois únicos valores lógicos possíveis – falso, negativo,

Tipo Lógico (ou booleano) • representam dois únicos valores lógicos possíveis – falso, negativo, 0, false – verdadeiro, positivo, 1, true • booleanos – devido a significativa contribuição de BOOLE à área da lógica matemática • flags, sinalizadores, aberto/fechado, . . .

Programa = Algoritmo + Estrutura de Dados A todo momento durante a execução de

Programa = Algoritmo + Estrutura de Dados A todo momento durante a execução de qualquer tipo de programa os computadores estão manipulando informações, representadas pelos diferentes tipos de dados, armazenadas em sua memória.

Memória • Constituída por um número finito de localizações (ou células) onde são armazenados

Memória • Constituída por um número finito de localizações (ou células) onde são armazenados os dados. • Existe um sistema de endereçamento da memória que permite identificar unicamente cada localização (ou célula) da memória, esta identificação é conhecida como endereço.

A Arquitetura da Memória • Cada célula de memória é mais conhecida como byte.

A Arquitetura da Memória • Cada célula de memória é mais conhecida como byte. • Um byte é um agrupamento de 8 bits, numerados em ordem descrente de 7 até 0. Byte 7 6 5 4 3 2 1 0 bit

Bit • Cada bit é capaz de armazenar uma informação binária (0 ou 1).

Bit • Cada bit é capaz de armazenar uma informação binária (0 ou 1). Como um bit possui dois estados possíveis, e como um byte é formado por 8 bits, então um byte possui 28 = 256 estados possíveis. • Apesar dos bytes serem subdivididos em pedaços menores, os bits, a menor porção acessível de memória é o byte. Ou seja, se quisermos escrever (ou ler) algum dado na (da) memória do computador, teremos de fazê-lo byte a byte.

Números da Memória byte = 8 bits, representam um único caractere 1 Kilobyte (KB)

Números da Memória byte = 8 bits, representam um único caractere 1 Kilobyte (KB) = 1024 bytes 1 Megabyte (MB) = 1024 KB 128 MB = (128 * 1024 KB) * 1024 bytes 128 MB = 134. 217. 728 de caracteres

Representação esquemática das células de memória de um computador. = Célula = um Byte

Representação esquemática das células de memória de um computador. = Célula = um Byte = um caractere localização da célula

Armazenamento da literal ‘chico’ na mémoria de um computador. = Célula = um Byte

Armazenamento da literal ‘chico’ na mémoria de um computador. = Célula = um Byte = um caractere código ASCII representação binária do código ASCII localização da célula

Variáveis (1/2) • O acesso de informações na memória é bastante ilegível e difícil

Variáveis (1/2) • O acesso de informações na memória é bastante ilegível e difícil de se trabalhar. Para contornar esta situação criou-se o conceito de variável, que é uma entidade destinada a guardar uma informação. • Basicamente, uma variável possui três atributos: um nome, um tipo de dado associado à mesma e a informação por ela guardada.

Variáveis (2/2) • uma informação é classificada como variável quando tem a possibilidade de

Variáveis (2/2) • uma informação é classificada como variável quando tem a possibilidade de ser alterada em algum instante no decorrer do tempo. • imagine a memória de um computador como um grande arquivo, com várias gavetas, onde é possível guardar em cada gaveta apenas um único valor por vez, e que estas gavetas deverão como em um arquivo estarem identificadas com uma “etiqueta” contendo um nome.

Regras para nomes (1/2) As seguintes regras devem ser seguidas na formação de nomes

Regras para nomes (1/2) As seguintes regras devem ser seguidas na formação de nomes de variáveis ou identificadores: • um identificador é uma sequência de um ou mais caracteres alfabéticos e numéricos, caracteres de sublinhado de qualquer tamanho (somente os primeiros 63 são significativos); • o primeiro caractere de um identificador deve ser uma letra ou um caractere de sublinhado “_”; • não são permitidos símbolos gráficos, operadores ou espaços em branco no nome.

Regras para nomes (2/2) • os nomes de identificadores não sensíveis a letras maiúsculas

Regras para nomes (2/2) • os nomes de identificadores não sensíveis a letras maiúsculas e minúsculas, mas usualmente cada uma das palavras de um identificador iniciase com uma letra maiúscula, exemplos: – codigo. Do. Cliente ou saldo. Credor. Do. Cliente; – cd. Item, CDITEM e cditem referem-se ao mesmo identificador. • Código, 10 Salario, Salario Minimo, ‘Brasil’, são exemplos de nomes inválidos

Palavras Reservadas Além das regras de formação de nomes, uma variável, ou qualquer outro

Palavras Reservadas Além das regras de formação de nomes, uma variável, ou qualquer outro nome a ser definido pelo programador, não pode ser uma das palavras reservadas da linguagem. As palavras reservadas são os nomes dos tipos primitivos, os comandos da linguagem e quaisquer outros elementos pertencentes à “sintaxe” dessa linguagem. begin continue label while byte end longint type do if integer case function repeat then record var goto until else break const for char

Declaração de Variáveis • são posições de memória utilizadas para armazenar informações referenciadas dentro

Declaração de Variáveis • são posições de memória utilizadas para armazenar informações referenciadas dentro do programa • seus valores podem sofrer alterações var Nome. Do. Mes: I, J, N: Preco, Juros: Flag: nome da variável (identificador) string; integer; real; boolean; tipo do dado

Sintaxe p/ Declaração de Variáveis var identificador : integer ; real , char boolean

Sintaxe p/ Declaração de Variáveis var identificador : integer ; real , char boolean obs. Este esquema utilizado para ilustrar a sintaxe de intruções é chamado de Diagrama Sintático.

Estrutura de Dados: Manipulação: var Nome. Do. Mes: I, J, N: Preco, Juros: Flag:

Estrutura de Dados: Manipulação: var Nome. Do. Mes: I, J, N: Preco, Juros: Flag: I J N Preco Juros Nome. Do. Mes Flag string; integer; real; boolean; : = : = 0; 5; 50; 150. 00; 0. 15; 'Fevereiro'; True; Representação dos Dados na Memória I 0 J 5 N Preco 50 150. 00 Juros Nome. Do. Mes Flag 0. 15 Fevereiro True

Mapeamento de Variáveis na Memória • O computador não é capaz de trabalhar diretamente

Mapeamento de Variáveis na Memória • O computador não é capaz de trabalhar diretamente com nomes simbólicos, como os nomes das variáveis. Pelo contrário, o computador só consegue tratar com células de memória por meio do conhecimento de seus endereços. • Para intermediar esta situação, o tradutor (compilador ou interpretador) monta uma tabela de mapeamento dos nomes simbólicos em posições de memória. Esta tabela é denominada Tabela de Símbolos.

Forma geral de uma Tabela de Símbolos. o tipo de dado da variável, a

Forma geral de uma Tabela de Símbolos. o tipo de dado da variável, a partir do qual é possível determinar o tamanho do espaço de memória consumido pela mesma. a posição inicial do conjunto de bytes contíguos de memória onde está armazenada a informação da variável o nome simbólico de cada uma das variáveis do programa

Expressões O conceito de expressão em termos computacionais está intimamente ligado ao conceito de

Expressões O conceito de expressão em termos computacionais está intimamente ligado ao conceito de expressão (ou fórmula) matemática, onde um conjunto de variáveis e constantes numéricas relacionam-se por meio de operadores aritméticos compondo uma fórmula que, uma vez avaliada, resulta num valor. O conceito de expressão aplicado à computação assume uma conotação mais ampla: uma expressão é uma combinação de variáveis, funções, constantes e operadores, e que, uma vez avaliada, resulta num valor.

H Triângulo de base (B) e altura (H) Área = 0, 5 x B

H Triângulo de base (B) e altura (H) Área = 0, 5 x B x H B Area : = 0. 5 * B * H; matemática computacional A fórmula da área do triângulo utiliza três variáveis: B e H, que contém as dimensões do triângulo, e Área, onde é guardado o valor calculado (resultado da avaliação da expressão). Há também, uma constante (0, 5) e o operador de multiplicação (x), que aparece duas vezes na expressão.

Operadores são elementos funcionais que atuam sobre operandos e produzem um determinado resultado. A

Operadores são elementos funcionais que atuam sobre operandos e produzem um determinado resultado. A expressão 3 + 2 relaciona dois operandos (os n°s 3 e 2) por meio do operador de adição (+). unários, quando atuam sobre um único operando. Ex. o sinal de (-) na frente de um número, cuja função é inverter seu sinal. binários, quando atuam sobre dois operandos. Ex. soma, subtração, multiplicação e divisão.

Expressões • regra computacional que sempre especifica um valor como resultado • operadores resultado

Expressões • regra computacional que sempre especifica um valor como resultado • operadores resultado – aritméticos – lógicos – literais – relacionais numérico lógico literal lógico

Operadores aritméticos + * / div mod adição subtração multiplicação divisão real divisão inteira

Operadores aritméticos + * / div mod adição subtração multiplicação divisão real divisão inteira resto da divisão

Elementos da operação de divisão: dividendo 17 2 16 8 1 divisor quociente resto

Elementos da operação de divisão: dividendo 17 2 16 8 1 divisor quociente resto var dividendo, divisor: integer; quociente, resto: integer; begin dividendo : = 17; divisor : = 2; quociente : = dividendo divisor; { resultado 8 } resto : = dividendo mod divisor; { resultado 1 } end.

5 4 2 2 1 5 mod 2 5 div 2

5 4 2 2 1 5 mod 2 5 div 2

17 3 15 5 2 17 div 3 17 mod 3

17 3 15 5 2 17 div 3 17 mod 3

Tipo do resultado de expressões utilizando operadores aritméticos. var A, B, C: integer; X,

Tipo do resultado de expressões utilizando operadores aritméticos. var A, B, C: integer; X, Y, Z: real; A + B + C expressão de resultado inteiro A + B + Z expressão de resultado real A / B expressão de resultado real A div B expressão de resultado inteiro A mod B expressão de resultado inteiro X / Y expressão de resultado real

Operadores lógicos not and or xor negação lógica “e” lógico conjunção “ou” lógico disjunção

Operadores lógicos not and or xor negação lógica “e” lógico conjunção “ou” lógico disjunção “ou exclusivo” lógico

Tabela-verdade dos operadores lógicos (ou booleanos).

Tabela-verdade dos operadores lógicos (ou booleanos).

Representação da operação lógica AND por meio de um circuito elétrico com interruptores em

Representação da operação lógica AND por meio de um circuito elétrico com interruptores em série. A Bateria B Lâmpada

Representação da operação lógica AND por meio de um circuito elétrico com interruptores em

Representação da operação lógica AND por meio de um circuito elétrico com interruptores em série. A Bateria B Lâmpada

Representação da operação lógica AND por meio de um circuito elétrico com interruptores em

Representação da operação lógica AND por meio de um circuito elétrico com interruptores em série. A Bateria B Lâmpada

Representação da operação lógica AND por meio de um circuito elétrico com interruptores em

Representação da operação lógica AND por meio de um circuito elétrico com interruptores em série. A Bateria B Lâmpada

Representação da operação lógica OR por meio de um circuito elétrico com interruptores em

Representação da operação lógica OR por meio de um circuito elétrico com interruptores em paralelo. A B Bateria Lâmpada

Representação da operação lógica OR por meio de um circuito elétrico com interruptores em

Representação da operação lógica OR por meio de um circuito elétrico com interruptores em paralelo. A B Bateria Lâmpada

Representação da operação lógica OR por meio de um circuito elétrico com interruptores em

Representação da operação lógica OR por meio de um circuito elétrico com interruptores em paralelo. A B Bateria Lâmpada

Representação da operação lógica OR por meio de um circuito elétrico com interruptores em

Representação da operação lógica OR por meio de um circuito elétrico com interruptores em paralelo. A B Bateria Lâmpada

Operadores relacionais (1/2) = <> > < >= <= in igual a diferente de

Operadores relacionais (1/2) = <> > < >= <= in igual a diferente de maior que menor que maior igual a menor igual a pertence a (pertinência)

Operadores relacionais (2/2) Variáveis: Atribuições: var a, b: integer; Expressões lógicas (testes lógicos) a

Operadores relacionais (2/2) Variáveis: Atribuições: var a, b: integer; Expressões lógicas (testes lógicos) a = b a <> b a < b a >= b a <= b a : = 2; b : = 3; resultado falso verdadeiro

Exemplificando as Relações (1/2) Representação matemática: 5 5 5 Representação computacional: n = 5

Exemplificando as Relações (1/2) Representação matemática: 5 5 5 Representação computacional: n = 5 (n = 5) n < 5 (n < 5) n ≤ 5 (n <= 5) n > 5 (n > 5) n ≥ 5 (n >= 5)

Exemplificando as Relações (2/2) Representação matemática: 5 5 9 5 9 Representação computacional: n

Exemplificando as Relações (2/2) Representação matemática: 5 5 9 5 9 Representação computacional: n # 5 (n <> 5) n # 5, e n # 9 ((n <> 5) and (n <> 9)) n = 5, ou n = 9 ((n = 5) or (n = 9)) n < 5, ou n > 9 ((n < 5) or (n > 9)) n ≥ 5, e n ≤ 9 ((n >= 5) and (n <= 9))

Operadores literais • Expressões literais são aquelas cujo resultado da avaliação é um valor

Operadores literais • Expressões literais são aquelas cujo resultado da avaliação é um valor literal. • concatenação de strings (+), toma-se duas strings e acrescenta-se (concatena-se) a segunda delas ao final da primeira. 'Ordem' + 'e' + ' Progresso' 'Ordeme Progresso'

Precedência de operadores • • Primeiro Segundo Terceiro Quarto not, +, - (unários) *,

Precedência de operadores • • Primeiro Segundo Terceiro Quarto not, +, - (unários) *, /, div, mod, and (multiplicativos) +, -, or, xor (aditivos) =, <, >, <=, >=, in (relacionais) Notas: • a utilização de parênteses alteram a precedência dos operadores • operadores de mesma precedência, da esquerda para a direita

Comando de Atribuição (: =) Variável : = Expressão; Semântica do comando de atribuição:

Comando de Atribuição (: =) Variável : = Expressão; Semântica do comando de atribuição: 1. Substitui as variáveis da expressão pelos seus respectivos valores; 2. Avalia as subexpressões obedecendo a prioridade dos operadores; 3. Atribui (armazena) o valor resultado da expressão no endereço correspondente à variável. Obs. caso o tipo do resultado da expressão não for do mesmo tipo da variável ocorrerá um erro de incompatibilidade de tipos.

Referência • Técnicas de Programação - Uma abordagem Estruturada – Capítulo 3 - Tipos

Referência • Técnicas de Programação - Uma abordagem Estruturada – Capítulo 3 - Tipos de Dados – Capítulo 4 - Variáveis – Capítulo 5 - Expressões – Walter Luiz Caram Saliba – MAKRON Books, 1993