1 of 65

Agenda

  • Solução de Problemas
    • Pensamento Computacional
    • Algoritmos e Computação
  • Programação
    • Paradigmas de Programação
    • Fluxograma / Pseudocódigo
    • Principais blocos de contrução e Estruturas de Controle

2 of 65

Engenharia de Software e Solução de Problemas

Engenheiros de software projetam e criam sistemas e aplicativos de computador para solucionar problemas do mundo real.

Os trabalhos em engenharia de software hoje requerem

excelentes habilidades de resolução de problemas.

O pensamento computacional é uma estratégia popular usada pelos engenheiros de software para solucionar problemas de maneira estruturada e sistemática, uma vez que envolve expressar problemas e suas soluções de uma maneira que um computador também possa executar.

3 of 65

Solução de Problemas

  • O que é Solução de Problemas?

    • É o processo de identificar um problema, desenvolver possíveis caminhos de solução e tomar a ação apropriada.

    • A habilidade de resolver problemas é uma habilidade básica para a vida e é essencial para o nosso dia-a-dia, seja em casa, na escola ou no trabalho.
  • A habilidade de resolver problemas, assim como qualquer outra habilidade, melhora a medida que mais se pratica.

Fonte: asq.org

4 of 65

Solução de Problemas

  • Estratégias para Solução de Problemas

    • Alguns passos para a solução de problemas [Bransford & Stein, 1993] :
      • Identicar o problema
      • Definir o contexto do problema
      • Explorar possíveis estratégias
      • Agir na melhor solução
      • OLhar para trás e aprender

5 of 65

Solução de Problemas

  • No geral,resolver um problema consisteem entendero problema,planejar,executare

avaliar(retrospectiva)o plano.

Entender o problema:

Indicar quais figuras (a ou b) podem ser construídas com o conjunto de formas original (OSS)

Planejar caminhos desolução:

Verificar se cada formado OSS está contida nas formas das possíveis respostas

Verificar se cada formadas respostas está contida no conjunto do OSS

Implementar:

Solução 1: Comparar OSS com a, Comparar OSS com b. Resultado: A respostaé a. Solução 2: Comparar a com OSS, Comparar b com OSS. Resultado: A respostaé a.

Avaliar:

Avaliar ambas as soluções.

Fonte: https://ccmit.mit.edu/problem-solving/

6 of 65

Pensamento Computacional

  • O que é Pensamento Computacional?
    • É uma abordagem para a resolução de problemas usando quatro processos-chave de pensamento, expressando problemas e suas soluções de maneiras que um computador também poderia executar :
      • Decomposição: dividir problemas complexos em

problemas menores e mais simples (dividir para

conquistar);

      • Reconhecimento de padrões: estabelecer conexões entre problemas similares e experiências anteriores;
      • Abstração: identificar informações importantes enquanto ignora detalhes irrelevantes ou não relacionados;
      • Algoritmos: projetar etapas simples para

resolver problemas.

7 of 65

Pensamento Computacional

  • O Pensamento Computacional é um processo iterativo composto por três estágios:

    • Especificação do Problema: analisar o problema e declará-lo precisamente, usando abstração, decomposição e reconhecimento de padrões, além de estabelecer os critérios para solução.

    • ExpressãoAlgorítmica: encontrar uma solução computacional usando

representações de dados apropriadas e design de algoritmos.

    • Implementação e Avaliação da Solução: implementar a solução e conduzir testes

sistemáticos (verificação) antes de generalizar para outros problemas.

8 of 65

Pensamento Computacional

  • Exemplo: Aprender a dançar Salsa

    • Abstração: Salsa é uma sequência de passos e voltas

9 of 65

Pensamento Computacional

  • Exemplo: Aprender a dançar Salsa
  • Decomposição: São os principais

passos e voltas da Salsa

10 of 65

Pensamento Computacional

  • Exemplo: Aprender a dançar Salsa

    • Reconhecimento de Padrões: Alguns passos e movimentos são repetidos, existem sequências típicas e uma sequência comum de etapas.

x2

x4

x2

11 of 65

Pensamento Computacional

  • Exemplo: Aprender a dançar Salsa

Especificação do Problema:

Como reproduzir as sequências principais de

passos e voltas na salsa.

Representação Algorítmica:

Fonte: https://www.justsalsa.com

Validação:

Grave um vídeo dançando!

12 of 65

Pensamento Computacional

  • O que é um algoritmo?
    • Com o pensamento computacional, podemos propor soluções com instruções claras, passo

a passo para solucionar problemas.

Fazer um bolo:

      • Pré-aqueça o forno a 180°C.
      • Unte uma forma de bolo com manteiga.
      • Misture os ingredientes
      • Adicione 1 xícara de água quente
      • Despeje a massa na forma preparada e asse por cerca de 30-35 minutos,
      • Retire o bolo do forno e deixe esfriar.
      • Sirva

13 of 65

Pensamento Computacional

  • Algorítmo: conjunto de instruções claras, passo a passo.

14 of 65

Pensamento Computacional

  • Algorítmos são usados em toda a parte!

15 of 65

Algoritmos e Computação

Fluxograma

Pseudocódigo

Algoritmo

Algorithm to find the highest of 3 entered numbers

Step 0:

start

Step 1:

get numbers a, b, and c

Step 2:

if a is higher than b then go to step

3, else go to step 4

Step 3:

compare a and c and print highest then

go to step 5

Step 4:

compare b and c and print highest then go to step 5

Step 5:

end

Representação

informale narrativa de

um algoritmo. Mais

próxima de um “códigofake”.

Representação gráficade um algorítmo

Passos, regras e instruçõespara

resolver um problema.

16 of 65

Algoritmos e Computação

  • O pseudocódigo é uma linguagem artificial e informal que auxilia os programadores no desenvolvimento e na expressão de algoritmos.
  • É uma ferramenta detalhadade design algorítmico baseada em texto, e pode incluir representações informais de estruturas de fluxo de controle, tais como repetições, seleções, entre outras, que serão abordadasposteriormente.
  • Essa representação pode contribuir para uma melhor compreensão do algoritmo, pois se aproxima da sua representaçãoem código, ou seja, da sua implementação em uma linguagem de programação específica.

Pseudocódigo

Representação narrativa de um algoritmo.

17 of 65

Algoritmos e Computação

  • Fluxogramas são ferramentas gerais para representar fluxos de trabalho e processos. Eles podem ser usados como uma representação gráfica/diagramática de um algoritmo.
  • Eles podem ser bastante úteis para explicar um

algoritmo a outros devido à sua natureza visual.

  • Um fluxograma utiliza símbolos que são conectados uns aos outros para indicar o fluxo de informações e processamento.

  • O processo de desenhar um fluxograma para um algoritmo é conhecido como "desenho de fluxograma" ou “flowchart”.

Fluxograma

Representação gráficade um algoritmo

18 of 65

Algoritmos e Computação

Flowchart

Representação Gráficade um algoritmo

Símbolos Comuns para Fluxograma

19 of 65

Algoritmos e Computação

Ok... Eu tenho uma solução (algoritmo) produzida usando o pensamento computacional, como eu uso isso com um computador?

Problema

Solucionar com Pensamento

Computacional

Algoritmo

?

Computador

Para aproveitar o que a computação torna possível, precisamos aprender como formular e

estruturar o que queremos que o computador faça.

Steve Wolfram, cientista da computação, designer-chefe do Mathematica e Wolfram Alpha.

20 of 65

Algoritmos e Computação

  • A computação abrange habilidades e práticas tanto da ciência da computação quanto do pensamento computacional.
  • O pensamento computacional é uma abordagem de resolução de problemas que se integra em atividades, e a programação é a prática de desenvolver um conjunto de instruções que um computador pode entender e executar.

computacional

Fonte: Digital Promise

Problema

Solução com pensamento

Algoritmo

Programação

Computador

App

21 of 65

Algoritmos e Computação

?

  • Mas... o que é computação, na verdade

    • Computação é o processo de usar a tecnologia do computador para completar uma tarefa orientada a objetivos.

    • Computação é o amplificador mental supremo - computadores podem

mecanizar qualquer atividade intelectual que possamos imaginar.

    • Resolver problemas é o cerne da ciência da computação, que estuda processos

de informação (sequência de etapas).

    • Podemos definir um processo de informação em um computador por meio de um programa.

    • O que distingue um computador de outras máquinas é sua programabilidade.

Fonte: Introductionto Computing: Explorations in Language, Logic, and Machines

22 of 65

Algoritmos e Computação

  • Um computador é uma máquina capaz de:

    • Aceitar entrada: digitada por um humano em um teclado, recebida por uma rede, etc.

    • Executar um procedimento mecânico, isto é, um procedimento (descrição de um processo

de informação) em que cada etapa pode ser executada sem qualquer pensamento.

    • Produzir saída: pode ser dados exibidos a um humano, mas também pode ser qualquer

coisa que afete o mundo fora do computador, etc.

Computador

Entrada

Saída

23 of 65

Algoritmos e Computação

  • O que podemos fazer com essas tecnologias?

24 of 65

Algoritmos e Computação

25 of 65

Algoritmos e Computação

Stored

Program

Arquitetura de Von Neumann

(1945) EDVAC + UNIVAC

Fonte: https://www.computerscience.gcse.guru/theory/von-neumann-architecture

26 of 65

Algoritmos e Computação

source: carnegie

27 of 65

Algoritmos e Computação

Conforme mencionado anteriormente, um computador genérico tem uma arquitetura que permite processar entrada (digitada por dispositivos de entrada) e produzir saída (exibida em dispositivos de saída). A arquitetura inclui memória e CPU.

CPU

Entrada

Saída

Memoria

28 of 65

Algoritmos e Computação

  • Uma arquitetura comum é a arquitetura Von Neumann (também conhecida como Arquitetura de Princeton ou ISA), e os computadores modernos são baseados no seu conceito de programa armazenado, o que torna o computador simples de programar e reprogramar (não é hardwired).

CPU (Processador)

Memória

Unidade de

Controle

ULA

Registradores

Programa

Salvo

Dispositivos

de Entrada

Dispositivos

de Saída

Via de transferênciade dados

RAM

Externa

29 of 65

Algoritmos e Computação

  • Ok... Mas como um computador realmente executa um programa?
    • Uma CPU (microprocessador) é o cérebro de um computador e pode processar um conjunto de instruções (linguagem de máquina) a uma determinada taxa (ciclo de relógio da CPU em hertz).
    • Uma CPU possui uma Unidade de Controle (UC) que coordena a execução das instruções.
    • A Unidade Lógico Aritmética (ULA) executa cálculos e possui armazenamento

temporário (registradores) para armazenar seus dados.

CPU (Processador)

UC

Unidade Lógico Aritmética

Ciclos de Clock

Registradores

armazenamento

ops

30 of 65

Algoritmos e Computação

  • A RAM (Random Access Memory) é uma memória volátil onde podemos armazenar dados em locais específicos (endereços).

  • Com essa arquitetura, podemos realizar muitas tarefas!!

  • Simples, mas poderoso!!!!

CPU (Processador)

Unidade de Controle

Unidade Lógico Aritmética

Registradores

Ciclos de Clock

999

998

997

3

2

1

0

RAM

123

Endereço

Conteúdos

ops

armazenamento

31 of 65

Algoritmos e Computação

  • Uma CPU pode executar um conjunto de instruções especificadas em código de máquina. Um programa de computador é um conjunto de instruções que pode ser carregado e executado a partir da memória (programa armazenado) em ordem sequencial pela Unidade de Controle (UC).

Memória

instrução 1

instrução 2

instrução n

UC

Um Programa

1

32 of 65

Algoritmos e Computação

  • Cada instrução possui um código de operação (OP Code) e parâmetros.

  • A UC então executará a operação especificada usando registradores e a

ULA

Memória

instrução 1

instrução 2

instrução n

1100 1000

LOAD_A 8

Exemplo de instrução em

binário

OP

Endereço de Memória

UC

Um programa

Orquestrados

ULA

Cada instrução define um códigode operação (OP) e um

endereço de memóriaou registro.

1

2

33 of 65

Algoritmos e Computação

Vamos supor que queremos somar dois números usando a CPU.

As instruções para este programa (programa de SOMA) serão carregadas da RAM

via UC.

  • A primeira instrução é LOAD_A 8, isso irá definir o valor da memória no

endereço 8 (suponha que seja 10) no registro A da CPU.

Memória

LOAD_A 8

LOAD_B 2

ADD B A

STORE_A

10

2

Programa SOMA

1

Endereço

8

9

10

UC

Registradores

A = 10

2

Conteúdodo

endereço 8

3

34 of 65

Algoritmos e Computação

Então, a UC buscará a próxima instrução LOAD_B 9, que definirá o valor da

memória no endereço 9 (supondo que seja 2) no registrador B da CPU.

Memória

LOAD_A 8

LOAD_B 2

ADD B A

STORE_A

10

2

Programa

SOMA

4

Endereço

8

9

10

UC

Registradores

A = 10

5

conteúdodo

endereço 9

6

B = 2

35 of 65

Algoritmos e Computação

(cont.) Adicionar 2 números via CPU

Então, a UC irá buscar a próxima instrução ADD B A, isso irá adicionar o valor do registro A com o valor do registro B via a ULA e armazenar o valor de volta no registro A.

Memória

LOAD_A 8

LOAD_B 2

ADD B A

STORE_A 10

10

2

Programa

SOMA

7

Endereço

8

9

10

UC

Registradores

A = 10

B = 2

ULA

8

ADD B A

9

A = 12

12

10

36 of 65

Algoritmos e Computação

(cont.) adicionar 2 números via CPU.

  • Por fim, a UC obterá a próxima instrução STORE_A 10, que copiará o valor do registro A (12) no endereço de memória 10.
  • Pronto! A CPU adicionou os dois números!

Memória

LOAD_A 8

LOAD_B 2

ADD B A

STORE_A

10

2

12

11

UC

Registradores

A = 12

B = 2

Endereço

8

9

10

12

13

Programa SOMA

37 of 65

Programação

  • Espera aí! Isso parece tão complexo, nada prático e um processo

doloroso para fazer manualmente!

  • Eu preciso programar um algoritmo em código de máquina

manualmente???

Problema

Solução de Problemascom

Pensamento Computacional

Algorítmo

Computador

App

Programação

LOAD_A 8

LOAD_B 2

ADD B A

STORE_A

38 of 65

Programação

  • Não! Existem ferramentas melhores para isso! Podemos usar alguns

processadores de linguagem (tradutores) para programar um computador!

  • Programação é apenas o ato de escrever instruções que fazem o computador fazer algo útil (como resolver um problema usando nosso algoritmo).
  • Tradutores permitem que os humanos se comuniquem com os computadores (linguagem de máquina)!

Em um exemplo anterior, as instruções eram instruções em

linguagem de máquina (representação binária do OP Code).

LOAD_A 8

LOAD_B 2

ADD B A STORE_A

Processador

de Linguagem

39 of 65

Programação

Existem várias formas de programar um computadorusando processadores de

linguagem!

  • Usando Assemblers:
    • Traduz um programa fonte escrito em linguagem assembly em código de máquina.

  • Usando Interpreters:
    • Traduz sequencialmente uma única declaração de um programa fonte em código de

máquina.

  • Usando Compiladores:
    • O código-fonte completo escrito em uma linguagem de alto nível é traduzido para código

de máquina.

  • Usando Transpilers:
    • O código-fonte completo escrito em uma linguagem é traduzido para outra linguagem

(também conhecido como compilação de fonte para fonte).

40 of 65

Programação

  • Assemblers:

    • Um Assembler traduz um programa escrito na linguagem assembly em código

de máquina.

    • O código-fonte é uma entrada (input) do Assembler que contém instruções em

linguagem assembly específicas para o computador.

    • O resultado gerado pelo Assembler é o código objeto ou código de máquina que é compreensível pelo computador.

Assembler

Código Fonte (LinguagemAssembly)

Código de Máquina (Linguagem de Máquina)

41 of 65

Programação

  • Assemblers:

    • Uma linguagem de montagem é um tipo de linguagem de programação de nível médio/baixo que tem a intenção de se comunicar diretamente com o hardware do computador.

    • As linguagens de montagem são projetadas para serem legíveis por seres

humanos.

    • Esta é a forma mais próxima que um programador pode chegar do código de

máquina.

    • Hoje em dia, a linguagem de montagem é usada principalmente para manipulação direta do hardware, acesso a instruções especializadas do processador ou para abordar problemas críticos de desempenho.

Fonte: https://www.cs.mtsu.edu/~xyang/2170/computerLanguages.html

42 of 65

Programação

  • Interpretadores:

    • Um Interpretador executa diretamente instruções escritas em uma linguagem de programação ou script, sem a necessidade de converte-las previamente para um código objeto ou de máquina.

    • Os interpretadores leem e executam o programa instrução por instrução.

Interpretador

CódigoFonte (Linguagem de alto nível

/ Scripting)

Tradução para o código binário

Linha 1

Execução

Tradução para o códigobinário

Tradução para o

códigobinário

Linha 2

Linha n

Execução

Execução

43 of 65

Programação

  • Interpretadores:

    • Um interpretador leva menos tempo para analisar o código-fonte, mas o tempo de execução geral do programa é mais lento.

    • Uma linguagem de script é basicamente uma linguagem de alto nível em que as instruções são escritas para um ambiente de tempo de execução. Elas não exigem a etapa de compilação e são interpretadas em vez disso.

44 of 65

Programação

  • Compiladores:
    • Um compilador traduz um programa escrito em uma linguagem de alto nível para

código de máquina.

    • Uma linguagem de alto nível é uma linguagem de computador que pode ser entendida pelos usuários. A linguagem de alto nível é muito similar às linguagens humanas e tem um conjunto de regras gramaticais que são usadas para tornar as instruções mais fáceis.

    • A saída gerada pelo compilador é o código objeto ou código de máquina

compreensível pelo computador.

Compiler

Código Fonte (Linguagem de Alto Nível)

Códigode Máquina (Linguagem de Máquina)

45 of 65

Programação

  • Compiladores:
    • A etapa de compilação é necessária apenas uma vez. Depois disso,

podemos executar o código binário quantas vezes quisermos.

    • Um linker irá pegar todos os arquivos objeto gerados pelo compilador e combiná-los com as bibliotecas necessárias em um único programa executável.

Source code

file3.cpp

Compiler

file1.cpp

file2.cpp

file1.o file2.o file3.o

Linker

Libraries Resources

Program

46 of 65

Programação

  • Linguagens de alto-nível: Linguagem amigável aos programadores. Menos

dependente de um tipo específico de computador.

  • Linguagens de baixo-nível: Projetadas principalmente para operar e manipular todo

o hardware e conjunto de instruções (próximo ao hardware).

Java C++ Python

Linguagem de Alto-Nível Linguagem Assembly Linguagem de Máquina Hardware

Linguagem de Baixo-nível

Linguagem de Alto-nível

47 of 65

Programação

Linguagem de Baixo-Nível

Linguagem de Alto-Nível

48 of 65

Programação

Problema

Algoritmo

Computador

App

Programação

Linguagem de Alto Nível

Solução de Problemascom

Pensamento Computacional

  • Ok... Se eu tiver um algoritmo e quiser usar uma linguagem de programação de alto nível, o que vem a seguir?

  • Precisamos implementar o algoritmo na linguagem de programação de alto nível.

49 of 65

Programação

  • Programar permite representar/implementar (codificar) um algoritmo em uma linguagem de programação como um programa que pode ser processado por um computador.

  • Uma linguagem de programação inclui vários elementos para representar um algoritmo dado.

  • A linguagem de programação segue um paradigma de programação.

Algoritmo

Computador

App

Programação

High-Level

Language

50 of 65

Linguagens de Programação

  • Um paradigma pode ser tido como um método para resolver um

problema ou uma tarefa usando certa linguagem de programação.

  • É um método para resolver um problema usando ferramentas e técnicas que estão disponíveis para nós seguindo alguma abordagem / convenção.

Paradigmas de

Programação

Imperativo

Procedural

Orientado a

Objetos

Processamento

Paralelo

Declarativo

Lógico

Funcional

Processamento de Banco de Dados

51 of 65

Linguagens de Programação

  • Paradigma Imperativo:
    • Descreve como fazer algo. É o paradigma mais

antigo, baseado na arquitetura de Von Neumann.

    • Executa tarefas passo a passo, alterando o estado (variáveis) com declarações (operadores, loops, atribuições).
    • Usa diferentes tipos de fluxo de controle (seleção,

repetição, sequência).

  • Paradigma Declarativo:
    • Descreve o que precisa ser feito (o resultado).
    • Define a lógica, não o fluxo de controle.
    • Usa expressões.

52 of 65

Linguagens de Programação

53 of 65

Linguagens de Programação

  • Nesta disciplina, vamos focar no paradigma imperativo.

  • Este paradigma faz uso extensivo de fluxo de controle estruturado, utilizando construções de código bem definidas:

    • Sequência: São executadas as instruções em ordem sequencial

    • Seleção: Execução condicional de instruções (if, then, switch)

    • Repetição: Uma instrução é executada até que uma condição seja satisfeita (loops)

54 of 65

Linguagens de Programação

Blocos de Fluxo de Controle

Sequencia

Seleção

Repetição

declaração 1

declaração 2

declaraçãon

declaração 1

condição

declaração 2

false

true

condição

Declaração

true

false

Acredite ou não, é possível resolver quase tudo utilizando esses três blocos Eles

formamo núcleo da

programação imperativa.

55 of 65

Linguagens de Programação

  • Fl u xo d e Con t role -

S equência

Sequência

declaração 1

declaração 2

declaraçãon

program

{

print “Hello”;

print “World”;

}

Sequênciade

instruções

(ações, comandos)

Seleção

(Fluxo de Controle)

56 of 65

Linguagens de Programação

  • Fl u xo d e Con t role -

S eleção

> ”, max)

print(“O valor é

}

else {

program

{

Seleção (Condicional)

int max

=

10;

int val

=

read(“Valor”);

if (val

>

max) {

print(“O valor é <= ”, max)

}

}

Seleção

(Condicional)

Seleção

declaração 1

condição

declaração 2

false

true

57 of 65

Linguagens de Programação

  • Fl u xo d e Con t role -

Repetição

program

{

int i = 0;

int n = read(“Enter n”); while (i < n) { print(i);

i = i + 1;

}

}

Bloco de Repetição

Repetition

condição

declaração

true

false

58 of 65

Linguagens de Programação

program

{

function getBonus(int x, int min) { int bonusA = 10;

int bonusB = 15; if (x > min) {

return (x * bonusA);

} else {

return (x * bonusB);

};

}

int minVal = 100;

int val = read(”Enter amount”);

int res = getBonus(val, minVal);

print “Your bonus is ”, res

}

  • Resumidamente, os elementosbásicos deuma linguagem de

programação (paradigmaimperativo)são:

    • Variáveis:Peçasnomeadasdememória decomputadorque

contêminformações dediferentestiposdedados;

    • Declarações:Expressamalguma açãoa serrealizada;
    • Fluxode controle:Umamaneirade definiro fluxodo programa;
    • Entrada/Saída:Umamaneira desecomunicar com/paraos

usuários(porexemplo,via console);

    • Operadores:Umaoperação(matemática,lógica, etc.);
    • Sub-rotinas:Funçõesquepodemserinvocadas noprograma;

Uma linguagem de programação possuiuma sintaxe específica

paracodificar comela.

59 of 65

Linguagens de Programação

program

{

function getBonus(int x, int min) {

int bonusA = 10;

int bonusB = 15;

if (x > min) {

return (x * bonusA);

} else {

return (x * bonusB);

};

}

int minVal = 100;

int val = read(”Enter amount”);

int res = getBonus(val, minVal);

print “Your bonus is ”, res

}

Subrotinas

(função reusável)

* Operador

Variáveis

Saída

Vai mostrar no Console

Entrada

Vai ler do console

Variáveis

Fluxo de Controle

(Seleção)

Fluxo de Controle (Sequencia)

60 of 65

Linguagens de Programação

Como mencionamos, para esta disciplina, nos concentraremos no paradigma imperativo. As principais linguagens deste paradigma são a programação procedural e o paradigma orientado a objetos.

61 of 65

Linguagens de Programação

Programação Procedural

  • Foco principal nas funções em vez dos dados.
  • O programa é dividido em rotinas.
  • Os dados geralmente são globalmente

disponíveis/compartilhados.

Paradigma Orientado a Objetos

  • Foco principal nos dados.
  • O programa é dividido em objetos.
  • Cada objeto tem seus próprios dados.
  • Os dados do objeto podem ser ocultados.

62 of 65

Linguagens de Programação

program

{

let breed = “yorkie”;

let name = “niki”;

function bark(string breed,

string name) {

print(breed + “ “ +

name + “says woof!”);

}

bark(breed, name);

}

Procedural

Orientado a Objetos

program

{

class Dog {

str breed,

str name,

bark: function() { print($this.breed + “ “ +

$this.name +

“says woof!”);

};

}

let yorkie = new Dog {

breed: “yorkie”,

name: “niki”

};

yorkie.bark();

}

Classe com atributos e métodos

Objeto

Função

Dados

Compartilhados

Método do Objeto

63 of 65

Linguagens de Programação

Analogia e Reflexão

  • Suponha que você fale vários idiomas.
  • A ideia é que você quer se comunicar como está em sua mente.
  • Você pode expressar sua ideia em uma língua que você fala.
  • O mesmo princípio se aplica à programação e aos algoritmos:
  • Você pode expressar um algoritmo com diferentes linguagens de programação.
    • Programar é ser capaz de expressar sua ideia em uma linguagem de programação (por meio de codificação).

64 of 65

Linguagens de Programação

  • Codificar vs. Programar

Codificar

Programar

Codificaçãosignificaa traduçãoda linguagem natural em comandos de máquinapormeio de uma linguagem de codificação intermediária.

Programaçãosignificao processo de desenvolvimento de uma soluçãode softwarecompletamentefuncional.

Para codificar, um editorde texto seriasuficiente.

A programaçãorequerferramentas de análise, programasde modelagem, geradoresde códigoe estruturas de teste.

Um programadorrequerum conhecimentobásico de uma linguagem de programação, sua sintaxe e

palavras-chave.

Um programadordeveser um indivíduo habilidoso com experiênciasubstancial na criação de algoritmos, modelagem de problemas, processamentode dadose gerenciamentode projetos.

Ele segueumaabordagem de tentativae erro

e não precisade preparaçõesprévias.

A programaçãosegue uma abordagem

metódicae requeratençãoaos detalhes.

A codificaçãoresultaem uma soluçãosimples ou

em uma pequenaparte de um projeto.

A programação resulta em uma aplicaçãopronta

para uso completo.

65 of 65

Linguagens de Programação

  • No mesmo contexto, como iniciante, é mais importante primeiro aprender a programar do que aprender uma linguagem de programação:

    • Conhecer a sintaxe de uma linguagem específica é bom, mas não é programar (isso é codificação).

    • Programação é mais do que codificação, é como usar um computador para implementar uma solução (algoritmo) (uso correto de estrutura, dados, fluxo de controle, funções reutilizáveis, etc.)