Sie sind auf Seite 1von 34

Programao

Engenharia Informtica (11543) 1 ano, 1 semestre


Tecnologias e Sistemas de Informao (6619) 1 ano, 1 semestre

Cap. 02 Fundamentos de Linguagens

Sumrio
:
Linguagem, alfabeto e gramtica
Tabela ASCII
Componentes de uma linguagem: lxico, sintaxe e semntica
Entidades: nomes/identificadores, operadores e literais
Termos, expresses e tipos de expresses
Instrues e tipos de instrues
Instruo de bloco
Instruo de atribuio
Variveis e declaraes de variveis
Constantes e declaraes de constantes
Tipos de dados bsicos: char, int, float e double
Modelos de programao
Princpio fundamental da programao imperativa

T02 Fundamentos de Linguagens

Linguagens de programao

Programas so escritos numa linguagem de programao.


Linguagem de programao

Alfabeto

Gramtica

Alfabetos:

{0,1} : linguagem mquina (ling. baixo-nvel)

cdigo ASCII : Pascal, C, Java, etc. (linguagens de alto-nvel)

A .. Z : Portugus, Ingls, Espanhol, etc.

Gramtica: diagramas de sintaxe

T02 Fundamentos de Linguagens

Tabela ASCII de smbolos

T02 Fundamentos de Linguagens


ASCII - American Standard Code for Information Interchange

Tabela ASCII de smbolos: cdigos adicionais

T02 Fundamentos de Linguagens

ASCII - American Standard Code for Information Interchange

T02 Fundamentos de Linguagens

Alfabeto (em C)

http://www-ccs.ucsd.edu/c/charset.html

- O conjunto bsico de caracteres grficos da linguagem C o seguinte:

Forma
letra

Membros
ABCDEFGHIJKLM
N O P Q R ST UVW XY Z
abcdefghijklm
nopqrstuvwxyz

dgito

0123456789

underscore

Pontuao

! " # % & ' ( ) * + ,- ./ :;< = > ? [ \ ] ^ { | } ~

Componentes de uma linguagem

T02 Fundamentos de Linguagens

http://www.d.umn.edu/~gshute/asm/grammar.html

- Lxico: conjunto de palavras duma linguagem, i.e. o dicionrio.

- Sintaxe: conjunto de regras de construo das frases dum texto, i.e. a gramtica. Estas frases
so designadas por instrues e o texto designado por programa.

- Semntica: o significado de cada instruo dum programa ou mesmo dum do programa


completo.

T02 Fundamentos de Linguagens

Lxico

T02 Fundamentos de Linguagens

Palavras reservadas

- A linguagem C tem um conjunto de palavras reservadas, entre as quais:


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

- No podem ser usadas a no ser para aqueles fins pr-definidos; por exemplo, no podem
ser usadas como nomes de variveis.

- A tentativa de utilizao para outros fins tem resulta numa srie de erros de compilao.

T02 Fundamentos de Linguagens

Nomes de funes de bibliotecas (libm)

- A biblioteca matemtica libm.a tem um conjunto de funes, entre as quais:

cos

acos

floor

sin

asin

tan

atan

tanh

ceil

log

pow

log10

fabs

sqrt

sinh

- Embora no sejam palavras reservadas, no devemos us-las para outros fins, pois isso pode
gerar conflitos de nomes.

- A tentativa de utilizao para outros fins pode ter como consequncia uma srie de erros
de compilao.

Classificao de nomes/identificadores

T02 Fundamentos de Linguagens

- H 3 classes de nomes ou identificadores:

Identificadores definidos pelo


utilizador
(p.ex., nomes de variveis)
Podem ser redefinidos, mas
no conveniente

No podem ser redefinidos

Identificadores estandardizados
(p.ex., nomes de funes matemticas)
Palavras reservadas

Entidades e expresses

T02 Fundamentos de Linguagens

- Entidades:

identificadores ou nomes (de variveis, constantes e funes)

operadores (adio, subtraco, atribuio, )

literais

- Expresses:
uma construo sintctica que tem um valor.
uma combinao de entidades que representa o clculo dum valor.
- Tipos de expresses:

expresso numrica (resultado numrico)

expresso lgica (resultado lgico)

expresso simblica (resultado simblico)

T02 Fundamentos de Linguagens

Gramtica

Nomes/identificadores

- As regras de formao de nomes/identificadores so as seguintes:


Diferenciao grfica (maisculas e minsculas)
Tamanho varivel (ANSI C limitado a 31 caracteres)
Validade (carcter inicial : a..z, A..Z, _ )
j, j5, _5A

nomes vlidos:

nomes invlidos: 5j, j5%, const

Diagrama de sintaxe:

T02 Fundamentos de Linguagens

T02 Fundamentos de Linguagens

Operadores

- Escrita de dados em memria (operador de ATRIBUIO)


=
- Clculo de inteiros e/ou reais (operadores ARITMTICOS)
+, -, *, /
- Clculo de valores lgicos (falso/verdadeiro) (operadores LGICOS)
&&, II, !
- Clculo de valores lgicos (falso/verdadeiro) (operadores RELACIONAIS)
<, <=, >, >=, !=, ==
- Incrementa valor de varivel inteira de 1 unidade (operador de INCREMENTAO)
++
- Decrementa valor de varivel inteira de 1 unidade (operador de DECREMENTAO)
--

Literais

Definio:
Uma entidade sem nome que representa um valor constante.

Exemplos:
XYZ123 um literal string

g um literal carcter

1234 um literal inteiro


3.78 um literal real
6/10/57 um literal data

T02 Fundamentos de Linguagens

Literais inteiros

T02 Fundamentos de Linguagens


http://www-ccs.ucsd.edu/c/syntax.html

- 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 dgito no-nulo indica um inteiro decimal (base 10).
- No final do literal, como opo, 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
Diagrama de sintaxe:

Termos

T02 Fundamentos de Linguagens


http://www.d.umn.edu/~gshute/asm/grammar.html

- Um termo uma das seguintes entidades:


um nome ( de varivel numrica ou funo que devolve um valor numrico)
um literal
o operador sizeof
uma expresso-parentisada
Diagrama de sintaxe:

T02 Fundamentos de Linguagens

Expresses

http://www.d.umn.edu/~gshute/asm/grammar.html

Definio: Uma expresso uma sequncia 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 psfixos.

Diagrama de sintaxe:

Exemplos:

(literal inteiro)

num

(nome de varivel)

5+num

(adio de literal e valor de varivel)

square(5)

(chamada a funo com argumento literal)

square(5)/2

(diviso do valor duma funo por dois)

a && b || c

(devolve um valor lgico)

getchar()

(chamada a funo que devolve um valor char)

!a

(nega valor lgico de varivel)

num++

(incrementa valor de varivel)

T02 Fundamentos de Linguagens

Instrues

http://www.d.umn.edu/~gshute/asm/grammar.html

Diagrama de sintaxe:

Exemplos:

printf("hello\n");

// chamada a funo

y = m * x + b;

// armazena valor

++count;

// altera valor armazenado

Sumrio at agora:

T02 Fundamentos de Linguagens

- PROGRAMA = sequncia de INSTRUES


- INSTRUO = EXPRESSO seguida de ponto e vrgula
- EXPRESSO = sequncia de TERMOS separados por operadores infixo
- TERMO = uma das seguintes entidades:
um nome ( de varivel numrica ou funo que devolve um valor numrico)
um literal
o operador sizeof
uma expresso-parentisada

T02 Fundamentos de Linguagens

Tipos de instrues

http://www.d.umn.edu/~gshute/asm/grammar.html

- Uma instruo uma das seguintes entidades:


uma instruo-bloco
uma instruo-de-atribuio
uma instruo-if
uma instruo-while
uma instruo-for
uma instruo-switch
uma instruo-break
uma instruo-continue
uma instruo-return

A estudar em captulos posteriores!

Instruo de bloco

T02 Fundamentos de Linguagens

Definio: uma sequncia de (declaraes e) instrues entre { e }.

Diagrama de sintaxe:

Exemplo:
#include <stdio.h>
int main()
{
float y;
y=5.4;
printf(O valor de y=%f\n,y);
}

instruo-bloco

T02 Fundamentos de Linguagens

Instruo de atribuio

Definio: uma instruo que atribui um valor a uma varivel em memria.

Diagrama de sintaxe:
name

expression

Exemplo:
#include <stdio.h>
int main()
{
int x;
float y;
printf(Escreva um valor inteiro: );
scanf(%d,&x);
y=x+5.4;
printf(O valor de y=%f\n,y);
}

instruo-atribuio

T02 Fundamentos de Linguagens

Varivel

Definio: um local de memria onde se guarda um dado especfico.

- Tm nome e valor.
- semelhana das variveis em matemtica, uma varivel no tem valor constante.
- Pode mudar de valor atravs duma instruo de atribuio.

memria

valor de
#include <stdio.h>
int main()
{
int x;
x=12;
...
}

x
x 00000000

00001100

T02 Fundamentos de Linguagens

Declarao de variveis

Diagrama de sintaxe:
type

name

Exemplo:
declarao-de-varivel

#include <stdio.h>
int main()
{
int x;
x=12;
...
}

T02 Fundamentos de Linguagens

Declarao de variveis

00000000 00000000 00000000 00001100


4 bytes (octetos) = 4 x 8 bits

Bytes em memria

Formato de E/S

Inteiros
char

1 byte

%c

int

2 bytes

%d ou %i

float

4 bytes

%f

double

8 bytes

%f

Reais

T02 Fundamentos de Linguagens

Constante

Definio: tambm um local de memria onde se guarda um dado especfico.

- Tambm tem nome e valor.


- semelhana das constantes em matemtica, uma constante tem valor fixo e imutvel.
memria

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

i
i 00000000

00001010

T02 Fundamentos de Linguagens

Declarao de constantes

Diagrama de sintaxe:
const

type

name

literal

Exemplo:
declarao-de-constante

#include <stdio.h>
int main()
{
const int i=10;
...
}

T02 Fundamentos de Linguagens

Modelos de Programao

Modelos de programao

T02 Fundamentos de Linguagens

Programao imperativa
C, Pascal, Fortran,
Programao funcional
Haskel, Lisp, Scheme,
Programao em lgica
Prolog,
Programao orientada por objectos
C++, Java, Smaltalk, Objective-C, C#, Logtalk,
Programao baseada em eventos
- No h linguagens especficas mais uma forma de programar aplicaes.
etc.

T02 Fundamentos de Linguagens

Programao imperativa

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

Dados
Simples (int, float, char, double)
Compostos (array, struct, file)

printf(Escreva um valor inteiro: );


scanf(%d,&x);
y=x+5.4;
printf(O valor de y=%f\n,y);

Funes/operadores

printf

y
5.4

scanf

printf

Princpio fundamental da programao imperativa

T02 Fundamentos de Linguagens

- A reserva de memria para dados feita atravs da declarao de variveis. Exemplo:


int j;
- O porqu do modelo centralizado de dados? O conjunto de todas as variveis
declaradas num programa no mais do que o repositrio central de dados que manipulado
pelas funes e operaes usadas dentro do programa.

- Princpio fundamental da programao imperativa:


- Nenhuma varivel, constante ou funo pode ser utilizada num programa
sem ter sido previamente declarada.

Concluso

T02 Fundamentos de Linguagens

:
Linguagem, alfabeto e gramtica
Tabela ASCII
Componentes de uma linguagem: lxico, sintaxe e semntica
Entidades: nomes/identificadores, operadores e literais
Termos, expresses e tipos de expresses
Instrues e tipos de instrues
Instruo de bloco
Instruo de atribuio
Variveis e declaraes de variveis
Constantes e declaraes de constantes
Tipos de dados bsicos: char, int, float e double
Modelos de programao
Princpio fundamental da programao imperativa

FIM

Das könnte Ihnen auch gefallen