Buscar

Questionário Atividade

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 8 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 8 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Qual é o perigo em potencial dos nomes sensíveis a capitalização?
As linguagens case-sensitive, no qual a as letras maiúsculas e minúsculas são diferenciais na capitalização, podem provocar algumas confusões seja ela na, elegibilidade e até mesmo na função do código. Por exemplo na linguagem JAVA que utiliza case-sensitive as variáveis primitivas são escritas com letra minúsculas: boolean, char, byte, short, long, float. Já as classes desse seus objetos já escritos em com inicial em maiúsculo: Boolean, Char, Byte, Short, Long, Float no uais diferenciam das variáveis primitiva por permitir um valor nulo (null).
Defina tempo de vida, escopo, escopo estático e escopo dinâmico.
As variáveis possuem uma dinâmica de como são registradas na memória. Essa forma possuem diferentes maneiras de serem registradas. 
O tempo de vida de uma variável é o tempo que ela permanece alocada na memória, ou seja o tempo duração da existência de uma variável na memória. Exemplo disso é a variável global que fica na memória do começo da aplicação até o fim da execução do programa. Em contrapartida as variável locais de uma função ou até mesmo no laço for ficam em execução somente dentro daquele bloco de execução sendo colocadas liberando o registro de memória.
Seguindo essa lógica de variável local podemos citar o escopo de uma variável que é a região do código onde essa variável pode ser referenciada ou utilizada. Em outras palavras, o escopo determina onde uma variável é válida. Por exemplo, uma variável declarada dentro de uma função só é acessível dentro dessa função e é inválida fora dela.
Por sua vez o escopo de sua variável pode ser definido de duas formas:
Escopo estático: é definido durante o tempo de compilação, visita o código de cima pra baixo referenciando a variável a sua posição no código fonte. 
Escopo dinâmico: é definido durante o tempo de execução. A variáveis locais podem ser vista em qualquer ponto do código(baixa confiabilidade) Ex: Perl, APL
Algumas linguagens de programação não têm tipos. Quais são as vantagens e desvantagens de não ter tipos em uma linguagem?
As linguagens de programação dinamicamente tipada (sem tipos) como o PYTHON oferece como vantagens maior flexibilidade e simplicidade, em contrapartida tem como desvantagem maior possibilidade de ser propensas a erros e podem ter um desempenho ligeiramente inferior devido à verificação de tipos em tempo de execução. Já a linguagens fortemente tipadas como o JAVA na criação das variáveis é obrigatório declarar o tipo da variável. Isso aumenta a confiabilidade e manutenção do código.
Defina vinculação estática e vinculação dinâmica.
A vinculação, tanto estática quanto dinâmica, é um conceito essencial na programação que se refere à associação entre símbolos (como funções e variáveis) e suas implementações correspondentes para que o programa funcione.
Vinculação Estática: Na vinculação estática, a associação entre um símbolo e sua implementação correspondente é feita durante o tempo de compilação.Ex: Java, C e C++
Vinculação Dinâmica: Na vinculação dinâmica, a associação entre um símbolo e sua implementação correspondente é adiada até o tempo de execução do programa. Ex: Python e JavaScript
Resumindo, na vinculação estática você planeja onde cada parte do seu programa vai ficar antes mesmo de começar a executá-lo, enquanto na vinculação dinâmica você só decide onde cada parte vai ficar quando o programa está sendo executado
5.Quais são as vantagens e desvantagens de declarações implícitas?
Nas linguagens com declarações implícitas, o tipo de variável não precisa ser explicitamente declarado. A linguagem inferirá automaticamente o tipo com base no valor atribuído à variável. Ex: C#
Vantagens:
Facilidade de Escrita: permite que escrevam menos código, economizando tempo e esforço.
OBS: prefiro escrever mais código do que comprometer a legibilidade e dificultar na manutenção não gosto desse tipo de recurso.
Desvantagens da Declaração Implícita:
Legibilidade Comprometida: Em projetos grandes, a legibilidade pode ser prejudicada. O código foca em como a tarefa é feita, não em o que deve ser feito.
Manutenibilidade Difícil: A falta de declarações explícitas dificulta a manutenção do código.
Erros Ocultos: A vinculação implícita pode impedir a detecção de erros de programação e digitação durante a compilação.
Por que utilizamos ponteiros?
Para melhorar a eficiência na manipulação de dados, os ponteiros são utilizados porque indicam diretamente o local da memória onde o dado está alocado. Essa abordagem é muito mais vantajosa do que replicar todo o dado em um novo bloco de memória. Assim, apenas a referência à estrutura é copiada, sem a necessidade de copiar a estrutura em si. Isso resulta em operações mais rápidas e economia de recursos, especialmente quando lidamos com grandes conjuntos de dados ou estruturas complexas.
Decida qual das seguintes formas de identificadores é mais legível e justifique sua decisão. sumOfSales, sum_of_sales ou SUMOFSALES.
Depende de onde você vai aplicar essa conversão.
Camel case (sumOfSales) é uma convenção de nomenclatura amplamente utilizada em programação para nomear variáveis, atributos de classe e parâmetros de métodos em linguagens como JavaScript, C#, Java.
Snak case (sum_of_sales) é utilizada para declarar variáveis e funções/métodos no em linguagens como Python.
Em SQL, a convenção de nomenclatura snake case não é tão comum quanto em linguagens de programação, mas ainda existem algumas boas práticas: Nomes de Tabelas de Junçao( Ex:tabela1_tabela2)
Caps Lock (SUMOFSALES) Destaque em Comentários e Notas. EX: //IMPORTANTE: não exagerar nesse recurso, pois vai tornar o comentário inelegível use com moderação.
Em resumo, todas as notações podem se usados desde que seja combinado e usado por todos no projeto de programação e mantenha esse padrão do começo ao fim não descaracterizando e dificultando a manutenção do código. Mas é de suma importância que mantenha as boas praticas a fim de estabelecer um padrão de desenvolvimento.
8) Considere o programa em C:
void fun(void) {
    int a, b, c; /* definição 1 */
    ...
    while (...) {
       int b, c, d; /*definição 2 */
        ... <-------------- ponto 1
        while (...) {
             int c, d, e; /* definição 3 */
             ... <------------- ponto 2
         }
         ... <-------------- ponto 3
    }
    ... <---------------- ponto 4
}
Para cada um dos quatro pontos marcados nessa função, liste cada variável visível, com o número da sentença de definição que a define.
Ponto 1: a, b, c
Ponto 2 a,b,c,d
Ponto 3 a,b,c
Ponto 4 a,b,c
Na maioria das linguagens de programação o uso SumOfSales
O que substitui ponteiros nas linguagens que não possuem esse tipo de dados?
Referências de objetos: parecem ponteiro na manipulação mas possuem algumas restrições na manipulação de lixo da memoria. Ex: Java e C#
Passagem por referência: Você modifica o valor não diretamente, mas sim, por meio de uma função. Ex: Python, Java, Ruby
Operações de cópia explícitas: são justamente a copia em bloco do dado para outro bloco de memoria, apesar de menos eficiente as vezes preciso usar essa estratégia para garantir a confiabilidade da manipulação de dados, evitando alguns erros no uso de ponteiros: Dificuldade de rastreamento, vazamentos de memória, corrupção de memória e legibilidade do código
Por que é útil para um programador ter alguma experiência no projeto de linguagens, mesmo que ele nunca projete uma linguagem de programação?
Melhor compreensão das linguagens existentes: Ao estudar e entender como as linguagens de programação são projetadas, um programador ganha uma compreensão mais profunda das linguagens que ele usa no dia a dia. Isso pode ajudá-lo a escrever código mais eficiente
Capacidade de escolher a melhor linguagem um programador pode escolher a melhor linguagem para uma tarefa específica. Cada linguagem tem suas próprias vantagens e desvantagens, e entender essas nuances pode ajudar um programador a tomar decisões informadas sobre qual linguagem usarem um determinado projeto.
Compreender a legibilidade de linguagens especificas: Ter conhecimento sobre como as linguagens são projetadas pode facilitar a compreensão da estrutura e da sintaxe da linguagem existente, bem como a implementação de extensões ou modificação da linguagem conforme necessário.
Em que linguagem a maior parte do UNIX é escrito?
A maior parte do sistema operacional UNIX é escrita na linguagem de programação C, com algumas partes em Assembly. Essa escolha foi feita para facilitar a portabilidade do sistema entre diferentes tipos de hardware.
 Qual é a desvantagem de ter recursos demais em uma linguagem?
Complexidade: Um grande número de recursos em uma linguagem pode aumentar significativamente sua complexidade. Isso pode tornar a linguagem mais difícil de aprender, entender e usar. Dificultando a manutenção do código.
Cite um exemplo da falta de ortogonalidade no projeto da linguagem C.
A ortogonalidade em um projeto de linguagem de programação refere-se à consistência e uniformidade das regras e conceitos da linguagem. Quanto mais ortogonal uma linguagem é, menos exceções ou casos especiais existem em suas regras. Isso significa que os mesmos princípios e construções podem ser aplicados de maneira consistente em diferentes contextos.
No caso específico do exemplo mencionado em C, temos dois tipos de dados estruturados: arrays e registros (ou structs). A falta de ortogonalidade pode ser observada na diferença de tratamento entre esses dois tipos de dados em certos contextos, como o retorno de funções. Registros podem ser retornados de funções, arrays não
O que são apelidos?
Apelidos" se referem a uma técnica utilizada para fornecer um nome alternativo para uma variável ou tipo de dados. Esses apelidos são criados usando a instrução typedef em linguagens como C. Pode-se definir um apelido para o tipo int com o nome inteiro. 
Ex: typedef int inteiro;
 inteiro numero = 10;
Por que a legibilidade é importante para a facilidade de escrita?
Compreensão rápida: Código legível pode ser compreendido mais rapidamente, reduzindo o tempo e os esforços necessários para escrever, entender, manter e colaborar em código.
Manutenção simplificada: Código legível é mais fácil de manter e fazer ajuste futuros
.Escolha uma linguagem de programação e cite uma construção que você mudaria, por qual e por quê?
Eu mudaria a operações ternarias por operadores condicionais (if e else). Pois melhora a legibilidade e manutenção do código.
Operações Ternária:
String mensagem = (numero % 2 == 0) ? "O número é par" : "O número é ímpar";
Com operadores condicionais:
if (numero % 2 == 0) {
 mensagem = "O número é par";
 } else {
 mensagem = "O número é ímpar";
 }
Tempo de vida de variáveis:
1. Estáticas:
· Tempo de vida: Durante toda a execução do programa. Escopo Global
· Alocação: Memória estática antes da execução.
· Vantagens: Eficiência, acesso direto.
· Desvantagens: Falta de flexibilidade, memória não reutilizável.
· Exemplos: Variáveis globais, variáveis static em classes.
2. Dinâmicas de monte explícitas:
· Tempo de vida: Definido pelo programador.
· Alocação: Alocada explicitamente pelo programador usando new.
· Desalocação: Desalocada explicitamente pelo programador usando null.
· Vantagens: Flexibilidade, controle preciso da memória.
· Desvantagens: Complexidade, risco de vazamentos de memória.
· Exemplos: Objetos criados com new, arrays.
· problema do gerenciamento do monte (heap) – ponteiros - apelidos (aliases).
3. Dinâmicas de monte implícitas:
· Tempo de vida: Durante a execução do bloco de código onde são declaradas.. Escopo em bloco
· Alocação: Automática pelo compilador.
· Desalocação: Automática pelo coletor de lixo quando não há mais referências.
· Vantagens: Facilidade de uso, gerenciamento automático de memória.
· Desvantagens: Menor controle, sobrecarga de memória.
· Exemplos: Variáveis locais em métodos, variáveis var.
4. Dinâmicas de pilha:
· Tempo de vida: LIFO (último a entrar, primeiro a sair).
· Alocação: Automática pelo compilador na pilha.
· Desalocação: Automática quando a função termina.
· Vantagens: Eficiência, gerenciamento automático de memória.
· Desvantagens: Escopo limitado, não reutilizável.
· Exemplos: Parâmetros de métodos, variáveis locais em funções recursivas.
Quanto ao escopo (visibilidade):
Estáticas: escopo de uma variável pode ser determinado estaticamente –
ou seja, antes da execução. Através da declaração.
Blocos: novos escopos estáticos sejam definidos no meio do código
executável, por meio de blocos.
Global: visível em todo o código subsequente a sua declaração. Exemplo:
extern int sum; em C.
Dinâmico: baseado na sequência de chamadas de subprogramas, não
em seu relacionamento espacial uns com os outros. Logo, o escopo pode
ser determinado apenas em tempo de execução.

Continue navegando

Outros materiais