fundamentos de linguagens
TRANSCRIPT
![Page 1: Fundamentos de Linguagens](https://reader036.vdocuments.pub/reader036/viewer/2022081517/587354f81a28ab431c8c25bc/html5/thumbnails/1.jpg)
ProgramaçãoEngenharia Informática (13205) – 1º ano, 1º semestre
Tecnologias e Sistemas de Informação (6619) – 1º ano, 1º semestre
Cap. 02 – Fundamentos de Linguagens
![Page 2: Fundamentos de Linguagens](https://reader036.vdocuments.pub/reader036/viewer/2022081517/587354f81a28ab431c8c25bc/html5/thumbnails/2.jpg)
T02 Fundamentos de Linguagens
Sumário
…:
– Linguagem, alfabeto e gramática
– Tabela ASCII
– Componentes de uma linguagem: léxico, sintaxe e semântica
– Entidades: nomes/identificadores, operadores e literais
– Termos, expressões e tipos de expressões
– Instruções e tipos de instruções
– Instrução de bloco
– Instrução de atribuição
– Variáveis e declarações de variáveis
– Constantes e declarações de constantes
– Tipos de dados básicos: char, int, float e double
– Modelos de programação
– Princípio fundamental da programação imperativa
![Page 3: Fundamentos de Linguagens](https://reader036.vdocuments.pub/reader036/viewer/2022081517/587354f81a28ab431c8c25bc/html5/thumbnails/3.jpg)
T02 Fundamentos de Linguagens
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
![Page 4: Fundamentos de Linguagens](https://reader036.vdocuments.pub/reader036/viewer/2022081517/587354f81a28ab431c8c25bc/html5/thumbnails/4.jpg)
T02 Fundamentos de Linguagens
Tabela ASCII de símbolosASCII - American Standard Code for Information Interchange
![Page 5: Fundamentos de Linguagens](https://reader036.vdocuments.pub/reader036/viewer/2022081517/587354f81a28ab431c8c25bc/html5/thumbnails/5.jpg)
T02 Fundamentos de Linguagens
Tabela ASCII de símbolos: códigos adicionaisASCII - American Standard Code for Information Interchange
![Page 6: Fundamentos de Linguagens](https://reader036.vdocuments.pub/reader036/viewer/2022081517/587354f81a28ab431c8c25bc/html5/thumbnails/6.jpg)
T02 Fundamentos de Linguagens
Formatos de saída de dados
#include <stdio.h>int main(){int x;x = 10;printf(“O valor de y=%d\n”,x);
}
#include <stdio.h>int main(){int x;x = 10;printf(“O valor de y=%o\n”,x);
}
#include <stdio.h>int main(){int x;x = 10;printf(“O valor de y=%h\n”,x);
}
![Page 7: Fundamentos de Linguagens](https://reader036.vdocuments.pub/reader036/viewer/2022081517/587354f81a28ab431c8c25bc/html5/thumbnails/7.jpg)
T02 Fundamentos de Linguagens
Alfabeto (em C)
- O conjunto básico de caracteres gráficos da linguagem C é o seguinte:
Forma Membrosletra 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 ! " # % & ' ( ) * + , - . / : ; < = > ? [ \ ] ^ { | } ~
http://www-ccs.ucsd.edu/c/charset.html
![Page 8: Fundamentos de Linguagens](https://reader036.vdocuments.pub/reader036/viewer/2022081517/587354f81a28ab431c8c25bc/html5/thumbnails/8.jpg)
T02 Fundamentos de Linguagens
Componentes de uma 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.
http://www.d.umn.edu/~gshute/asm/grammar.html
![Page 9: Fundamentos de Linguagens](https://reader036.vdocuments.pub/reader036/viewer/2022081517/587354f81a28ab431c8c25bc/html5/thumbnails/9.jpg)
T02 Fundamentos de Linguagens
Léxico
![Page 10: Fundamentos de Linguagens](https://reader036.vdocuments.pub/reader036/viewer/2022081517/587354f81a28ab431c8c25bc/html5/thumbnails/10.jpg)
T02 Fundamentos de Linguagens
Palavras reservadas
- A linguagem C tem um conjunto de palavras reservadas, entre as quais:
auto double int structbreak else long switchcase enum register typedefchar extern return unionconst float short unsignedcontinue for signed voiddefault goto sizeof volatiledo if static while
- Não podem ser usadas a não ser para aqueles fins pré-definidos; por exemplo, não podem ser usadas como nomes de variáveis.
- A tentativa de utilização para outros fins tem resulta numa série de erros de compilação.
![Page 11: Fundamentos de Linguagens](https://reader036.vdocuments.pub/reader036/viewer/2022081517/587354f81a28ab431c8c25bc/html5/thumbnails/11.jpg)
T02 Fundamentos de Linguagens
Nomes de funções de bibliotecas (libm)
- A biblioteca matemática libm.a tem um conjunto de funções, entre as quais:
cos acos floor sin asin
tan atan tanh ceil log
pow log10 fabs sqrt sinh
- 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.
![Page 12: Fundamentos de Linguagens](https://reader036.vdocuments.pub/reader036/viewer/2022081517/587354f81a28ab431c8c25bc/html5/thumbnails/12.jpg)
T02 Fundamentos de Linguagens
Exemplo de utilização de funções matemáticas
#include <stdio.h>#include <math.h>int main(){float x,y;
printf("Introduza o valor de um angulo em graus:\n");scanf("%f",&x);
y = cosf(x*M_PI/180);
printf("O valor do coseno de %f = %f\n",x,y);}
![Page 13: Fundamentos de Linguagens](https://reader036.vdocuments.pub/reader036/viewer/2022081517/587354f81a28ab431c8c25bc/html5/thumbnails/13.jpg)
T02 Fundamentos de Linguagens
Classificação de nomes/identificadores
- Há 3 classes de nomes ou identificadores:
Não podem ser redefinidos Palavras reservadas
Identificadores estandardizados(p.ex., nomes de funções matemáticas)
Identificadores definidos pelo utilizador
(p.ex., nomes de variáveis)
Podem ser redefinidos, mas não é conveniente
![Page 14: Fundamentos de Linguagens](https://reader036.vdocuments.pub/reader036/viewer/2022081517/587354f81a28ab431c8c25bc/html5/thumbnails/14.jpg)
T02 Fundamentos de Linguagens
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)
![Page 15: Fundamentos de Linguagens](https://reader036.vdocuments.pub/reader036/viewer/2022081517/587354f81a28ab431c8c25bc/html5/thumbnails/15.jpg)
T02 Fundamentos de Linguagens
Gramática
![Page 16: Fundamentos de Linguagens](https://reader036.vdocuments.pub/reader036/viewer/2022081517/587354f81a28ab431c8c25bc/html5/thumbnails/16.jpg)
T02 Fundamentos de Linguagens
Nomes/identificadores
- 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
Diagrama de sintaxe:
![Page 17: Fundamentos de Linguagens](https://reader036.vdocuments.pub/reader036/viewer/2022081517/587354f81a28ab431c8c25bc/html5/thumbnails/17.jpg)
T02 Fundamentos de Linguagens
Operadores
- 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)
--
![Page 18: Fundamentos de Linguagens](https://reader036.vdocuments.pub/reader036/viewer/2022081517/587354f81a28ab431c8c25bc/html5/thumbnails/18.jpg)
T02 Fundamentos de Linguagens
Literais
Definição:
– Uma entidade sem nome que representa um valor constante.
Exemplos:
– “XYZ123” é um literal string
– ‘g’ é um literal carácter
– 1234 é um literal inteiro
– 3.78 é um literal real
– 6/10/57 é um literal data
![Page 19: Fundamentos de Linguagens](https://reader036.vdocuments.pub/reader036/viewer/2022081517/587354f81a28ab431c8c25bc/html5/thumbnails/19.jpg)
T02 Fundamentos de Linguagens
Literais inteiros
- 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
Diagrama de sintaxe:
http://www-ccs.ucsd.edu/c/syntax.html
![Page 20: Fundamentos de Linguagens](https://reader036.vdocuments.pub/reader036/viewer/2022081517/587354f81a28ab431c8c25bc/html5/thumbnails/20.jpg)
T02 Fundamentos de Linguagens
Termos
- Um 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-entre-parênteses
Diagrama de sintaxe:
http://www.d.umn.edu/~gshute/asm/grammar.html
![Page 21: Fundamentos de Linguagens](https://reader036.vdocuments.pub/reader036/viewer/2022081517/587354f81a28ab431c8c25bc/html5/thumbnails/21.jpg)
T02 Fundamentos de Linguagens
Expressões
Diagrama de sintaxe:
Exemplos:– 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 duma 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)
Definição: Uma 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.
http://www.d.umn.edu/~gshute/asm/grammar.html
![Page 22: Fundamentos de Linguagens](https://reader036.vdocuments.pub/reader036/viewer/2022081517/587354f81a28ab431c8c25bc/html5/thumbnails/22.jpg)
T02 Fundamentos de Linguagens
Instruções
Diagrama de sintaxe:
Exemplos:– printf("hello\n"); // chamada a função
– y = m * x + b; // armazena valor
– ++count; // altera valor armazenado
http://www.d.umn.edu/~gshute/asm/grammar.html
![Page 23: Fundamentos de Linguagens](https://reader036.vdocuments.pub/reader036/viewer/2022081517/587354f81a28ab431c8c25bc/html5/thumbnails/23.jpg)
T02 Fundamentos de Linguagens
Sumário até agora:
- PROGRAMA = sequência de INSTRUÇÕES
- INSTRUÇÃO = EXPRESSÃO seguida de ponto e vírgula
- EXPRESSÃO = sequência de TERMOS separados por operadores infixo
- 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-entre-parênteses
![Page 24: Fundamentos de Linguagens](https://reader036.vdocuments.pub/reader036/viewer/2022081517/587354f81a28ab431c8c25bc/html5/thumbnails/24.jpg)
T02 Fundamentos de Linguagens
Tipos de instruções
- Uma 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
§ uma instrução-break
§ uma instrução-continue
§ uma instrução-return
A estudar em capítulos posteriores!
http://www.d.umn.edu/~gshute/asm/grammar.html
![Page 25: Fundamentos de Linguagens](https://reader036.vdocuments.pub/reader036/viewer/2022081517/587354f81a28ab431c8c25bc/html5/thumbnails/25.jpg)
T02 Fundamentos de Linguagens
Instrução de bloco
Diagrama de sintaxe:
Exemplo:
Definição: É uma sequência de (declarações e) instruções entre { e }.
#include <stdio.h>int main(){float y;
y=5.4;printf(“O valor de y=%f\n”,y);
}
instrução-bloco
![Page 26: Fundamentos de Linguagens](https://reader036.vdocuments.pub/reader036/viewer/2022081517/587354f81a28ab431c8c25bc/html5/thumbnails/26.jpg)
T02 Fundamentos de Linguagens
Instrução de atribuição
Diagrama de sintaxe:
Exemplo:
Definição: É uma instrução que atribui um valor a uma variável em memória.
name expression= ;
#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);
}
instrução-atribuição
![Page 27: Fundamentos de Linguagens](https://reader036.vdocuments.pub/reader036/viewer/2022081517/587354f81a28ab431c8c25bc/html5/thumbnails/27.jpg)
T02 Fundamentos de Linguagens
Variável
- 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.
Definição: É um local de memória onde se guarda um dado específico.
#include <stdio.h>int main(){int x;x=12;...
}
x
valor de x
0000000000001100
memória
![Page 28: Fundamentos de Linguagens](https://reader036.vdocuments.pub/reader036/viewer/2022081517/587354f81a28ab431c8c25bc/html5/thumbnails/28.jpg)
T02 Fundamentos de Linguagens
Declaração de variáveis
Diagrama de sintaxe:
Exemplo:
#include <stdio.h>int main(){int x;x=12;...
}
type name ;
declaração-de-variável
![Page 29: Fundamentos de Linguagens](https://reader036.vdocuments.pub/reader036/viewer/2022081517/587354f81a28ab431c8c25bc/html5/thumbnails/29.jpg)
T02 Fundamentos de Linguagens
Declaração de variáveis
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 0000000000000000 00001100
4 bytes (octetos) = 4 x 8 bits
![Page 30: Fundamentos de Linguagens](https://reader036.vdocuments.pub/reader036/viewer/2022081517/587354f81a28ab431c8c25bc/html5/thumbnails/30.jpg)
T02 Fundamentos de Linguagens
Constante
- Também tem nome e valor.
- À semelhança das constantes em matemática, uma constante tem valor fixo e imutável.
Definição: É também um local de memória onde se guarda um dado específico.
#include <stdio.h>int main(){const int i=10;...
}
i
valor de i
0000000000001010
memória
![Page 31: Fundamentos de Linguagens](https://reader036.vdocuments.pub/reader036/viewer/2022081517/587354f81a28ab431c8c25bc/html5/thumbnails/31.jpg)
T02 Fundamentos de Linguagens
Declaração de constantes
Diagrama de sintaxe:
Exemplo:
#include <stdio.h>int main(){const int i=10;...
}
declaração-de-constante
type name =const ;literal
![Page 32: Fundamentos de Linguagens](https://reader036.vdocuments.pub/reader036/viewer/2022081517/587354f81a28ab431c8c25bc/html5/thumbnails/32.jpg)
T02 Fundamentos de Linguagens
Modelos de Programação
![Page 33: Fundamentos de Linguagens](https://reader036.vdocuments.pub/reader036/viewer/2022081517/587354f81a28ab431c8c25bc/html5/thumbnails/33.jpg)
T02 Fundamentos de Linguagens
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.
![Page 34: Fundamentos de Linguagens](https://reader036.vdocuments.pub/reader036/viewer/2022081517/587354f81a28ab431c8c25bc/html5/thumbnails/34.jpg)
T02 Fundamentos de Linguagens
Programação imperativa
Dados
– Simples (int, float, char, double)
– Compostos (array, struct, file)
Funções/operadores
printfyx
+
scanf
=printf
5.4
#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);
}
![Page 35: Fundamentos de Linguagens](https://reader036.vdocuments.pub/reader036/viewer/2022081517/587354f81a28ab431c8c25bc/html5/thumbnails/35.jpg)
T02 Fundamentos de Linguagens
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.
![Page 36: Fundamentos de Linguagens](https://reader036.vdocuments.pub/reader036/viewer/2022081517/587354f81a28ab431c8c25bc/html5/thumbnails/36.jpg)
T02 Fundamentos de Linguagens
Conclusão
…:
– Linguagem, alfabeto e gramática
– Tabela ASCII
– Componentes de uma linguagem: léxico, sintaxe e semântica
– Entidades: nomes/identificadores, operadores e literais
– Termos, expressões e tipos de expressões
– Instruções e tipos de instruções
– Instrução de bloco
– Instrução de atribuição
– Variáveis e declarações de variáveis
– Constantes e declarações de constantes
– Tipos de dados básicos: char, int, float e double
– Modelos de programação
– Princípio fundamental da programação imperativaFIM