DIM0108.0: Conceitos e técnicas de programação · DIM0108.0 - Conceitos e Técnicas de...

38
DIM0108.0 - Conceitos e Técnicas de Programação DIM0108.0: Conceitos e técnicas de programação David Déharbe 1 1 Monday, August 8, 2011

Transcript of DIM0108.0: Conceitos e técnicas de programação · DIM0108.0 - Conceitos e Técnicas de...

Page 1: DIM0108.0: Conceitos e técnicas de programação · DIM0108.0 - Conceitos e Técnicas de Programação Programação: conhecimentos a adquirir ★Programming in the small ‣algoritmos

DIM0108.0 - Conceitos e Técnicas de Programação

DIM0108.0: Conceitos e técnicas de programação

David Déharbe

1

1Monday, August 8, 2011

Page 2: DIM0108.0: Conceitos e técnicas de programação · DIM0108.0 - Conceitos e Técnicas de Programação Programação: conhecimentos a adquirir ★Programming in the small ‣algoritmos

DIM0108.0 - Conceitos e Técnicas de Programação

Informações administrativas

David Déharbe

2

2Monday, August 8, 2011

Page 3: DIM0108.0: Conceitos e técnicas de programação · DIM0108.0 - Conceitos e Técnicas de Programação Programação: conhecimentos a adquirir ★Programming in the small ‣algoritmos

DIM0108.0 - Conceitos e Técnicas de Programação

Programação: conhecimentos a adquirir

★Programming in the small

‣ algoritmos

‣ estruturas de dados

‣ complexidade

✓AED1, AED2, AA,TCP*

★Programming in the large

‣ programação estruturada

‣ programação orientada a classes

‣ padrões de projeto

✓Engenharia de Software, Arquitetura de Software, APOO

★Linguagem de programação

‣ ITP, LPCP, PAED1 e PAED2

3

3Monday, August 8, 2011

Page 4: DIM0108.0: Conceitos e técnicas de programação · DIM0108.0 - Conceitos e Técnicas de Programação Programação: conhecimentos a adquirir ★Programming in the small ‣algoritmos

DIM0108.0 - Conceitos e Técnicas de Programação

Conceitos e técnicas de programação: objetivos

★DIM0108.0 é uma disciplina introdutiva à programação. Tem como objetivo:

‣ Ensinar a contruir pequenos programas simples;

‣ Ensinar partes de uma linguagem de programação;

‣ Prover os alunos iniciantes com o ferramental necessário para a aprendizagem de algoritmos e estruturas de dados em futuras disciplinas do curso.

‣Dar aos alunos condições em rapidamente aprender novas linguagens de programação.

4

4Monday, August 8, 2011

Page 5: DIM0108.0: Conceitos e técnicas de programação · DIM0108.0 - Conceitos e Técnicas de Programação Programação: conhecimentos a adquirir ★Programming in the small ‣algoritmos

DIM0108.0 - Conceitos e Técnicas de Programação

Metodologia da disciplina

★Os conceitos e as técnicas de programação serão estudados com base a linguagem de programação C.

‣ Apenas partes da linguagem serão apresentadas.

‣C++, Java e Haskell serão ensinadas em disciplinas subsequentes de programação.★O conteúdo da disciplina é incremental: os conceitos mais avançados apenas podem ser

entendidos quando os conceitos básicos foram bem assimilados.★A disciplina DIM0108.1 fornecerá aos alunos oportunidade de exercitar de forma

concreta os conceitos apresentados em sala de aula.

‣ ITP = CTP + PCTP★Atenção: o conteúdo da disciplina é abrangente e necessita um esforço importante e

permanente dos alunos.★Os alunos recebem tarefas a serem realizadas antes da aula seguinte.★Monitores fornecem apoio didático.

✓horários serão divulgados em breve

5

5Monday, August 8, 2011

Page 6: DIM0108.0: Conceitos e técnicas de programação · DIM0108.0 - Conceitos e Técnicas de Programação Programação: conhecimentos a adquirir ★Programming in the small ‣algoritmos

DIM0108.0 - Conceitos e Técnicas de Programação

Recursos de aprendizagem

★Apostila "Programação de Computadores 1" (Fábio Henrique Viduani Martinez)

‣ poderá haver alteração na apostila★A disciplina possui uma página associada, acessível através do seguinte endereço

‣ http://www.sigaa.ufrn.br

✓conecta-se diariamente

✓coloque uma foto (sua!)

‣Nessas páginas, serão fornecidas:

✓listas de exercícios para a prática dos conceitos expostos em sala de aula. Essas listas tem como objetivo orientar o processo de aprendizagem dos alunos,

✓cópia das apresentações projetadas em sala de aula,

✓elos para diversos documentos.★Associado às turmas de CTP e PCTP, há um blog onde posto comentários acerca do

andamento.

‣ http://blocoitp.wordpress.com

‣ Assinem o blog para receber avisos quando algo novo estiver postado.

6

6Monday, August 8, 2011

Page 7: DIM0108.0: Conceitos e técnicas de programação · DIM0108.0 - Conceitos e Técnicas de Programação Programação: conhecimentos a adquirir ★Programming in the small ‣algoritmos

DIM0108.0 - Conceitos e Técnicas de Programação

Avaliação

★Prova no papel

‣ questões objetivas

‣ questões subjetivas

★Datas:1.08 / 09 / 20112.13 / 10 / 20113.24 / 11 / 2011

7

7Monday, August 8, 2011

Page 8: DIM0108.0: Conceitos e técnicas de programação · DIM0108.0 - Conceitos e Técnicas de Programação Programação: conhecimentos a adquirir ★Programming in the small ‣algoritmos

DIM0108.0 - Conceitos e Técnicas de Programação

Plano de aulas

1)Funcionamento simplificado do computador. Os diferentes níveis do computador. Linguagens de programação: sintaxe, semântica; ferramentas. Primeiros programas. Comandos de saída. Variáveis. Operador de endereço. Tipo int: literais e operadores. Atribuição. Sequenciamento de comandos. Comandos de entrada. Estruturas condicionais: booleanos, operadores relacionais e condicionais. Ponteiros. Tipo int: representação binária. Operadores em nível de bit. Tipo float: representação binária, literais e operadores.

2)Sub-rotinas: papel, definição e aplicação. Parâmetros formais e parâmetros efetivos. Retorno. Funções e procedimentos. Ponteiros para obter resultados via parâmetros. Recursão. Estrutura de repetição while. Vetores. Estrutura de repetição for. Sub-rotinas e vetores.

3)Matrizes. Registros, enumerações. Cadeias de caracteres. Processamento de cadeias. Alocação dinâmica de memória. Ponteiros e registros.

8

8Monday, August 8, 2011

Page 9: DIM0108.0: Conceitos e técnicas de programação · DIM0108.0 - Conceitos e Técnicas de Programação Programação: conhecimentos a adquirir ★Programming in the small ‣algoritmos

DIM0108.0 - Conceitos e Técnicas de Programação

Resolução de dúvidas

9

★Presencial:

‣Docente

✓Local: DIMAp - Sala 12

✓Horário: 2T1234

★Virtual:

‣ fórum no SIGAA

9Monday, August 8, 2011

Page 10: DIM0108.0: Conceitos e técnicas de programação · DIM0108.0 - Conceitos e Técnicas de Programação Programação: conhecimentos a adquirir ★Programming in the small ‣algoritmos

DIM0108.0 - Conceitos e Técnicas de Programação

Alguns links

★DIMAp: http://www.dimap.ufrn.br

★SIGAA http://www.sigaa.ufrn.br

★Blog: http://blocoitp.wordpress.com

10

10Monday, August 8, 2011

Page 11: DIM0108.0: Conceitos e técnicas de programação · DIM0108.0 - Conceitos e Técnicas de Programação Programação: conhecimentos a adquirir ★Programming in the small ‣algoritmos

DIM0108.0 - Conceitos e Técnicas de Programação

Introdução à programação

David Déharbe

11

11Monday, August 8, 2011

Page 12: DIM0108.0: Conceitos e técnicas de programação · DIM0108.0 - Conceitos e Técnicas de Programação Programação: conhecimentos a adquirir ★Programming in the small ‣algoritmos

DIM0108.0 - Conceitos e Técnicas de Programação

O que um computador faz...

★Consome informação (através de dispositivos de entrada);

★Armazena informação (através de dispositivos de memória);

★Transforma informação (através de dispositivos de processamento);

★Produz informação (através de dispositivos de saída).

★Informação: dados e programas (usados para programar o próprio computador).

12

12Monday, August 8, 2011

Page 13: DIM0108.0: Conceitos e técnicas de programação · DIM0108.0 - Conceitos e Técnicas de Programação Programação: conhecimentos a adquirir ★Programming in the small ‣algoritmos

DIM0108.0 - Conceitos e Técnicas de Programação

Arquitetura de von Neumann

13

2.2 ARQUITETURA DE VON NEUMANN 20

se também às discussões do projeto desse novo computador e ficou responsável por redigir odocumento com a descrição dessas idéias. Com a publicação desse trabalho [17]5, divulgadocontendo apenas seu nome, essa organização interna de um computador passou a ser conhe-cida como “arquitetura de von Neumann”, apesar de Turing, Zuse, Eckert e Mauchly teremcontribuído ou já apresentado idéias semelhantes. Esse trabalho obteve grande circulação nomeio acadêmico e seu sucesso como proposta de implementação de um novo computador foiimediato. Até nossos dias, essa organização ainda é usada nos projetos de computadores maisconhecidos.

2.2 Arquitetura de von Neumann

As idéias publicadas por John von Neumann foram revolucionárias a ponto de estabelecerum novo paradigma de concepção de computadores para a época e que permanece válido atéos nossos dias. Informalmente, a maneira de organizar os componentes que constituem umcomputador é chamada arquitetura do computador. Assim, como a maioria dos computadoresatuais segue o modelo proposto por von Neumann, veremos aqui uma breve descrição daassim chamada arquitetura de von Neumann.

Nessemodelo, um computador é constituído por três componentes principais: (i) a unidadecentral de processamento ou UCP6, (ii) a memória e (iii) os dispositivos de entrada e saída.A UCP, por sua vez, é composta pela unidade lógico-aritmética ou ULA e pela unidade decontrole ou UC. Esses três componentes principais estão conectados e se comunicam atravésde linhas de comunicação conhecidas como barramento do computador.

Podemos ilustrar a arquitetura de von Neumann como na figura 2.1.

memória

UCP

UC ULA

entrada saída

Figura 2.1: Arquitetura de von Neumann.

A unidade central de processamento é responsável pela execução das instruções armaze-nadas, também chamadas de programa. Atualmente, o termo UCP é quase um sinônimo demicroprocessador. Ummicroprocessador é a implementação de umaUCP através de um único,

5 Artigo disponível na seção “Bibliografia complementar” na página da disciplina no Moodle.6 Do inglês central processing unit – CPU.

FACOM UFMS 13Monday, August 8, 2011

Page 14: DIM0108.0: Conceitos e técnicas de programação · DIM0108.0 - Conceitos e Técnicas de Programação Programação: conhecimentos a adquirir ★Programming in the small ‣algoritmos

DIM0108.0 - Conceitos e Técnicas de Programação

Programação

★Algoritmo: uma receita detalhada para realizar uma tarefa

‣ pode ser escrito em português, inglês, ou seguindo uma outra notação.

‣ o computador não entende

‣O algoritmo tem que chegar ao resultado em um tempo finito.

★Programa: codificação de um algoritmo em uma linguagem de programação.

‣ regras estritas de sintaxe

✓não pode escrever errado

‣ regras estritas de semântica

✓não pode escrever besteiras

‣ o computador também não entende, mas existem ferramentas para traduzir na linguagem do computador (assembly)

★Compilação do programa em linguagem de programação (código fonte) para a linguagem assembly (código objeto)

14

14Monday, August 8, 2011

Page 15: DIM0108.0: Conceitos e técnicas de programação · DIM0108.0 - Conceitos e Técnicas de Programação Programação: conhecimentos a adquirir ★Programming in the small ‣algoritmos

DIM0108.0 - Conceitos e Técnicas de Programação

Programa em linguagem de “alto” nível

15

void int_swap(int & i1, int & i2){! int tmp;! tmp = i1;! i1 = i2;! i2 = tmp;}

15Monday, August 8, 2011

Page 16: DIM0108.0: Conceitos e técnicas de programação · DIM0108.0 - Conceitos e Técnicas de Programação Programação: conhecimentos a adquirir ★Programming in the small ‣algoritmos

DIM0108.0 - Conceitos e Técnicas de Programação

Programa em assembly

16

! .section __TEXT,__text,regular,pure_instructions! .section __TEXT,__picsymbolstub1,symbol_stubs,pure_instructions,32! .machine ppc! .text! .align 2! .globl __Z8int_swapRiS___Z8int_swapRiS_:LFB2:! lwz r2,0(r3)! lwz r0,0(r4)! stw r0,0(r3)! stw r2,0(r4)! blrLFE2:! .globl __Z8int_swapRiS_.eh__Z8int_swapRiS_.eh = 0.no_dead_strip __Z8int_swapRiS_.eh! .constructor! .destructor! .align 1! .subsections_via_symbols

16Monday, August 8, 2011

Page 17: DIM0108.0: Conceitos e técnicas de programação · DIM0108.0 - Conceitos e Técnicas de Programação Programação: conhecimentos a adquirir ★Programming in the small ‣algoritmos

DIM0108.0 - Conceitos e Técnicas de Programação

Programa em hexadecimal

17

0000000 feed face 0000 0012 0000 0000 0000 00010000010 0000 0003 0000 016c 0000 2000 0000 00010000020 0000 0104 0000 0000 0000 0000 0000 00000000030 0000 0000 0000 0000 0000 0090 0000 01880000040 0000 0090 0000 0007 0000 0007 0000 00030000050 0000 0000 5f5f 7465 7874 0000 0000 00000000060 0000 0000 5f5f 5445 5854 0000 0000 00000000070 0000 0000 0000 0000 0000 008c 0000 01880000080 0000 0002 0000 0218 0000 000c 8000 04000000090 0000 0000 0000 0000 5f5f 7069 6373 796d00000a0 626f 6c73 7475 6231 5f5f 5445 5854 000000000b0 0000 0000 0000 0000 0000 008c 0000 000000000c0 0000 0214 0000 0000 0000 0000 0000 000000000d0 8000 0008 0000 0000 0000 0020 5f5f 6e6c00000e0 5f73 796d 626f 6c5f 7074 7200 5f5f 444100000f0 5441 0000 0000 0000 0000 0000 0000 008c0000100 0000 0004 0000 0214 0000 0002 0000 00000000110 0000 0000 0000 0006 0000 0000 0000 00000000120 0000 0002 0000 0018 0000 027c 0000 00030000130 0000 02a0 0000 0014 0000 000b 0000 00500000140 0000 0000 0000 0000 0000 0000 0000 00020000150 0000 0002 0000 0001 0000 0000 0000 00000000160 0000 0000 0000 0000 0000 0000 0000 0000

0000170 0000 0278 0000 0001 0000 0000 0000 00000000180 0000 0000 0000 0000 bfc1 fff8 9421 ffd00000190 7c3e 0b78 7c08 02a6 429f 0005 7d48 02a600001a0 7c08 03a6 3c4a 0000 8042 0078 8002 000000001b0 7c03 0378 8021 0000 bbc1 fff8 4e80 002000001c0 bfc1 fff8 9421 ffd0 7c3e 0b78 7c08 02a600001d0 429f 0005 7d48 02a6 7c08 03a6 907e 004800001e0 3c4a 0000 8042 0040 8042 0000 801e 004800001f0 7f80 1000 409d 0014 3c4a 0000 8042 00400000200 801e 0048 9002 0000 8021 0000 bbc1 fff80000210 4e80 0020 0000 0000 ab00 0074 0000 008c0000220 a100 0000 0000 004c ac00 0070 0000 008c0000230 a100 0040 0000 004c ab00 005c 0000 008c0000240 a100 0000 0000 004c ac00 0058 0000 008c0000250 a100 0040 0000 004c ab00 0020 0000 008c0000260 a100 0000 0000 0014 ac00 001c 0000 008c0000270 a100 0078 0000 0014 0000 0002 0000 00060000280 0f01 0000 0000 0038 0000 0001 0f01 00000000290 0000 0000 0000 000e 0100 0000 0000 000000002a0 005f 6d61 7800 5f69 6e73 6572 7400 5f5f00002b0 6d61 7800 00002b4

17Monday, August 8, 2011

Page 18: DIM0108.0: Conceitos e técnicas de programação · DIM0108.0 - Conceitos e Técnicas de Programação Programação: conhecimentos a adquirir ★Programming in the small ‣algoritmos

DIM0108.0 - Conceitos e Técnicas de Programação

Linguagens de programação

★Programas de computador são escritos em uma linguagem de programação

★Um programa pode ser visto como uma construção resultante da combinação de elementos mais simples.

★É preciso saber:

‣ quais são os elementos que podemos usar para construir um programa;

‣ como podemos combinar esses elementos para formar componentes maiores.

★Sintaxe vs semântica

18

18Monday, August 8, 2011

Page 19: DIM0108.0: Conceitos e técnicas de programação · DIM0108.0 - Conceitos e Técnicas de Programação Programação: conhecimentos a adquirir ★Programming in the small ‣algoritmos

DIM0108.0 - Conceitos e Técnicas de Programação

Syntax

In linguistics, syntax (from Ancient Greek σύνταξις "arrangement" from σύν syn, "together", and τάξις táxis, "an ordering") is the study of the principles and rules for constructing sentences in natural languages. In addition to referring to the discipline, the term syntax is also used to refer directly to the rules and principles that govern the sentence structure of any individual language, as in "the syntax of Modern Irish."Modern research in syntax attempts to describe languages in terms of such rules. Many professionals in this discipline attempt to find general rules that apply to all natural languages. The term syntax is also used to refer to the rules governing the behavior of mathematical systems, such as formal languages used in logic—see syntax (logic)—and computer programming languages—see syntax (programming languages).

19

19Monday, August 8, 2011

Page 20: DIM0108.0: Conceitos e técnicas de programação · DIM0108.0 - Conceitos e Técnicas de Programação Programação: conhecimentos a adquirir ★Programming in the small ‣algoritmos

DIM0108.0 - Conceitos e Técnicas de Programação

Syntax (programming languages)

In computer science, the syntax of a programming language is the set of rules that define the combinations of symbols that are considered to be correctly structured programs in that language. (…) Text-based programming languages are based on sequences of characters, while visual programming languages are based on the spatial layout and connections between symbols (which may be textual or graphical).The lexical grammar of a textual language specifies how characters must be chunked into tokens. Other syntax rules specify the permissible sequences of these tokens and the process of assigning meaning to these token sequences is part of semantics.

20

20Monday, August 8, 2011

Page 21: DIM0108.0: Conceitos e técnicas de programação · DIM0108.0 - Conceitos e Técnicas de Programação Programação: conhecimentos a adquirir ★Programming in the small ‣algoritmos

DIM0108.0 - Conceitos e Técnicas de Programação

Syntax (programming languages)

In computer science, the syntax of a programming language is the set of rules that define the combinations of symbols that are considered to be correctly structured programs in that language. (…) Text-based programming languages are based on sequences of characters, while visual programming languages are based on the spatial layout and connections between symbols (which may be textual or graphical).The lexical grammar of a textual language specifies how characters must be chunked into tokens. Other syntax rules specify the permissible sequences of these tokens and the process of assigning meaning to these token sequences is part of semantics.

20

palavras

20Monday, August 8, 2011

Page 22: DIM0108.0: Conceitos e técnicas de programação · DIM0108.0 - Conceitos e Técnicas de Programação Programação: conhecimentos a adquirir ★Programming in the small ‣algoritmos

DIM0108.0 - Conceitos e Técnicas de Programação

Syntax (programming languages)

In computer science, the syntax of a programming language is the set of rules that define the combinations of symbols that are considered to be correctly structured programs in that language. (…) Text-based programming languages are based on sequences of characters, while visual programming languages are based on the spatial layout and connections between symbols (which may be textual or graphical).The lexical grammar of a textual language specifies how characters must be chunked into tokens. Other syntax rules specify the permissible sequences of these tokens and the process of assigning meaning to these token sequences is part of semantics.

20

palavrassinais de pontuação

20Monday, August 8, 2011

Page 23: DIM0108.0: Conceitos e técnicas de programação · DIM0108.0 - Conceitos e Técnicas de Programação Programação: conhecimentos a adquirir ★Programming in the small ‣algoritmos

DIM0108.0 - Conceitos e Técnicas de Programação

Syntax (programming languages)

In computer science, the syntax of a programming language is the set of rules that define the combinations of symbols that are considered to be correctly structured programs in that language. (…) Text-based programming languages are based on sequences of characters, while visual programming languages are based on the spatial layout and connections between symbols (which may be textual or graphical).The lexical grammar of a textual language specifies how characters must be chunked into tokens. Other syntax rules specify the permissible sequences of these tokens and the process of assigning meaning to these token sequences is part of semantics.

20

palavrassinais de pontuação

frases

20Monday, August 8, 2011

Page 24: DIM0108.0: Conceitos e técnicas de programação · DIM0108.0 - Conceitos e Técnicas de Programação Programação: conhecimentos a adquirir ★Programming in the small ‣algoritmos

DIM0108.0 - Conceitos e Técnicas de Programação

Semantics

Semantics (from Greek sēmantiká, neuter plural of sēmantikós)[1][2] is the study of meaning. It focuses on the relation between signifiers, such as words, phrases, signs and symbols, and what they stand for, their denotata.(…)In computer science, the term semantics refers to the meaning of languages, as opposed to their form (syntax)

21

21Monday, August 8, 2011

Page 25: DIM0108.0: Conceitos e técnicas de programação · DIM0108.0 - Conceitos e Técnicas de Programação Programação: conhecimentos a adquirir ★Programming in the small ‣algoritmos

DIM0108.0 - Conceitos e Técnicas de Programação

Semantics (cont'd)

For instance, the following statements use different syntaxes, but cause the same instructions to be executed:x += y (C,C++, Java, Perl, Python, Ruby, PHP, etc.)x := x + y (Pascal)x := !x + !y (OCaml)ADD x, y (Intel 8086 Assembly Language)LET X = X + Y   (early BASIC)x = x + y (C, most BASIC dialects, Fortran)ADD Y TO X GIVING X (COBOL)(incf x y) (Common Lisp)

Generally these operations would all perform an arithmetical addition of 'y' to 'x' and store the result in a variable called 'x'.

22

22Monday, August 8, 2011

Page 26: DIM0108.0: Conceitos e técnicas de programação · DIM0108.0 - Conceitos e Técnicas de Programação Programação: conhecimentos a adquirir ★Programming in the small ‣algoritmos

DIM0108.0 - Conceitos e Técnicas de Programação

Semantics of programming languages

In programming language theory, semantics is the field concerned with the rigorous mathematical study of the meaning of programming languages and models of computation. The formal semantics of a language is given by a mathematical model that describes the possible computations described by the language.

23

Não usaremos modelos matemáticos e sim descrições informais para apresentar a semântica das construções da linguagem de programação.

A semântica de uma construção da

23Monday, August 8, 2011

Page 27: DIM0108.0: Conceitos e técnicas de programação · DIM0108.0 - Conceitos e Técnicas de Programação Programação: conhecimentos a adquirir ★Programming in the small ‣algoritmos

DIM0108.0 - Conceitos e Técnicas de Programação

Semantics of programming languages

In programming language theory, semantics is the field concerned with the rigorous mathematical study of the meaning of programming languages and models of computation. The formal semantics of a language is given by a mathematical model that describes the possible computations described by the language.

24

Não usaremos modelos matemáticos e sim descrições informais para apresentar a semântica das construções da linguagem de programação.

A semântica de uma construção da

24Monday, August 8, 2011

Page 28: DIM0108.0: Conceitos e técnicas de programação · DIM0108.0 - Conceitos e Técnicas de Programação Programação: conhecimentos a adquirir ★Programming in the small ‣algoritmos

DIM0108.0 - Conceitos e Técnicas de Programação

Sintaxe

★A sintaxe da linguagem de programação será apresentando uma notação precisa.

★Exemplo:<frase> ::= <grupo nominal> <grupo verbal> "."| <grupo nominal> <grupo verbal> <complemento> "."

<grupo nominal> ::= <pronome>| <artigo> <substantivo>

…★Legenda

‣ ::= é definido como

‣ | alternativa

‣ <> são usados para delimitar grupos de tokens (não terminais)

‣ aspas duplas são usados para delimitar tokens (terminais)

25

25Monday, August 8, 2011

Page 29: DIM0108.0: Conceitos e técnicas de programação · DIM0108.0 - Conceitos e Técnicas de Programação Programação: conhecimentos a adquirir ★Programming in the small ‣algoritmos

DIM0108.0 - Conceitos e Técnicas de Programação

Semântica

★A semântica de um programa é o resultado de uma combinação da semântica de cada um dos seus elementos.

★Aprenderemos a semântica de cada elemento da linguagem★Aprenderemos como combinar a semântica dos elementos da linguagem★A semântica será definida de maneira informal (e não com um modelo matemático),

possivelmente usando equações quando for simplificar a expressão desta semântica.★Em geral, a definiçãod a semântica de um elemento de programa pode ter quatro

componentes:

‣ quais são os dados lidos durante a execução do elemento de programa

‣ quais são os dados escritos durante a execução do elemento de programa

‣ como a memória é alterada durante a execução do elemento de programa

‣ qual o resultado da execução do elemento de programa

26

26Monday, August 8, 2011

Page 30: DIM0108.0: Conceitos e técnicas de programação · DIM0108.0 - Conceitos e Técnicas de Programação Programação: conhecimentos a adquirir ★Programming in the small ‣algoritmos

DIM0108.0 - Conceitos e Técnicas de Programação

As ferramentas do programador

David Déharbe

27

27Monday, August 8, 2011

Page 31: DIM0108.0: Conceitos e técnicas de programação · DIM0108.0 - Conceitos e Técnicas de Programação Programação: conhecimentos a adquirir ★Programming in the small ‣algoritmos

DIM0108.0 - Conceitos e Técnicas de Programação

Interagindo com o computador

★O computador é uma máquina que armazena, manipula e transmite informações.

‣ Essas informações são armazenadas em entidades chamadas arquivos. ★O sistema operacional é um programa que se executa automaticamente quando o

computador é ligado.

‣ é através dele que o usuário e outros programas acessem os recursos do computador.

‣ A interação do usuário é realizada através de interface gráfica (mais intuitiva) ou de linha de comando (mais poderosa).

★Um componente do sistema operacional é o sistema de arquivos.

‣ organiza os arquivos de forma hierárquica usando pastas (diretórios);

‣ uma pasta pode conter outras pastas e arquivos com informações.★Um programa nada mais é que um arquivo que contém instruções em linguagem do

computador (código binário).

28

28Monday, August 8, 2011

Page 32: DIM0108.0: Conceitos e técnicas de programação · DIM0108.0 - Conceitos e Técnicas de Programação Programação: conhecimentos a adquirir ★Programming in the small ‣algoritmos

DIM0108.0 - Conceitos e Técnicas de Programação

Objetivo do programador

★Objetivo:

‣ produzir programas

✓código binário para execução no computador ;

★Meio:

‣ escrever o código fonte em alguma linguagem de programação;

✓arquivo fonte

‣Usar um compilador para traduzir o código fonte em código binário;

✓arquivo binário

29

29Monday, August 8, 2011

Page 33: DIM0108.0: Conceitos e técnicas de programação · DIM0108.0 - Conceitos e Técnicas de Programação Programação: conhecimentos a adquirir ★Programming in the small ‣algoritmos

DIM0108.0 - Conceitos e Técnicas de Programação

Objetivo do programador

★Produzir código binário para execução no computador;

★Ser produtivo, usando ferramentas adequadas;

‣ editor: criação e modificação de programas escritos em linguagem de alto nível;

✓cria arquivo fonte

‣ interpretador: execução do programa diretamente na linguagem de alto nível;

✓lê arquivo fonte

‣ compilador: tradução para a linguagem do computador;

✓lê arquivo fonte, cria arquivo binário

‣ depurador: interação do programador com o programa se executando, permite entender erros;

✓lê arquivo binário

‣ ambientes integrados de desenvolvimento (IDE): integram diversas ferramentas em um único espaço de trabalho.

✓Eclipse, Netbeans, Visual Studio

30

30Monday, August 8, 2011

Page 34: DIM0108.0: Conceitos e técnicas de programação · DIM0108.0 - Conceitos e Técnicas de Programação Programação: conhecimentos a adquirir ★Programming in the small ‣algoritmos

DIM0108.0 - Conceitos e Técnicas de Programação

Editor

★Permite ao programador editar textos de programas.

★Oferece recursos de destaque da sintaxe da linguagem.

★Oferece opções de comunicação com as demais ferramentas de programacao.

★Exemplos: emacs, vi, kate, joe.

31

31Monday, August 8, 2011

Page 35: DIM0108.0: Conceitos e técnicas de programação · DIM0108.0 - Conceitos e Técnicas de Programação Programação: conhecimentos a adquirir ★Programming in the small ‣algoritmos

DIM0108.0 - Conceitos e Técnicas de Programação

Compilador

★Transforme a linguagem de alto nível em linguagem de computador .

★Cada compilador se especializa em uma linguagem:

‣OCaml, C, C++, Java, etc.★O código binário funciona para uma plataforma computacional

‣ família de processador

‣ sistema operacional

★Para uma mesma linguagem, podem existir diversos compiladores disponíveis.

★Lê um (ou vários) arquivo(s) na linguagem fonte e gera um programa executável.

★Existem linguagens para os quais não há compilador e sim interpretador.

32

32Monday, August 8, 2011

Page 36: DIM0108.0: Conceitos e técnicas de programação · DIM0108.0 - Conceitos e Técnicas de Programação Programação: conhecimentos a adquirir ★Programming in the small ‣algoritmos

DIM0108.0 - Conceitos e Técnicas de Programação

Depurador

★Permite acompanhar a execução passo a passo do programa desenvolvido.

★Raramente um programa funciona diretamente como previsto.

✓As vezes, nunca chega a funcionar corretamente.

★A depuração é uma das atividades que permitem ao programador determinar por que razões o programa não funciona como previsto.

33

33Monday, August 8, 2011

Page 37: DIM0108.0: Conceitos e técnicas de programação · DIM0108.0 - Conceitos e Técnicas de Programação Programação: conhecimentos a adquirir ★Programming in the small ‣algoritmos

DIM0108.0 - Conceitos e Técnicas de Programação

A caixa de ferramentas do programador C

★Ferramentas básicas:

‣ Editor de texto: emacs

‣Compilador:

✓gcc: compila para arquitetura x86, x86_64, PowerPC, etc.

★Ferramentas avançadas:

‣Depurador: gdb

34

34Monday, August 8, 2011

Page 38: DIM0108.0: Conceitos e técnicas de programação · DIM0108.0 - Conceitos e Técnicas de Programação Programação: conhecimentos a adquirir ★Programming in the small ‣algoritmos

DIM0108.0 - Conceitos e Técnicas de Programação

Nosso primeiro programa

35

35Monday, August 8, 2011