0% acharam este documento útil (0 voto)
45 visualizações33 páginas

Capitulo 2

Enviado por

William Silva
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
45 visualizações33 páginas

Capitulo 2

Enviado por

William Silva
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd

Prof. Dr.

Abel Gomes
(agomes@[Link])

Cap.2:
Fundamentos de Linguagens e
Modelos de Programação

Sumário:
 Linguagens de programação

 Modelos de programação

1
Linguagens de programação

2
Linguagens de programação
• Programas são escritos numa linguagem de
programação
 Linguagem de programação:
 alfabeto
 gramática

 Alfabetos:
 {0,1} → linguagem máquina (ling. baixo-nível)
 código ASCII → Pascal, C, Java, etc. (linguagens de alto-nível)
 A ..Z → Português, Inglês, Espanhol, etc.

 Gramática: diagramas de sintaxe


3
Tabela ASCII ASCII - American Standard Code for Information Interchange

4
ASCII - American Standard Code for Information Interchange

Tabela ASCII: códigos


adicionais

5
[Link]

Alfabeto:
linguagem C
O conjunto básico de caracteres gráficos da linguagem C
é o seguinte:

Forma Membros
letra A B C D E F G H I J K L M
N O P Q R S T U V W X Y Z
a b c d e f g h i j k l m
n o p q r s t u v w x y z

dígito 0 1 2 3 4 5 6 7 8 9

underscore _

Pontuação ! " # % & ' ( ) * + , - . / : ;


< = > ? [ \ ] ^ { | } ~
6
[Link]

Componentes duma
linguagem
 Léxico: conjunto de palavras duma linguagem, i.e. o dicionário.

 Sintaxe: conjunto de regras de construção das frases dum texto, i.e.


a gramática. Estas frases são designadas por instruções e o texto é
designado por programa.

Semântica: é o significado de cada instrução dum programa ou


mesmo dum do programa completo.

7
Léxico:
palavras reservadas
auto double int struct
break else long switch
case enum register typedef
char extern return union
const float short unsigned
continue for signed void
default goto sizeof volatile
do if static while
 Não podem ser usadas a não ser para aqueles fins que foram
definidos; por exemplo, não podem ser usadas como nomes de
variáveis.
A tentativa de utilização para outros fins tem como consequência
uma série de erros de compilação.
8
Léxico:
nomes de funções da libc.a
abort clock getenv rand srand
abs close labs read strcmp
atof div malloc remove strcpy
atoi exit open rename system
atol free printf scanf time
calloc getchar putchar signal write

 Embora não sejam palavras reservadas, não devemos usá-las para


outros fins, pois isso pode gerar conflitos de nomes.

A tentativa de utilização para outros fins pode ter como


consequência uma série de erros de compilação.
9
Léxico:
nomes de funções da libm.a
acos cos floor sin tanh
asin cosh log sinh
atan exp log10 sqrt
ceil fabs pow tan

 Embora não sejam palavras reservadas, não devemos usá-las para


outros fins, pois isso pode gerar conflitos de nomes.

A tentativa de utilização para outros fins pode ter como


consequência uma série de erros de compilação.
10
Gramática:
entidades e expressões
 Entidades:
• identificadores ou nomes (de variáveis, constantes e funções)
• operadores (adição, subtracção, atribuição, …)
• literais
 Expressões:
- É uma construção sintáctica que tem um valor.
- É uma combinação de entidades que representa o cálculo dum valor.
 Tipos de expressões:
• expressão numérica (resultado numérico)
• expressão lógica (resultado lógico)
• expressão simbólica (resultado simbólico)
11
Gramática: taxonomia
de nomes ou identificadores

Há 3 classes de identificadores:

Identificadores definidos pelo


utilizador

Podem ser redefinidos, Identificadores estandardizados


mas não é conveniente

Não podem ser redefinidos Palavras reservadas

12
Gramática:
nomes/identificadores em C
As regras de formação de nomes/identificadores são
as seguintes:

 Diferenciação gráfica (maiúsculas e minúsculas)

 Tamanho variável (ANSI C limitado a 31 caracteres)

 Validade (carácter inicial é : a..z, A..Z, _ )


• nomes válidos: j, j5, _5A

• nomes inválidos: 5j, j5%, const

13
Gramática:
nomes/identificadores em C
Diagrama de sintaxe:

14
Gramática:
operadores em C
 Escrita de dados em memória
−Operador de ATRIBUIÇÃO :=
 Cálculo de inteiros e/ou reais

−Operadores ARITMÉTICOS +, -, *, /
 Cálculo de valores lógicos (falso/verdadeiro)

− Operadores LÓGICOS &&, II, !


 Cálculo de valores lógicos (falso/verdadeiro)

− Operadores RELACIONAIS <, <=, >, >=, !=, ==


 Incrementa valor de variável inteira de 1 unidade

− Operador de INCREMENTAÇÃO ++
 Decrementa valor de variável inteira de 1 unidade

− Operador de DECREMENTAÇÃO --

15
Gramática:
literais em C
Definição:
 Uma entidade sem nome que representa um valor constante.

Exemplos em C:
 “XYZ123” é um literal string

 ‘g’ é um literal carácter

 1234 é um literal inteiro

 3.78 é um literal real

 6/10/57 é um literal data

16
[Link]

Gramática:
literais inteiros em C
Diagrama de sintaxe:

O valor da constante depende da sua forma inicial:


• 0x ou 0X indica um inteiro hexadecimal (base 16);
•0 indica um inteiro octal (base 8);
• um dígito não-nulo indica um inteiro decimal (base 10).
No final do literal, como opção, escreve-se o sufixo l ou L para indicar que é do tipo
long, ou o sufixo u ou U para indicar que é do tipo unsigned
17
[Link]

Gramática:
expressões em C
Expressão
- É uma sequência de um ou mais termos separados por operadores infixo.
Cada termo é precedido por zero ou mais operadores prefixos. Cada termo é
seguido por zero ou mais operadores pósfixos.

18
[Link]

Gramática:
expressões em C
Termo
- É uma das seguintes entidades:
– um nome ( de variável numérica ou função que devolve um valor numérico)
– um literal
– o operador sizeof
– uma expressão-parentisada

19
Expressões:
exemplos em C
Exemplos de expressões em C:
 5 (literal inteiro)
 num (nome de variável)
 5+num (adição de literal e valor de variável)
 square(5) (chamada a função com argumento literal)
 square(5)/2 (divisão do valor dum função por dois)
 a && b || c (devolve um valor lógico)
 getchar() (chamada a função que devolve um valor char)
 !a (nega valor lógico de variável)
 num++ (incrementa valor de variável)

20
[Link]

Gramática:
Instruções em C
Diagrama de sintaxe:

Exemplos em C:
 printf("hello\n"); // chamada a função
 y = m * x + b; // armazena valor
 ++count; // altera valor armazenado

21
[Link]

Gramática:
Tipos de instruções em C
Instrução
- É uma das seguintes entidades:
– uma instrução-bloco
– uma instrução-de-atribuição
– uma instrução-if
– uma instrução-while
– uma instrução-for
– uma instrução-switch A estudar em capítulos posteriores!
– uma instrução-break
– uma instrução-continue
– uma instrução-return

22
[Link]

Gramática:
Instrução-bloco em C
Instrução-bloco
- É uma sequência de (declarações e) instruções entre { e }

Diagrama de sintaxe:

#include <stdio.h>
int main()
{
float y;

y=5.4;
printf(“O valor de y=%f\n”,y); instrução-bloco
}
23
Gramática:
Instrução-de-atribuição em C
Instrução-de-atribuição tem a seguinte forma sintáctica:
identificador-de-variável = expressão

Diagrama de sintaxe:
name = expression ;

#include <stdio.h>
int main()
{
int x;
instrução-atribuição
float y;

printf(“Escreva um valor inteiro: ”);


scanf(“%d”,&x);
y=x+5.4;
printf(“O valor de y=%f\n”,y);
}
24
Variável
 É um local de memória onde se guarda um dado específico.
 Têm nome e valor.
 À semelhança das variáveis em matemática, uma variável não tem valor
constante.
 Pode mudar de valor através duma instrução de atribuição.
memória
#include <stdio.h>
int main() valor de x
{
int x;
x=12; x 00000000
...
}
00001100

25
Gramática:
Declaração de variáveis em C
declaração-de-variável tem a seguinte forma sintáctica (simplificada):
identificador-de-tipo identificador-de-variável

Diagrama de sintaxe:

type name ;

declaração-de-variável
#include <stdio.h>
int main()
{
int x;
x=12;
...
}

26
Tipos de dados básicos em C
Bytes em memória Formato de E/S
Inteiros
char 1 byte %c
int 2 bytes %d ou %i

Reais
float 4 bytes %f
double 8 bytes %f

00000000 00000000 00000000 00001100

4 bytes (octectos) = 4 × 8 bits 27


Constante
 Também é um local de memória onde se guarda um dado específico.
 Também tem um nome e um valor.
 À semelhança das constantes em matemática, uma constante tem valor
fixo ou imutável.

memória
#include <stdio.h>
int main() valor de i
{
const int i=10;
... i 00000000
}
00001010

28
Gramática:
Instruções em C
declaração-de-constante tem a seguinte forma sintáctica:
const identificador-de-tipo identificador-de-variável = literal

Diagrama de sintaxe:

const type name = literal ;

declaração-de-constante
#include <stdio.h>
int main()
{
const int i=10;
...
}

29
Modelos de programação

30
Modelos de programação
• Programação imperativa
– C, Pascal, Fortran, …

• Programação funcional
– Haskel, Lisp, Scheme, …

• Programação em lógica
– Prolog, …

• Programação orientada por objectos


– C++, Java, Smaltalk, Objective-C, C#, Logtalk, …

• Programação baseada em eventos


– Não há linguagens específicas … é mais uma forma de programar
aplicações.
• Etc.
31
Programação imperativa: Computador

modelo centralizado de dados


ex1.c
 Dados #include <stdio.h>
• simples (int, float,…) int main()
{
• compostos (array, struct,…) int x;
 Funções (Operadores) float y;

printf(“Escreva um valor inteiro: ”);


scanf(“%d”,&x);
y=x+5.4;
printf(“O valor de y=%f\n”,y);
}
printf
x y
5.4
scanf
printf
+ =
32
Princípio fundamental da
programação imperativa
 A reserva de memória para dados é feita através da
declaração de variáveis.
Exemplo: int j;

 O porquê do Modelo Centralizado de Dados? O conjunto


de todas as variáveis declaradas num programa não é mais
do que o repositório central de dados que é manipulado
pelas funções e operações usadas dentro do programa.

 Princípio fundamental da programação imperativa:


Nenhuma variável, constante ou função pode ser utilizada
num programa sem ter sido previamente declarada.
33 FIM

Você também pode gostar