Cap. 2 — Fundamentos de Linguagens e Modelos de ...muranho/Aulas/201213/prog/agomes/... · Cap. 2...

31
Module Introduction Programação 5374: Engenharia Informática 6638: Tecnologias e Sistemas de Informação 9099: Bioengenharia 10135: Ciências Biomédicas Cap. 2 — Fundamentos de Linguagens e Modelos de Programação

Transcript of Cap. 2 — Fundamentos de Linguagens e Modelos de ...muranho/Aulas/201213/prog/agomes/... · Cap. 2...

Page 1: Cap. 2 — Fundamentos de Linguagens e Modelos de ...muranho/Aulas/201213/prog/agomes/... · Cap. 2 — Fundamentos de Linguagens e Modelos de Programação! 5375, 6619, 9099, 10135

Module Introduction

Programação 5374: Engenharia Informática 6638: Tecnologias e Sistemas de Informação 9099: Bioengenharia 10135: Ciências Biomédicas

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

Page 2: Cap. 2 — Fundamentos de Linguagens e Modelos de ...muranho/Aulas/201213/prog/agomes/... · Cap. 2 — Fundamentos de Linguagens e Modelos de Programação! 5375, 6619, 9099, 10135

Fundamentos de Linguagens e Modelos de Programação 5375, 6619, 9099, 10135 Programação

Sumário:

Page 3: Cap. 2 — Fundamentos de Linguagens e Modelos de ...muranho/Aulas/201213/prog/agomes/... · Cap. 2 — Fundamentos de Linguagens e Modelos de Programação! 5375, 6619, 9099, 10135

Fundamentos de Linguagens e Modelos de Programação 5375, 6619, 9099, 10135 Programação

Linguagens de programação

Page 4: Cap. 2 — Fundamentos de Linguagens e Modelos de ...muranho/Aulas/201213/prog/agomes/... · Cap. 2 — Fundamentos de Linguagens e Modelos de Programação! 5375, 6619, 9099, 10135

Fundamentos de Linguagens e Modelos de Programação 5375, 6619, 9099, 10135 Programação

Tabela ASCII de símbolos ASCII - American Standard Code for Information Interchange

Page 5: Cap. 2 — Fundamentos de Linguagens e Modelos de ...muranho/Aulas/201213/prog/agomes/... · Cap. 2 — Fundamentos de Linguagens e Modelos de Programação! 5375, 6619, 9099, 10135

Fundamentos de Linguagens e Modelos de Programação 5375, 6619, 9099, 10135 Programação

Tabela ASCII de símbolos: códigos adicionais ASCII - American Standard Code for Information Interchange

Page 6: Cap. 2 — Fundamentos de Linguagens e Modelos de ...muranho/Aulas/201213/prog/agomes/... · Cap. 2 — Fundamentos de Linguagens e Modelos de Programação! 5375, 6619, 9099, 10135

Fundamentos de Linguagens e Modelos de Programação 5375, 6619, 9099, 10135 Programação

Alfabeto: linguagem C

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

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

Page 7: Cap. 2 — Fundamentos de Linguagens e Modelos de ...muranho/Aulas/201213/prog/agomes/... · Cap. 2 — Fundamentos de Linguagens e Modelos de Programação! 5375, 6619, 9099, 10135

Fundamentos de Linguagens e Modelos de Programação 5375, 6619, 9099, 10135 Programação

Componentes de uma linguagem http://www.d.umn.edu/~gshute/asm/grammar.html

Page 8: Cap. 2 — Fundamentos de Linguagens e Modelos de ...muranho/Aulas/201213/prog/agomes/... · Cap. 2 — Fundamentos de Linguagens e Modelos de Programação! 5375, 6619, 9099, 10135

Fundamentos de Linguagens e Modelos de Programação 5375, 6619, 9099, 10135 Programação

Léxico: palavras reservadas

Page 9: Cap. 2 — Fundamentos de Linguagens e Modelos de ...muranho/Aulas/201213/prog/agomes/... · Cap. 2 — Fundamentos de Linguagens e Modelos de Programação! 5375, 6619, 9099, 10135

Fundamentos de Linguagens e Modelos de Programação 5375, 6619, 9099, 10135 Programação

Léxico: nomes de funções de bibliotecas (libm)

Page 10: Cap. 2 — Fundamentos de Linguagens e Modelos de ...muranho/Aulas/201213/prog/agomes/... · Cap. 2 — Fundamentos de Linguagens e Modelos de Programação! 5375, 6619, 9099, 10135

Fundamentos de Linguagens e Modelos de Programação 5375, 6619, 9099, 10135 Programação

Classificação de nomes/identificadores

Palavras reservadas

Identificadores estandardizados

(p.ex., nomes de funções)

Identificadores definidos pelo

utilizador

(p.ex., nomes de variáveis)

Page 11: Cap. 2 — Fundamentos de Linguagens e Modelos de ...muranho/Aulas/201213/prog/agomes/... · Cap. 2 — Fundamentos de Linguagens e Modelos de Programação! 5375, 6619, 9099, 10135

Fundamentos de Linguagens e Modelos de Programação 5375, 6619, 9099, 10135 Programação

Gramática: entidades e expressões

Page 12: Cap. 2 — Fundamentos de Linguagens e Modelos de ...muranho/Aulas/201213/prog/agomes/... · Cap. 2 — Fundamentos de Linguagens e Modelos de Programação! 5375, 6619, 9099, 10135

Fundamentos de Linguagens e Modelos de Programação 5375, 6619, 9099, 10135 Programação

Gramática: nomes/identificadores em C

Page 13: Cap. 2 — Fundamentos de Linguagens e Modelos de ...muranho/Aulas/201213/prog/agomes/... · Cap. 2 — Fundamentos de Linguagens e Modelos de Programação! 5375, 6619, 9099, 10135

Fundamentos de Linguagens e Modelos de Programação 5375, 6619, 9099, 10135 Programação

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 --

Page 14: Cap. 2 — Fundamentos de Linguagens e Modelos de ...muranho/Aulas/201213/prog/agomes/... · Cap. 2 — Fundamentos de Linguagens e Modelos de Programação! 5375, 6619, 9099, 10135

Fundamentos de Linguagens e Modelos de Programação 5375, 6619, 9099, 10135 Programação

Gramática: literais em C

Page 15: Cap. 2 — Fundamentos de Linguagens e Modelos de ...muranho/Aulas/201213/prog/agomes/... · Cap. 2 — Fundamentos de Linguagens e Modelos de Programação! 5375, 6619, 9099, 10135

Fundamentos de Linguagens e Modelos de Programação 5375, 6619, 9099, 10135 Programação

Gramática: literais inteiros em C

•  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 16: Cap. 2 — Fundamentos de Linguagens e Modelos de ...muranho/Aulas/201213/prog/agomes/... · Cap. 2 — Fundamentos de Linguagens e Modelos de Programação! 5375, 6619, 9099, 10135

Fundamentos de Linguagens e Modelos de Programação 5375, 6619, 9099, 10135 Programação

Gramática: termos em C

•  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-parentisada

•  Diagrama de sintaxe:

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

Page 17: Cap. 2 — Fundamentos de Linguagens e Modelos de ...muranho/Aulas/201213/prog/agomes/... · Cap. 2 — Fundamentos de Linguagens e Modelos de Programação! 5375, 6619, 9099, 10135

Fundamentos de Linguagens e Modelos de Programação 5375, 6619, 9099, 10135 Programação

Gramática: expressões em C http://www.d.umn.edu/~gshute/asm/grammar.html

Page 18: Cap. 2 — Fundamentos de Linguagens e Modelos de ...muranho/Aulas/201213/prog/agomes/... · Cap. 2 — Fundamentos de Linguagens e Modelos de Programação! 5375, 6619, 9099, 10135

Fundamentos de Linguagens e Modelos de Programação 5375, 6619, 9099, 10135 Programação

Gramática: instruções em C http://www.d.umn.edu/~gshute/asm/grammar.html

Page 19: Cap. 2 — Fundamentos de Linguagens e Modelos de ...muranho/Aulas/201213/prog/agomes/... · Cap. 2 — Fundamentos de Linguagens e Modelos de Programação! 5375, 6619, 9099, 10135

Fundamentos de Linguagens e Modelos de Programação 5375, 6619, 9099, 10135 Programação

Sumário até agora:

Page 20: Cap. 2 — Fundamentos de Linguagens e Modelos de ...muranho/Aulas/201213/prog/agomes/... · Cap. 2 — Fundamentos de Linguagens e Modelos de Programação! 5375, 6619, 9099, 10135

Fundamentos de Linguagens e Modelos de Programação 5375, 6619, 9099, 10135 Programação

Gramática: tipos de instruções em C

A estudar em capítulos posteriores!

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

Page 21: Cap. 2 — Fundamentos de Linguagens e Modelos de ...muranho/Aulas/201213/prog/agomes/... · Cap. 2 — Fundamentos de Linguagens e Modelos de Programação! 5375, 6619, 9099, 10135

Fundamentos de Linguagens e Modelos de Programação 5375, 6619, 9099, 10135 Programação

Gramática: instrução-bloco em C

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

y=5.4; printf(“O valor de y=%f\n”,y); }

instrução-bloco

Page 22: Cap. 2 — Fundamentos de Linguagens e Modelos de ...muranho/Aulas/201213/prog/agomes/... · Cap. 2 — Fundamentos de Linguagens e Modelos de Programação! 5375, 6619, 9099, 10135

Fundamentos de Linguagens e Modelos de Programação 5375, 6619, 9099, 10135 Programação

Gramática: instrução-de-atribuição em C

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 23: Cap. 2 — Fundamentos de Linguagens e Modelos de ...muranho/Aulas/201213/prog/agomes/... · Cap. 2 — Fundamentos de Linguagens e Modelos de Programação! 5375, 6619, 9099, 10135

Fundamentos de Linguagens e Modelos de Programação 5375, 6619, 9099, 10135 Programação

Variável

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

x

valor de x

00000000 00001100

memória

Page 24: Cap. 2 — Fundamentos de Linguagens e Modelos de ...muranho/Aulas/201213/prog/agomes/... · Cap. 2 — Fundamentos de Linguagens e Modelos de Programação! 5375, 6619, 9099, 10135

Fundamentos de Linguagens e Modelos de Programação 5375, 6619, 9099, 10135 Programação

Gramática: declaração de variáveis em C

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

type name ;

declaração-de-variável

Page 25: Cap. 2 — Fundamentos de Linguagens e Modelos de ...muranho/Aulas/201213/prog/agomes/... · Cap. 2 — Fundamentos de Linguagens e Modelos de Programação! 5375, 6619, 9099, 10135

Fundamentos de Linguagens e Modelos de Programação 5375, 6619, 9099, 10135 Programação

Tipos de dados básicos em C 00000000 00000000 00000000 00001100

4 bytes (octetos) = 4 x 8 bits

Page 26: Cap. 2 — Fundamentos de Linguagens e Modelos de ...muranho/Aulas/201213/prog/agomes/... · Cap. 2 — Fundamentos de Linguagens e Modelos de Programação! 5375, 6619, 9099, 10135

Fundamentos de Linguagens e Modelos de Programação 5375, 6619, 9099, 10135 Programação

Constante

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

i

valor de i

00000000 00001010

memória

Page 27: Cap. 2 — Fundamentos de Linguagens e Modelos de ...muranho/Aulas/201213/prog/agomes/... · Cap. 2 — Fundamentos de Linguagens e Modelos de Programação! 5375, 6619, 9099, 10135

Fundamentos de Linguagens e Modelos de Programação 5375, 6619, 9099, 10135 Programação

Gramática: declaração de constantes em C

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

declaração-de-constante

type name = const ; literal

Page 28: Cap. 2 — Fundamentos de Linguagens e Modelos de ...muranho/Aulas/201213/prog/agomes/... · Cap. 2 — Fundamentos de Linguagens e Modelos de Programação! 5375, 6619, 9099, 10135

Fundamentos de Linguagens e Modelos de Programação 5375, 6619, 9099, 10135 Programação

Modelos de programação

Page 29: Cap. 2 — Fundamentos de Linguagens e Modelos de ...muranho/Aulas/201213/prog/agomes/... · Cap. 2 — Fundamentos de Linguagens e Modelos de Programação! 5375, 6619, 9099, 10135

Fundamentos de Linguagens e Modelos de Programação 5375, 6619, 9099, 10135 Programação

Programação imperativa

#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); }

printf!y x

+

scanf!

= printf!

5.4

Page 30: Cap. 2 — Fundamentos de Linguagens e Modelos de ...muranho/Aulas/201213/prog/agomes/... · Cap. 2 — Fundamentos de Linguagens e Modelos de Programação! 5375, 6619, 9099, 10135

Fundamentos de Linguagens e Modelos de Programação 5375, 6619, 9099, 10135 Programação

Princípio fundamental da programação imperativa

Page 31: Cap. 2 — Fundamentos de Linguagens e Modelos de ...muranho/Aulas/201213/prog/agomes/... · Cap. 2 — Fundamentos de Linguagens e Modelos de Programação! 5375, 6619, 9099, 10135

Fundamentos de Linguagens e Modelos de Programação 5375, 6619, 9099, 10135 Programação

Sumário: