Baixe o app para aproveitar ainda mais
Prévia do material em texto
N575 - Algoritmos e Programação de Computadores Modelo Algorítmico –Variáveis, Tipos de dados e Identificadores Prof. Raphael Torres Santos Carvalho N 5 7 5 - A lg o ri tm o s e P ro gr am aç ão d e C o m p u ta d o re s 1 Roteiro Objetivo Variável Identificadores Tipos de Dados N 5 7 5 - A lg o ri tm o s e P ro gr am aç ão d e C o m p u ta d o re s 2 Objetivo Identificar os conceitos básicos para a construção de algoritmos. N 5 7 5 - A lg o ri tm o s e P ro gr am aç ão d e C o m p u ta d o re s 3 Relembrando ... Já vimos em aula anterior que, conceitualmente, o computador pode ser representado como a figura abaixo Sendo que: O processador é responsável pelo processamento e execução de programas armazenados na memória principal A memória principal armazena todos os programas em execução, bem como os dados que estão sendo processados o A memória é organizada em células endereçáveis de tamanho fixo (geralmente de 1 byte) N 5 7 5 - A lg o ri tm o s e P ro gr am aç ão d e C o m p u ta d o re s 4 Conceito de variável Assim, podemos dizer que nada “entra ou sai” do computador sem passar pela memória principal Vimos que algoritmos manipulam dados, sejam eles de entrada, parte do processamento ou dados de saída Esses dados são armazenados na memória principal Para acessarmos os dados na memória fazemos uso do conceito de variável Uma VARIÁVEL é um espaço em memória Possui um NOME e um TIPO Seu CONTEÚDO pode variar ao longo do tempo (execução do programa) o Embora seu valor possa mudar ao longo do tempo, ela só pode armazenar um valor a cada instante N 5 7 5 - A lg o ri tm o s e P ro gr am aç ão d e C o m p u ta d o re s 5 Conceito de variável Variável: nome, tipo e conteúdo O NOME ou IDENTIFICADOR uma abstração do endereço => é mais fácil usarmos um nome para nos referirmos a uma variável do que seu endereço (numérico) O TIPO informa ao tradutor da linguagem quanto de espaço deve ser alocado para a variável e também possibilita a verificação da validade de certas operações => por ex., só faz sentido somar duas variáveis se elas forem numéricas O CONTEÚDO é o valor de dado armazenado => pode ser alterado (lido ou escrito) durante o processamento N 5 7 5 - A lg o ri tm o s e P ro gr am aç ão d e C o m p u ta d o re s 6 Variável O conteúdo de uma variável pode ser alterado através de um comando de atribuição, (=) ou seja, após uma atribuição a variável muda de valor sobrescrevendo o valor anterior. Não há uma inicialização implícita na declaração, mas a variável pode ser inicializada na declaração. Todas as variáveis devem ser declaradas antes de serem usadas. N 5 7 5 - A lg o ri tm o s e P ro gr am aç ão d e C o m p u ta d o re s 7 Variável Sintaxe: tipo lista_de_variáveis; onde: tipo deve ser um dos tipos válidos em C; lista_de_variáveis pode consistir de um ou mais nomes (identificadores) separados por vírgula. Exemplos: char ch, letra; int count; float pi; N 5 7 5 - A lg o ri tm o s e P ro gr am aç ão d e C o m p u ta d o re s 8 Conteúdo da variável Quando o conteúdo da variável não pode mudar ao longo do tempo, ela é chamada de CONSTANTE Uma CONSTANTE NOMEADA é um tipo especial de variável que nunca terá seu conteúdo alterado Assim como a variável, podemos usar o nome da constante para nos referenciarmos ao seu valor armazenado em memória São identificadores que não podem ter seus valores alterados durante a execução do programa. N 5 7 5 - A lg o ri tm o s e P ro gr am aç ão d e C o m p u ta d o re s 9 Constante Constantes em C podem ser de qualquer um dos 5 tipos básicos de dados, entretanto a maneira como cada constante é representada no código fonte depende do seu tipo. Caracteres são envolvidas por aspas simples. Ex.: ´a´; strings (cadeia de caracteres) são delimitadas com aspas duplas. Ex.: “Algoritmos e Programação de Computadores” ; Inteiros na base decimal são representados sem componentes fracionários. Ex.: 10; Inteiros na base hexadecimal são representados antecedidos de 0x. Ex.: 0xA13D; Ponto flutuante requerem o ponto decimal seguido da componente fracionária. Ex.: 11.98; N 5 7 5 - A lg o ri tm o s e P ro gr am aç ão d e C o m p u ta d o re s 10 Constante Constantes – declaração. Para criar uma constante (simbólica), existe uma diretiva de compi-lação #define que, em geral, é colocada no início do código fonte. Sintaxe: #define identificador_da_constante valor N 5 7 5 - A lg o ri tm o s e P ro gr am aç ão d e C o m p u ta d o re s 11 #define LARGURA_MAXIMA 50 #define NRO_DE_DIAS_DA_SEMANA 7 #define NRO_DE_HORAS DO DIA 24 #define FALSO 0 #define VERDADEIRO 1 #define UNIVERSIDADE “Universidade Federal do Ceará” #define TERMINO ‘\’ #define VALOR_DE_PI 3.1415 /* Obs.: Não se coloca ponto-e-vírgula após o valor nos #define */ int main(void) { int TotalDeHoras; TotalDeHoras = 10 * NRO_DE_DIAS_DA_SEMANA * NRO_DE_HORAS_DO_DIA; printf(“Local: %s\n”, UNIVERSIDADE); /* ... */ return 0; } Identificadores Identificadores são nomes que o programador usa para representar variáveis, constantes, tipos, funções e rótulos no seu código fonte. Criamos um identificador especificando-o na declaração de uma variável, constante, tipo, função ou rótulo. Podemos depois usar o identificador em instruções posteriores do código fonte para referir-nos ao item associado. N 5 7 5 - A lg o ri tm o s e P ro gr am aç ão d e C o m p u ta d o re s 12 Identificadores Um identificador (também chamado de nome) pode ser “qualquer palavra”, desde que siga algumas regras de formação: Identificadores podem conter de 1 a vários caracteres ASCII. Os caracteres ASCII válidos são: ‘a’ a ‘z’, ‘A’ a ‘Z’, ‘0’ a ‘9’ e ‘_’ (underscore). Um identificador deve inicializar por uma letra ou por um ‘_’. A partir do segundo caractere, pode conter letras, números e/ou ‘_’. Deve-se usar identificadores significativos no contexto do programa. Lembrar que o C é uma linguagem case-sensitive, isto é, maiúsculas são diferentes de minúsculas. o SOMA ≠ soma ≠ SoMa ≠ sOmA Deve ser diferente dos comandos da linguagem (palavras reservadas). N 5 7 5 - A lg o ri tm o s e P ro gr am aç ão d e C o m p u ta d o re s 13 Identificadores Exemplos de nomes válidos A, a, nota, NOTA, x5, A32, Nota1, matricula, MenorIdade, nota_1, dia_mes Exemplos de nomes inválidos 5b, e 12, x-y, 2aPROVA,escreva, leia, nota(1), salario% N 5 7 5 - A lg o ri tm o s e P ro gr am aç ão d e C o m p u ta d o re s 14 Identificadores Palavras-chave Palavras-chave são identificadores pré-definidos que têm significados especiais para o compilador C. Você pode usá-las apenas como foram definidas. Lembre-se; o nome de um identificador não pode ser igual a nenhuma palavra- chave da linguagem C. Não podemos redefinir palavras-chave. No entanto, podemos especificar algum texto para ser substituído por palavras-chave antes da compilação, usando diretivas do pré-processador C. N 5 7 5 - A lg o ri tm o s e P ro gr am aç ão d e C o m p u ta d o re s 15 auto break case char const continue default do double else enum extern float for goto if int long register return short signed sizeof static struct switch typedef union unsigned void volatile while Tipos de dados Uma das principais funcionalidades de um computador é a manipulação de informações Por isso, é necessário que haja formas de se trabalhar com diferentes tipos de dados em um programa. Podemos definir um tipo de dados como um conjunto de objetos que tem em comum o mesmo comportamento diante de um conjunto definido de operações N 5 7 5 - A lg o ri tm o s e P ro gr am aç ão d e C o m p u ta d o re s 16 Tipos de dados Infelizmente as linguagens de programação são limitadas e não podem manipular todos os tipos de dados existentes no mundo real. Por isso, a construção de algoritmos para computador deve lidar exclusivamente com os tipos definidos nas linguagens de programação N 5 7 5 - A lg o ri tm o s e P ro gr am aç ão d e C o m p u ta d o re s 17 Tipos de dados Os tipos básicos de dados são Numéricos Literais ou caracteres Lógicos Tipos estruturados que veremos mais adiante na disciplina o Cadeia de caracteres => armazena uma cadeia de símbolos (uma palavra, uma frase, etc) o Vetor/matriz => armazena uma sequencia unidimensional (vetor) ou multidimensional (matriz) de valores de qualquer tipo N 5 7 5 - A lg o ri tm o s e P ro gr am aç ão d e C o m p u ta d o re s 18 Tipos de dados - Numéricos Os dados númericos são divididos em dois grupos: Inteiros Reais Os inteiros podem ser positivos ou negativos e não tem a parte fracionária. Exemplo: -5, 16, 0, -13, 2 Os reais podem ser positivos ou negativos e tem a parte fracionária. Exemplo: -5.3, 1.12, 0.9, -1.3, 2.0 Notação da lingua inglesa: casa decimal separada por ponto Tipos de dados - Caracteres São dados formados por um caractere ou por um cadeia de caracteres Caracteres podem ser as letras maiúsculas, minúsculas, os números (não podem ser usados para cálculo) e os caracteres especiais (!,@,#,?,+, ...) Um caractere é representado entre apóstrofos Uma cadeia de caractere é representado entre aspas. Exemplo: ‘a’, ‘b’, “raphael”, “@gmail.com” Tipos de dados - Lógicos São também chamados de booleanos São oriundos da lógica matemática ou lógica de Boole* Pode assumir os valores: Verdadeiro (V) Falso (F) *George Boole - Matemático considerado um dos formuladores da lógica matemática. Tipos de dados em C Na linguagem de programação C, os tipos básicos de dados existentes são: Números inteiros Números reais Caracteres N 5 7 5 - A lg o ri tm o s e P ro gr am aç ão d e C o m p u ta d o re s 22 Tipos de dados – Números inteiros Na linguagem C, o tipo int é o tipo básico para armazenar números inteiros com e sem sinal. O tipo int é representado por 32 bits ou 4 bytes. Além do tipo básico int, a linguagem suporta a utilização dos modificadores de tipo short e long aplicados ao tipo básico int., gerando os tipos short int e long int. Eles em geral são abreviados simplesmente como short e long. Como a linguagem C está muito ligada ao hardware, a quantidade de bits para representar os tipos short, int e long dependem da plataforma em questão. No entanto, uma variável do tipo short não será maior do que uma do tipo long. N 5 7 5 - A lg o ri tm o s e P ro gr am aç ão d e C o m p u ta d o re s 23 Tipos de dados – Números inteiros Em uma plataforma de 64 bits, o tipo short utiliza 16 bits (2 bytes), o tipo int utiliza 32 bits (4 bytes) e o tipo long utiliza 64 bits (8 bytes). Porém, em uma plataforma de 32 bits, o tipo int utiliza 32 bits (4 bytes) e o tipo long também utiliza 32 bits (4 bytes). Estes três tipo podem representar valores negativos, através do modificador de tipo signed (com sinal). A ausência deste modificador de tipo indica que o tipo é signed por default (padrão). N 5 7 5 - A lg o ri tm o s e P ro gr am aç ão d e C o m p u ta d o re s 24 Tipos de dados – Números inteiros • Signed (com sinal) – 4 bytes – -231 até 231-1 ou – -2.147.483.648 até 2.147.483.647 • Unsigned (sem sinal) – 4 bytes – 0 até 232-1 ou – 0 até 4.294.967.295 N 5 7 5 - A lg o ri tm o s e P ro gr am aç ão d e C o m p u ta d o re s 25 Tipos de dados – Números inteiros Cuidado com os limites! 2.147.483.647 + 1 = 0 ? 11111111111111111111111111111111+ 00000000000000000000000000000001= 100000000000000000000000000000000 OVERFLOW! N 5 7 5 - A lg o ri tm o s e P ro gr am aç ão d e C o m p u ta d o re s 26 Tipos de dados - Caracteres Na linguagem C, o tipo char é o tipo básico para armazenar caracteres (letra/simbolo/número). O tipo int é representado por 8 bits ou 1 byte Signed 1 byte -27 até 27-1 ou -128 até 127 Unsigned 1 byte 0 até 28-1 0 até 255 N 5 7 5 - A lg o ri tm o s e P ro gr am aç ão d e C o m p u ta d o re s 27 Tipos de dados – Números reais Na linguagem C, os números reais ou também chamados em ponto flutuante podem ser representados por três tipos: Float Double Long double. São representados por valores numéricos com um ponto decimal. Também podem ser representados em notação científica. Exemplos: 0.0, -1.00, 234.3, 1e-3 (0.001), etc N 5 7 5 - A lg o ri tm o s e P ro gr am aç ão d e C o m p u ta d o re s 28 Tipos de dados – Números reais Representação de um número em ponto flutuante Exemplo: 15 em ponto flutuante = 01000001 01110000 00000000 00000000 • sinal = 0 ≡ +1 • expoente = 10000010 ≡ 130. • Portanto expoente = 130 - 127 = 3. • mantissa = 1110000 00000000 00000000. • Portanto 1.111 = 1 + 2-1 + 2-2 + 2-3 = 1 + ½ + ¼ + 1/8 = 15/8 • v = +1 × 23 × 15/8 = 8 × 15/8 = 15. E para precisão dupla: N 5 7 5 - A lg o ri tm o s e P ro gr am aç ão d e C o m p u ta d o re s 29 Tipos de dados – Números reais Tipo TamanhoPrecisão Faixa de valores float 4 bytes 7 dígitos de -3.4e38 a 3.4e38 double 8 bytes 15 dígitos de -1.7e308 a 1.7e308 long double 10 bytes 19 dígitos de -1.2e4932 a 1.2e4932 N 5 7 5 - A lg o ri tm o s e P ro gr am aç ão d e C o m p u ta d o re s 30 Dúvidas? N 5 7 5 - A lg o ri tm o s e P ro gr am aç ão d e C o m p u ta d o re s 31
Compartilhar