Você está na página 1de 3

Paradigmas de linguagem de programação

Jonathan Coutinho Caio Gregoratto


Thierry Araujo

Aula 3 exercício Capitulo 4 questões 1, 2, 3, 4, 6, 8.

1. Algumas linguagens de programação permitem que variáveis sejam definidas sem um tipo.
Quais as vantagens e desvantagens de termos variáveis sem um tipo associado em uma
linguagem de programação ?

Resposta :

Flexibilidade ao permitir que as variáveis possam mudar a natureza dos dados durante o programa, menos
código redundante ao reduzir a necessidade de declarar e converter variáveis quando correr mudanças de
tipo e maior expressividade, que poderemos escrever algoritmos mais genéricos e reutilizáveis.

2. Listas com criação dinâmica de elementos podem ser implementas em Pascal pelos
apontadores. Considere que uma extensão de Pascal inclui o tipo lista:

var <nome-variavel> : list of <nome-tipo>

sobre o qual estão definidas operações de atribuição entre listas do mesmo tipo, construção
de listas (um elemento e uma lista podem conter elementos do tipo primitivo ou composto, e na
operação de atribuição, quando uma variável lsita é atribuída a outra, é criada apenas uma
referencia de forma que as duas variáveis acessam a mesma lista de valores.

type IntList = ^IntNode;

IntNode = record elem: Integer;

prox: IntList

end;

var ll : list of Integer;

lp: IntList;

Compare as listas ll e lp acima quanto a :

a) O conjunto de valores que elas podem representar;

Resposta:

A lista ll pode ter qualquer combinação de inteiros, inclusive uma lista vazia, a lista lp, é uma
lista encadeada simples de inteiros, ou seja, pode ter qualquer quantidade de elementos incluindo também
a possibilidade de ser uma lista vazia.

b) A forma de acesso aos elementos da lista( o primeiro, e um elemento qualquer da lista):

Resposta:

A lista ll vamos utilizar a sintaxe de indexação ou percorrer a lista usando um iterador.


Já a lista lp utilizamos o acesso ao primeiro elemento é feito através do campo ‘elem’ e pra alcançar
qualquer elemento usamos o campo ‘prox’ utilizando de loops ou recursão

c) O mecanismo de atribuição para cada um dos tipos das listas :

Resposta:

Ll : baseado em uma lista dinâmica .

Lp :lista encadeada de nós, baseado na criação e manipulação de nós e ponteiros.

3. Classifique as variáveis ll e lp do exemplo acima quanto ao armazenamento e acesso a


valores e quanto a sua existência.

Resposta:

Ll: é uma lista de valores inteiros, armazenados usandos índices e existe no momento em que é declarada
e permanece viva ate o termino da execução

Lp: é um ponteiro, armazenado desreferenciando o ponteiro usando os operadores, e existe no momento


que é declarada ate o termino do programa, porem o objeto que o ponteiro aponta pode ter sua existência
independente.

4. As Strings são representadas de diversas formas nas linguagens de programação atuais.


Para as linguagens de programação que você usa(Python), classifique as variáveis que
representam String quanto ao acesso e armazenamento, e explique as razoes da
classificação :

Resposta:

As strings em python são sequencias imutáveis de caracteres. É possível acessar em uma string usando
indexação, ou também por meio do fatiamento que permite acessar uma parte da string resultando na
subsequência, elas são imutáveis, que significa que o conteúdo não pode ser alterado após a criação, ou
seja, atribuir valor a uma variável que representa uma string na verdade vai ta criando uma nova string, e
atualizando a variável para fazer referencia a essa nova string.

6. Faça um paralelo sobre as vantagens e desvantagens de se ter liberação de memoria


ocupada pelas variáveis Heap de forma manual( realizada explicitamente pelo
programador, como em c++), ou de forma automática, como em java.

Resposta:

Forma manual :

Controle total ao liberar a memoria ocupada pelas variáveis, permitindo otimizar o uso da memoria de
acordo com as necessidades especificas do programa, prevenção de vazamentos de memoria, permitindo
que a memoria alocada seja sempre liberada quando não for mais necessária, e menor sobrecarga. As
desvantagens são que a complexidade e propensão a erros são maiores, todas alocações precisam ser
liberadas corretamente se não qualquer erro pode levar a vazamentos de memória ou acesso invalido a
memoria liberada
Forma automática :

Menor propensão a erros, maior segurança, a coleta de lixo automática vai ajudar a evitar vazamentos de
memoria, garantindo que a memoria alocada que não é mais utilizada seja liberada automaticamente, e
pela simplicidade, o gerenciamento automático vai ajudar com que a pessoa possa focar em outras partes
do código. Porem com essa automatização a sobrecarga de desempenho vai ser grande, já que o sistema
precisara constantemente monitorar as alocações de memoria e realizar a coleta de lixo quando
necessário.

7. Em geral, os tipos primitivos são armazenados em variáveis simples, enquanto tipos


compostos, em variáveis compostas. Determine, para as suas linguagens favoritas, os tipos
predefinidos e quais tipos de variáveis que são necessários para cada tipo predefinido :

Resposta:

Números inteiros (int), Números de ponto flutuante (float), Números complexos (complex), Sequências
imutáveis de caracteres (string), Listas (list), Tuplas (tuple), Dicionários (dictionary), Conjuntos (set),
Booleanos (bool).

Pra declarações de variáveis em Python pra cada tipo predefinido basta usar o “ var_” antes do tipo, por
exemplo :

var_int = 10 .

Referencias:

https://www.alura.com.br/artigos/o-que-sao-as-tipagens-estatica-e-dinamica-em-programacao

https://www.ime.usp.br/~pf/algoritmos/aulas/pont.html

https://www.inf.ufpr.br/roberto/ci067/10_aloc.html

Melo, A.C.V. D. (2003). Princípios de linguagem de programação. Editora Blucher.


https://app.minhabiblioteca.com.br/books/9788521214922

https://pythonacademy.com.br/blog/tipos-de-variaveis-no-
python#:~:text=Os%20tipos%20de%20dados%20padr%C3%A3o,Tipo%20Complexo%20(complex)

Você também pode gostar