• Nenhum resultado encontrado

Linguagens de Programação I

N/A
N/A
Protected

Academic year: 2021

Share "Linguagens de Programação I"

Copied!
33
0
0

Texto

(1)

Linguagens de Programação I

Profa. Susana M. Iglesias

Tema # 3

(2)

• As linguagens imperativas são baseadas em executar um conjunto de operações sob dados,

• os dados podem ser representados por variáveis ou constantes,

• na maioria das linguagens as variáveis devem ser declaradas, especificando o tipo de dados que elas representam,

• quase todas as linguagens fornecem um conjunto de dados básicos a serem utilizados na declaração das variáveis.

(3)

• Um tipo básico de dados define:

• As características 1 e 2 dependem da arquitetura do computador, do sistema operacional e do compilador utilizado.

1. a quantidade de memória disponível para armazenar o dado,

2. a forma em que essa memória será utilizada na representação,

3. um conjunto de operações são definidas sobre o tipo de dados e estão disponíveis na linguagem através de operadores ou funções.

(4)

• Um tipo de dado e o conjunto de operações definidas sobre ele, é chamado de Tipo de Dado Abstrato (TDA).

• Tipos de dados básicos em C: 1. Tipo caractere,

char

2. Tipo inteiro,

int

3. Tipo ponto flutuante de simples precisão,

float

4. Tipo ponto flutuante de dupla precisão,

double

5. Tipo vazio,

void

(5)

• é utilizado para representar o conjunto de caracteres ASCII,

• ele pode conter um caractere: ‘a’, ‘A’, ‘7’, ‘\n’, ‘\0’ • pode ser utilizado para representar um

subconjunto dos números inteiros [0..255],

• existe uma correspondência entre o subconjunto de inteiros [0..255] e a tabela ASCII, que freqüentemente é utilizada em programação,

(6)

• a mesma correspondência é utilizada para representar um char na memória, geralmente 8 bits são utilizados,

• Entre as operações suportadas pelo tipo caractere temos a operação de atribuição e operações de comparação.

bit: 1 2 3 4 5 6 7 8

(7)

• e utilizado para representar o conjunto dos números inteiros,

• a representação de um inteiro na memória depende da arquitetura do computador, geralmente ela corresponde com o tamanho de uma palavra (32 ou 64 bits).

• representação de um inteiro na memória

bit: 1 2 3 . . . 30 31 32

1 bit para o sinal,

(8)

• Qual é o maior inteiro que uma representação de 8 bits pode representar?

• Qual é o maior inteiro que a representação anterior pode representar?

• o tipo inteiro suporta a operação de atribuição, as operações aritméticas definidas para os números naturais (soma, resta, multiplicação, divisão e resto) e operações de atribuição.

• Os inteiros são freqüentemente utilizados em programação como auxiliares, por exemplo: subscritos de arrays, ou estruturas de repetição controladas por contador.

(9)

• é utilizado para representar o conjunto dos números reais,

• ao igual que o tipo inteiro a representação na memória depende da arquitetura do computador, geralmente uma palavra de memória é utilizada para armazenar um dado ponto flutuante simples.

(10)

• representação de um ponto flutuante:

• Qual é o maior número de ponto flutuante que a representação anterior consegue representar?

• Qual é a precisão (quantidade de casas decimais) da representação?

bit: 1 2 3 . . . 30 31 32

1 bit para o sinal (azul)

8 bits para o expoente (amarelo) 23 bits para a mantissa (marrom)

8 9 10 11

1 bit para o sinal (claro) 7 bits para o valor (forte)

. . .

(11)

• O tipo float é incapaz de representar todo o conjunto dos números reais, apenas um subconjunto consegue ser representado,

• mesmo dentro de uma determinada faixa a precisão do número real tem que ser truncada, pois existe um número finito de bits para armazenar a mantissa.

• As operações definidas para os dados float, são atribuição, operações aritméticas definidas para os números reais e operações de comparação.

(12)

• O tipo ponto flutuante de precisão dupla, é uma extensão do ponto flutuante de precisão simples, • tem o objetivo de representar uma faixa maior de

números reais e aumentar a precisão da representação,

• o tipo double utiliza o dobro da memória que o tipo simples, geralmente 64 bits, sendo 1 bit para o sinal, 12 bits para o expoente e 51 bits para a mantissa,

(13)

• as operações suportadas pelo double são similares as operações suportadas pelos floats,

• o uso de variáveis double só se justifica em aplicações onde uma alta precisão de cálculos matemáticos seja exigida.

• Qual é o maior número que a representação de ponto flutuante duplo consegue representar?

(14)

• o tipo vazio ou void é um tipo de dados especial, • é utilizado para declarar explicitamente funções

que não retornam nenhum valor,

• é utilizado para criar ponteiros genéricos,

• ambos usos são tópicos avançados de programação.

(15)

• os tipos básicos podem ter diferentes modificadores,

• os modificadores podem ser usados para alterar o significado de um tipo básico,

• o uso de modificadores aumenta a eficiência no uso da memória e melhora o desempenho da aplicação,

• os modificadores presentes em C são:

unsigned,

short

e

long

,

unsigned

e

short

só se aplicam a inteiros.

(16)

• Ao utilizar os tipos básicos de dados para representar valores numéricos podem ocorrer situações onde se ultrapassem os limites superior ou inferior do conjunto de números que pode ser representado,

• se o limite superior e ultrapassado temos um overflow e os resultados da execução são imprevisíveis, em alguns compiladores a execução do programa é abortada,

(17)

• se o limite inferior é ultrapassado temos um underflow, o valor do número será substituído com zero e a execução continua,

• ambas condições overflow e underflow devem ser evitadas.

• Qual dois tipos de erros é mais prejudicial Overflow ou Underflow?

(18)

• Existem dois tipos básicos de dados que não são encontrados na linguagem C, pero aparecem na maioria das outras linguagens, o string e o boleano.

• Tipo string, é utilizado para representar cadeias de caracteres (palavras o frases), este recurso é implementado em C usando arrays de caracteres ou ponteiros a caracteres.

(19)

• Tipo boleano, tem só dois valores possíveis, verdadeiro (true) e falso (false), são utilizados em expressões lógicas, como sentinelas ou em estruturas de seleção. A linguagem C considera qualquer expressão com valor igual a zero como falso e qualquer expressão com valor diferente de zero como verdadeiro. (Ex)

(20)

• variável, é uma posição de memória , que é usada para guardar um valor que pode ser acessado pelo programa,

• todas as variáveis possuem um identificador, um tipo e um valor,

• Todas as variáveis em C devem ser declaradas antes de serem usadas,

• A forma geral de uma declaração de variáveis é:

(21)

• O identificador de uma variável não tem nenhuma relação com o tipo,

• Exemplos de declaração de variáveis:

(22)

• Identificadores em C:

−um identificador válido e uma serie de caracteres que consistem em letras, dígitos e sublinhados,

−não pode começar com dígito,

−não pode ser uma palavra reservada da linguagem,

−apenas caracteres da tabela ASCII podem ser utilizados.

(23)

• Identificadores em C ...

−um identificador pode ter qualquer cumprimento, apenas os 31 primeiros caracteres são reconhecidos,

−A linguagem C, é case sensitive, os caracteres minúsculos e maiúsculos são diferentes.

−Escolha nomes significativos para suas variáveis, tornando seu programa auto-explicativo, menos comentários se farão necessários.

−A primeira letra do identificador de uma variável simples deve ser minúscula.

(24)

• Onde as variáveis são declaradas?

dentro de funções ou blocos

na definição dos

parâmetros das funções

(25)

• Variáveis locais:

−são declaradas dentro de uma função ou bloco de código,

−são “criadas” quando começa o bloco (caractere { ),

−são “destruídas” quando finaliza o bloco (caractere } ),

−elas existem enquanto o bloco no qual foram declaradas esta sendo executado,

−o conteúdo da variável é perdido quando o bloco deixa de ser executado,

(26)

• Variáveis locais ...

− só podem ser referenciadas por comandos que estão dentro do bloco no qual foram declaradas, − exemplos,

− vantagens de utilizar variáveis locais:

1. as variáveis só serão alocadas se for necessário, não existiram até que o bloco associadas a elas seja executado,

2. evita efeitos colaterais indesejados, ela não poderá ser acidentalmente modificada fora do bloco.

(27)

• Parâmetros Formais:

− se uma função usa argumentos, ela deve declarar variáveis que receberão os valores dos argumentos, essas variáveis são os parâmetros da função.

− os parâmetros, assim como as variáveis locais tem escopo de função, elas são criadas e destruídas ao executar a função.

− Exemplos.

(28)

• Variáveis Globais:

− são criadas declarando-as fora de qualquer função,

− são reconhecidas pelo programa inteiro e podem ser utilizadas em qualquer segmento de código,

− guardam seus valores dentro de toda a execução do programa,

− exemplos,

(29)

• Variáveis Globais ...

− se uma variável local tem o mesmo nome que uma variável global, todas as referências ao nome da variável no bloco local dizem respeito a variável local e não tem efeito algum sobre a variável global.

− variáveis globais podem parecer atraentes,

− elas ocupam espaço durante toda a execução de seu programa e não apenas quando as variáveis são necessárias,

(30)

• Variáveis Globais ...

− elas limitam a reutilização do código,

− elas podem causar erros e efeitos colaterais indesejáveis se forem mal utilizadas,

− evite o uso de variáveis globais tanto como for possível.

(31)

• Modificador de acesso:

const

− variáveis do tipo

const

não podem ser modificadas por seu programa,

− elas podem receber apenas um valor inicial,

− utilize variáveis de tipo

const

para representar constantes,

− existem algumas constantes que foram incluídas na linguagem C

− exemplos.

(32)

• Inicialização de variáveis:

− sintaxe: tipo nome_da_variável = constante;

− exemplos.

(33)

O SEGUNDO PROGRAMA EM C

/* Programa para somar dois numeros */ #include <stdio.h>

#include <stdlib.h> int main(){

int num1, num2, soma;

printf("Entre com o primeiro numero: "); scanf("%d", &num1);

printf("Entre com o segundo numero: "); scanf("%d", &num2);

soma = num1 + num2;

printf("A soma e %d\n", soma); system("PAUSE");

Referências

Documentos relacionados

Our contributions are: a set of guidelines that provide meaning to the different modelling elements of SysML used during the design of systems; the individual formal semantics for

A partir da junção da proposta teórica de Frank Esser (ESSER apud ZIPSER, 2002) e Christiane Nord (1991), passamos, então, a considerar o texto jornalístico como

Mesmo com suas ativas participações na luta política, as mulheres militantes carregavam consigo o signo do preconceito existente para com elas por parte não somente dos militares,

Grounded on a perspective in which action is a defining trait in video games, this work proposes the development of an action-oriented framework focused on the analysis of

Membro_Faculdade (Matrícula: Inteiro, Nome: string[50], Carga: Inteiro, IniContrato: data, Curso: string[30], professor: booleano, aluno: booleano). Membro

autoincriminação”, designadamente através da indicação de exemplos paradigmáticos. Sem prejuízo da relevância da matéria – traduzida, desde logo, no número e

A apixaba- na reduziu o risco de AVE e embolismo sistêmico em mais de 50%: houve 51 eventos entre os pacientes do grupo apixabana versus 113 no grupo do AAS

Não podem ser deduzidas dos nossos dados quaisquer informações sobre uma dada característica específica, nem sobre a aptidão para um determinado fim. Os dados fornecidos não eximem