Escolar Documentos
Profissional Documentos
Cultura Documentos
programando
Guia de programação para o ensino médio
Por todas essas razões, o Sudoku pode ser uma ferramenta útil e
divertida para ajudar a desenvolver habilidades importantes em
programação.
Nome: ______________________________________________
Turma: _______________________ Data:__________________
Resultado do Sudoku
Conceitos de algoritmo
O que é um algoritmo?
Um algoritmo é como uma receita de bolo: uma sequência de passos que te ajudam
a chegar a um resultado específico. Mas em vez de bolo, um algoritmo é usado para
resolver problemas ou realizar tarefas.
Esses passos são lógicos, precisos e finitos, o que significa que eles são organizados,
claros e param em algum momento. Isso ajuda a garantir que o algoritmo sempre
chegue a um resultado esperado.
Por exemplo, um algoritmo para fazer uma xícara de chá pode incluir as seguintes
etapas:
Exemplos de algoritmo
Vamos ver um exemplo de algoritmo para desenhar um círculo:
Estrutura do Programa
A próxima coisa que você precisa é de uma estrutura básica para o seu programa.
Isso pode variar dependendo da linguagem de programação que você está usando,
mas geralmente inclui a definição de funções e variáveis, bem como a estrutura geral
do programa.
Por exemplo, em Java, um programa geralmente começa com um método principal
chamado "main", que é o ponto de entrada para o programa. Você também pode
precisar definir outras classes e métodos para lidar com funções específicas do
programa.
Compilação e Execução
Depois de escrever seu programa, você precisa compilá-lo para transformá-lo em
código executável que o computador pode entender. A compilação é o processo de
transformar o código-fonte em um arquivo executável. A maioria das linguagens de
programação inclui um compilador que você pode usar para compilar seu programa.
Uma vez que seu
programa tenha sido compilado, você pode executá-lo para ver se ele funciona como
esperado. Você pode fazer isso chamando o arquivo executável a partir da linha de
comando ou usando uma ferramenta de execução integrada no seu IDE.
Criar um programa de computador pode parecer assustador, mas na verdade é um
processo que qualquer pessoa pode aprender com dedicação e prática. Com uma
linguagem de programação, um ambiente de desenvolvimento integrado, uma
estrutura básica e o conhecimento sobre compilação e execução, você pode começar
a criar seus próprios programas. Esperamos que esta apostila tenha sido útil para
ajudá-lo a entender melhor o processo de criação de um programa de computador.
• Código fonte
Código fonte é o conjunto de instruções que um programador escreve em
uma linguagem de programação, com o objetivo de criar um programa de
computador. Essas instruções são escritas em uma linguagem que as pessoas
podem entender, como C++, Python, Java, entre outras, e precisam ser
traduzidas para uma linguagem que o computador possa entender e
executar.
O código fonte é como a receita de um bolo, que contém todas as instruções
detalhadas que o confeiteiro deve seguir para produzir o bolo. Da mesma
forma, o código fonte contém todas as instruções que o computador precisa
seguir para executar o programa.
Os programadores escrevem o código fonte usando editores de texto ou IDEs
(Integrated Development Environment), que são ferramentas que ajudam a
escrever e organizar o código. Uma vez que o código fonte é escrito, ele
precisa ser compilado ou interpretado para ser executado pelo computador.
O código fonte é muito importante, pois é a base para a criação de programas
e sistemas de software. Ele permite que os programadores criem soluções
personalizadas para diferentes problemas e necessidades, desde aplicativos
de celular até sistemas operacionais e softwares empresariais.
Em resumo, o código fonte é o conjunto de instruções escritas em uma
linguagem de programação, que precisam ser traduzidas para uma
linguagem que o computador possa entender e executar. Ele é a base para a
criação de programas e sistemas de software que são usados em diferentes
áreas da tecnologia e do mundo dos negócios.
Exemplos:
• Código Objeto:
Código objeto é o resultado da compilação do código fonte em linguagem de
máquina ou em um código de baixo nível, que pode ser executado
diretamente pelo computador. Em outras palavras, é o código binário gerado
pelo compilador a partir do código fonte.
Java
C++
• Código Executável
Um código executável é aquele que pode ser executado diretamente pelo
computador, sem a necessidade de ser compilado ou interpretado
novamente. Ele é gerado a partir do código objeto, passando por um processo
de ligação com bibliotecas externas e ajustes finais. Abaixo estão alguns
exemplos de códigos executáveis em diferentes linguagens de programação:
Interpretação
A interpretação é um processo que ocorre em tempo real enquanto o programa é
executado. Em vez de compilar o código fonte em um arquivo executável, o
interpretador lê o código fonte linha por linha e executa cada instrução conforme
ela é encontrada. Isso significa que, em vez de criar um arquivo executável, o
programa é executado diretamente pelo interpretador. A interpretação é usada em
linguagens de programação como Python e JavaScript.
Criando seu próprio algoritmo
Agora que você entende o que é um algoritmo, vamos criar juntos! Faça um
algoritmo para fazer um sanduíche:
Exemplo:
Ingredientes:
• 3 ovos
• Suco de 2 laranjas
• 1 xícara (chá) de óleo
• 2 xícaras (chá) de açúcar
• 3 xícaras (chá) de farinha de trigo
• 1 colher (sopa) de fermento em pó
• 1 colher (sopa) de margarina
( ) Ligue o forno.
homogênea.
• Faça uma lista de três tarefas que você faz todos os dias e escreva um
algoritmo para cada uma delas.
• Faça uma lista de duas receitas diferentes e escreva o algoritmo para cada
uma delas.
Representações visuais de Algoritmos
No lugar de palavras, podemos utilizar símbolos para representar nossos
algoritmos.
Observe o algoritmo para cálculo da média de duas notas sendo representado por
meio de diagramas na imagem abaixo:
Diagramas de fluxo
Os diagramas de fluxo são uma maneira comum de representar algoritmos
visualmente. Ele usa símbolos simples, como círculos, quadrados e setas, para
representar diferentes partes do sistema e como elas se conectam.
No fluxograma é criado o mapa visual onde podemos mostrar as diversas etapas de
um sistema, com as coordenadas para seu desenvolvimento, tornando o conjunto
das etapas um trabalho padronizado, organizado, que possa ser entendido e
utilizado por qualquer pessoa
Entre os símbolos mais conhecidos do fluxograma, podemos destacar:
Início e fim: geralmente o símbolo
usado no início do fluxograma é
um retângulo com bordas
arredondadas, estabelecendo o
começo e o término do fluxo
apresentado. Nos retângulos
também estão inseridas as ações
necessárias para o processo;
Setas: usadas para indicar o
sentido do fluxo das etapas;
Losangos: os losangos
representam as alternativas ou
questões criadas pelas etapas,
devendo sempre apresentar duas
saídas para as respostas positivas
ou negativas;
Aquecimento
Observe a representação abaixo e siga os passos determinados:
4. Possibilidade de resposta
Português estruturado (Portugol)
Exemplo #1: Escrever um algoritmo para calcular a soma de dois número inteiros
quaisquer.
Em linguagem comum pode ficar assim:
Em portugol, temos:
1. Comando de atribuição:
O comando de atribuição é usado para atribuir um valor a uma variável.
Por exemplo, se você quiser atribuir o valor 10 à variável "x", o código seria:
1.1 O que são variáveis?
Tipos Reais
São os dados numéricos constituídos pelo conjunto dos números naturais, inteiros
e racionais, ou seja, números negativos, positivos, fracionários e com casas decimais.
Por exemplo: 12; -1245; 45,98; 1/8.
No Brasil, separamos a parte inteira da parte decimal de um número utilizando a
vírgula (,). Na construção de algoritmos, a notação a ser usada é a inglesa, que utiliza
o ponto (.). Então, por exemplo, 1234,56 ficaria 1234.56.
Exemplos:
o A área de um terreno é igual a 123,50 m2.
o O saldo da conta é R$ -258,69.
o A temperatura ambiente é de -20°C.
Tipos Literais
São constituídos por sequências de letras, números e símbolos especiais,
incluindo os espaços em branco.
O tipo literal deve ser definido entre aspas duplas, ” “.
Outras denominações do tipo de dado literal encontradas nos livros técnicos são:
cadeia, string, alfanumérico.
Exemplos:
•
Há outros tipos de dados, porém, os que serão tratados aqui são suficientes para um
programador iniciante, visto que as habilidades que devem ser desenvolvidas são o
raciocínio lógico e o domínio das estruturas básicas utilizadas na programação de
computadores.
Não se preocupe, pois, à medida que você avança nos seus estudos e vida
profissional, ficará mais simples assimilar novos tipos e estruturas de dados.
É importante destacar que, em Portugol, é necessário declarar o tipo de dado de uma
variável antes de utilizá-la. Por exemplo, se você quiser declarar uma variável "x" do
tipo inteiro, o código seria:
E se você quiser declarar uma variável "y" do tipo real, o código seria:
2. Comando de entrada:
O comando de entrada é usado para receber um valor digitado pelo usuário. Por
exemplo, se você quiser receber um valor para a variável "x", o código seria:
3. Comando de saída:
O comando de saída é usado para exibir um valor na tela. Por exemplo, se você
quiser exibir o valor da variável "x" na tela, o código seria:
4. Comando condicional:
O comando condicional é usado para executar um bloco de código somente se uma
determinada condição for verdadeira. Por exemplo, se você quiser executar um
bloco de código somente se o valor da variável "x" for maior que 10, o código seria:
Exemplo:
5. Comando de repetição
Suponha que tenhamos que calcular a média de três alunos. O algoritmo para
calcular a média individual nós já temos, bastando repeti-lo, nesse caso, 3 vezes.
Teremos, portanto, o seguinte algoritmo:
Ao executar o algoritmo acima, atribuímos valores quaisquer para as notas e
obtivemos a seguinte saída:
Operadores
Na construção de nossos algoritmos, utilizaremos com frequência
operadores para realizar o trabalho de entrada, processamento e saída de
dados.
Um operador, em termos gerais, simboliza uma operação efetuada sobre
variáveis e constantes, executando cálculos e manipulação sobre os dados.
As operações realizadas pelo computador são as mesmas encontradas na
matemática. A ressalva que fazemos é quanto aos operadores, que diferem
entre sim em algumas operações, como mostrado nas tabelas abaixo.
Os operadores são classificados em três tipos:
• Operadores Aritméticos;
• Operadores Relacionais;
• Operadores Lógicos.
Operadores Aritméticos
Observações:
•
▪ Símbolos diferentes dos da tabela acima não são aceitos na construção
de nossos algoritmos;
▪ Alguns símbolos matemáticos não existem nos teclados atuais, daí a
necessidade de utilização de outro símbolos, como os sinais de divisão
e multiplicação, por exemplo;
▪ As expressões matemáticas devem ser escritas em linha (in line).
Operadores Relacionais
Operadores Lógicos
Operador OU(OR)
Operador NÃO-OU(NOR)
Operador NÃO-OU-EXCLUSIVO(XNOR)
1 - Faça um programa que leia dois números inteiros e exiba a soma entre
eles.
Resposta:
Resposta
3 - Faça um programa que leia dois números inteiros e exiba o resultado da
subtração entre eles.
Resposta
2. Operadores Lógicos:
3. Operadores de Comparação:
Você precisa realizar o login na sua conta, e fará com que cada aluno resolva uma linha de
código no codemonkey, projetando isso para toda a sala.
Atividades
1.
2.
3.
4.
6.
7.
Estruturas primitivas
Variáveis:
Variáveis são espaços reservados na memória do computador para armazenar
valores que serão usados pelo programa. Eles podem armazenar diferentes tipos de
dados, como números inteiros, números decimais, caracteres e booleanos. As
variáveis são definidas pelo programador e podem ser alteradas durante a execução
do programa.
Exemplo de declaração de variáveis em JavaScript:
Constantes:
As constantes são valores fixos que não podem ser alterados durante a execução do
programa. Elas são usadas para armazenar valores que não devem ser alterados,
como o valor de pi (3,14) ou o número de dias em uma semana (7).
Exemplo de declaração de constantes em JavaScript:
Tipos de dados:
Os tipos de dados definem o tipo de valor que uma variável pode armazenar. Eles
podem ser divididos em dois tipos: tipos primitivos e tipos definidos pelo usuário.
Os tipos primitivos incluem inteiros, números decimais, caracteres e booleanos. Os
tipos definidos pelo usuário são criados pelo programador e podem ser usados
para armazenar tipos de dados complexos, como listas e estruturas.
Operadores:
Os operadores são usados para realizar operações em variáveis e constantes.
Existem diferentes tipos de operadores, como operadores aritméticos (para
realizar operações matemáticas), operadores de atribuição (para atribuir valores a
variáveis) e operadores lógicos (para realizar operações booleanas).
13. O que acontece quando você atribui um novo valor a uma variável?
a) O valor anterior é perdido
b) O valor anterior é mantido
c) O valor anterior é duplicado
d) Não é possível atribuir um novo valor a uma variável.
Respostas
Tipos de dados
Resposta: a) Inteiro
Resposta: b) Caractere
Resposta: d) Lista
Resposta: d) Booleano
Constantes
Resposta: a) 3.14
Resposta: a) 7
Resposta: b) Não
Resposta: b) Armazenar valores que não podem ser alterados
Variáveis
Resposta: a) 0
Resposta: d) Não é possível determinar (sem informação na pergunta)
Resposta: d) Não é possível determinar (sem informação na pergunta)
Resposta: a) Armazenar valores que podem ser alterados
Resposta: a) O valor anterior é perdido
Atividades
A declaração de uma variável consiste em informar o tipo de dado que ela irá
armazenar e seu nome. Por exemplo, para declarar uma variável numérica que irá
armazenar a idade de uma pessoa, utilizamos a seguinte sintaxe em algumas
linguagens de programação:
Vetores
Um vetor é uma variável composta unidimensional formada por uma sequência de
variáveis, todas do mesmo tipo, com o mesmo nome e alocadas sequencialmente
na memória. Uma vez que as variáveis têm o mesmo nome, o que as distingue é um
índice, que referência sua localização dentro da estrutura.
Declaração de um vetor
A declaração de um vetor é feita da seguinte maneira:
Onde:
o tipo é o tipo de dado que será armazenado no vetor;
o tamanho é quantidade de variáveis que vão compor o vetor;
o nome é o nome da variável do tipo vetor
Dessa forma temos, por exemplo:
Declaração em pseudocódigo
Declaração em C
Em C
Em C, as posições de um vetor começam em 0 (zero) e vão até o tamanho do vetor
menos uma unidade.
Em C
Podemos fazer de duas maneiras:
A primeira é simplesmente atribuir valores ao vetor na posição desejada, como por
exemplo:
Em C
Utilizamos a estrutura de repetição FOR, com isso o vetor será percorrido e, a cada
iteração, o comando PRINTF mostrará o valor do vetor correspondente à posição
do contador.
Copiar vetores
Tampouco é possível copiar o conteúdo de um vetor para um outro, mesmo que os
dois sejam de mesmo tamanho e os elementos sejam de mesmo tipo.
Solução em C
Exemplo 2:
Faça um programa que execute as seguintes etapas:
o Digite 10 números inteiros e os armazene em um vetor;
o Verifique qual desses números é maior;
o Imprima os elementos do vetor e em seguida o seu maior elemento.
Solução em pseudocódigo
Matrizes
Uma matriz é uma coleção de variáveis de mesmo tipo, com mesmo nome e
alocadas sequencialmente na memória. Uma vez tendo o mesmo nome, o que as
distingue são índices que referenciam sua localização dentro da estrutura.
As matrizes podem ser tanto unidimensionais (vetores) como multidimensionais.
Como já trabalhamos com vetores, daremos atenção as matrizes com duas ou mais
dimensões.
Matriz bidimensional
Declaração
A declaração de uma matriz bidimensional é feita da seguinte maneira:
Onde:
o tipo é o tipo de dado que será armazenado na matriz;
o linha e coluna correspondem a quantidade de linhas e colunas da matriz;
o nome é o nome da variável do tipo matriz.
Dessa forma temos, por exemplo:
Declaração em pseudocódigo
Declaração em C
Ema ambos os casos declaramos uma matriz de números inteiros (G) de duas
linhas e duas colunas, e uma matriz de números reais (num) de três linhas e 4
colunas. Também foram declaradas duas matrizes de caracteres(nome): uma de
vinte linhas e dez colunas em C e outra de dez linhas e vinte colunas em
pseudocódigo.
Na declaração de uma matriz podemos omitir seu tamanho , desde que quando seja
feita a declaração, já sejam atribuídos seus valores, como no exemplo abaixo:
Em C
Em C as posições da linha e coluna de uma matriz começam em 0 (zero) e vão até o
tamanho definido na declaração menos 1(um).
Atribuindo valores a matriz
Para atribuir valores a uma matriz procedemos da seguinte maneira:
Em pseudocódigo
Utilizamos o comando de atribuição como por exemplo:
Em C
Podemos fazer de duas maneiras:
A primeira é simplesmente atribuir valores à matriz na posição desejada, como por
exemplo:
Em C
Utilizamos a estrutura de repetição FOR duas vezes, a primeira vez utilizaremos
para percorrer as linhas e a segunda as colunas (não importa se inverter). Com isso
a matriz será percorrida e a cada iteração o comando PRINTF solicitará a entrada
do dado via teclado.
Em pseudocódigo
Utilizamos a estrutura de repetição PARA duas vezes, a primeira vez utilizaremos
para percorrer as linhas e a segunda as colunas (não importa se inverter). Com isso
a matriz será percorrida e a cada iteração o comando ESCREVA mostrará o valor da
matriz correspondente à posição dos contadores.
Em C
Utilizamos a estrutura de repetição FOR duas vezes, a primeira vez utilizaremos
para percorrer as linhas e a segunda as colunas (não importa se inverter). Com isso
a matriz será percorrida e a cada iteração o comando PRINTF mostrará o valor da
matriz correspondente à posição dos contadores.
Solução em C
#include < stdio.h >
int main(){
/*declaração das variáveis*/
int matriz[3][2];
int indice1, indice2, maior;
printf("Escreva 6 numeros inteiros: \n");
/*utilização do for para percorrer as linhas da matriz do índice 0 até 2 */
for(indice1 = 0; indice1 < 3; indice1++){
/*utilização do for para percorrer as colunas da matriz do índice 0 até 1 */
for(indice2 = 0; indice2 < 2; indice2++)
/*a posição correspondente do vetor recebe o valor digitado*/
scanf("%d", &matriz[indice1][indice2] );
}
maior = 0;
/*busca pela matriz pelo maior número, a váriavel maior armazenará o maior
elemento*/
for(indice1 = 0; indice1 < 3; indice1++){
for(indice2 = 0; indice2 < 2; indice2++){
if(maior < matriz[indice1][indice2])
maior = matriz[indice1][indice2];
}
}
printf("Minha matriz:\n");
/*impressão da matriz*/
for(indice1 = 0; indice1 < 3; indice1++){
printf("\n");
for(indice2 = 0; indice2 < 2; indice2++){
printf("\t %d ", matriz[indice1][indice2]);
}
}
/*impressão do maior número*/
printf("Maior numero: %d ", maior);
return 0;
}
Matrizes multidimensionais
Em C é possível utilizar matrizes de três ou mais dimensões, porém isso não
acontece com frequância, pois requer uma grande quantidade de memória e os
acessos aos seus elementos são mais lentos. Por esses motivos essas matrizes não
serão abordados com detalhes.
Declaração
A declaração de uma matriz multidiomensional é feita da seguinte maneira:
Onde:
o tipo é o tipo de dado que será armazenado na matriz;
o E os tamanhos correspondem ao tamanho de cada dimensão da matriz;
Exemplo em C de carregamento e impressão utilizando uma matriz com 3
dimensões:
Dinâmica
Para ajudar os alunos a entenderem melhor o conceito de variável, podemos realizar
a seguinte dinâmica em sala de aula:
Materiais necessários:
• Folhas de papel em branco
• Canetas
• Instruções:
Distribua uma folha de papel em branco para cada aluno e peça para que eles
escrevam uma frase ou uma palavra aleatória.
Em seguida, peça para que troquem suas folhas com o colega ao lado.
Cada aluno deve ler a frase ou palavra que está na folha que recebeu e escrever uma
nova frase ou palavra que tenha relação com a anterior.
Peça para que os alunos continuem passando as folhas até que todos tenham escrito
em todas as folhas.
Ao final, peça para que cada aluno leia em voz alta a frase ou palavra que está em
sua folha.
Essa dinâmica mostra como uma informação pode ser modificada ao longo do
tempo, assim como as variáveis em programação.
Atividades
As entradas e saídas de um algoritmo são fundamentais para que ele possa ser útil.
Sem elas, o algoritmo não poderá receber os dados necessários para processamento
e não poderá fornecer os resultados esperados. Nesta apostila, vamos estudar as
teorias de entradas e saídas em algoritmos e estrutura de dados, além de uma
dinâmica para fixação do conteúdo e atividades com resposta.
1. Entrada de dados: A entrada de dados é a maneira como o algoritmo recebe
as informações que serão processadas. Existem diferentes tipos de entrada
de dados, como:
a) Entrada manual: o usuário digita os dados no teclado;
b) Entrada automática: o algoritmo busca os dados em um
arquivo, banco de dados ou rede;
c) Entrada de dados aleatórios: o algoritmo gera os dados
aleatoriamente.
2. Saída de dados: A saída de dados é a maneira como o algoritmo apresenta
os resultados obtidos após o processamento das informações. Existem
diferentes tipos de saída de dados, como:
a) Saída em tela: o resultado é exibido na tela do computador;
b) Saída em arquivo: o resultado é salvo em um arquivo;
c) Saída em impressora: o resultado é impresso em papel.
Dinâmica
1- Resposta: 19
2- Resposta: 20
3- Resposta: 6
4- Resposta 3
Controle de Fluxo
Neste exemplo, o programa verifica se o número é maior que 10. Se for, ele exibe
uma mensagem informando que o número é maior que 10. Caso contrário, exibe
uma mensagem informando que o número é menor ou igual a 10.
Atividade 1
Considere o seguinte pseudocódigo:
Atividade 2
Considere o seguinte pseudocódigo:
Atividade 3
Considere o seguinte pseudocódigo:
Atividade 5
Considere o seguinte pseudocódigo:
Atividade 1
a) 8
b) 3
Atividade 2
a) 12
b) 2
Atividade 3
a) O número é par
b) O número é ímpar
Atividade 4
a) 10
b) 35
Atividade 5
a) 120
b) 1
Procedimentos e funções
Procedimentos
Procedimentos são blocos de código que realizam uma tarefa específica, sem
retornar um valor. Eles são usados para executar ações que precisam ser executadas
várias vezes em um programa.
Um procedimento é definido usando a seguinte sintaxe:
Esta função recebe dois números como parâmetros e retorna a soma desses
números como um inteiro.
Podemos chamar a função de várias partes do programa:
Este código chama a função Somar para somar dois números e armazena o
resultado na variável resultado. Em seguida, exibe uma mensagem na tela com o
resultado.
Passagem de parâmetros
Escopo de variáveis
O escopo de uma variável é a região do programa onde a variável pode ser usada.
Em geral, as variáveis definidas dentro de um procedimento ou função só podem ser
usadas dentro desse procedimento ou função.
Por exemplo, considere o seguinte procedimento:
Exemplo completo:
Aqui está um exemplo completo que usa procedimentos e funções para calcular a
média de uma lista de números:
Este código define a função CalcularMedia que calcula a média de uma lista de
números e o procedimento ExibirResultado que exibe o resultado na tela. No
código principal, uma lista é criada e a função CalcularMedia é chamada para
calcular a média. O resultado é passado para o procedimento ExibirResultado, que
exibe o resultado na tela.
Atividades com resposta
2. Escreva uma função chamada Fatorial que recebe um número inteiro como
parâmetro e retorna o fatorial desse número.
Declaração de apontadores
Para declarar um apontador, usamos o operador *. Por exemplo, para
declarar um apontador para um inteiro, usamos a seguinte sintaxe:
Operadores de apontador
Existem dois operadores importantes usados com apontadores: o operador
de endereço & e o operador de desreferência *.
Por exemplo, podemos escrever uma função que troca o valor de duas
variáveis:
Atividades com respostas
Atividade 1:
Escreva um pseudocódigo que declare uma variável inteira e um ponteiro
para essa variável. Solicite ao usuário um valor inteiro e atribua esse valor à
variável. Em seguida, utilize o ponteiro para mostrar na tela o valor
armazenado na variável.
Resposta:
Atividade 2:
Escreva um pseudocódigo que declare um ponteiro para um vetor de inteiros
e aloque dinamicamente espaço para esse vetor com tamanho informado
pelo usuário. Em seguida, preencha o vetor com valores informados pelo
usuário e imprima na tela a soma dos valores.
Resposta:
Atividade 3:
Escreva um pseudocódigo que declare uma estrutura para armazenar
informações de alunos (nome, idade e nota). Em seguida, declare um
ponteiro para essa estrutura e aloque dinamicamente espaço para
armazenar informações de um aluno. Preencha as informações do aluno com
valores informados pelo usuário e imprima na tela essas informações.
Resposta:
Alocação estática e dinâmica de memória
Nesse exemplo, o operador new é usado para alocar espaço para armazenar 10
inteiros. Esse espaço pode ser alterado durante a execução do programa, usando o
operador delete[] para liberar a memória alocada.
Nesse exemplo, a memória para armazenar um array com espaço para 10 inteiros é
alocada quando o array é criado. Esse espaço não pode ser alterado durante a
execução do programa.
Atividades com resposta
Exercício 1:
Declare um array de inteiros com espaço para 5 elementos usando alocação estática
de memória.
Resposta:
Exercício 2:
Declare um array de caracteres com espaço para 20 elementos usando alocação
estática de memória.
Resposta:
Exercício 3:
Declare um ponteiro para caracteres e aloque espaço para 50 elementos usando
alocação dinâmica de memória.
Resposta:
Tipos abstratos de dados
Neste modulo, iremos estudar os conceitos básicos dos TADs, bem como alguns
exemplos comuns de TADs, suas operações básicas e complexidade computacional.
Também veremos como implementar esses TADs em pseudocódigo ou em uma
linguagem de programação. Ao final, esperamos que você esteja preparado para
aplicar esses conhecimentos na solução de problemas computacionais mais
complexos.
Diferença entre Tipo Abstrato e Tipo de Dado Primitivo
É nesse momento que os Tipos Abstratos de Dados (TADs) entram em cena. Os TADs
são tipos de dados que definem um conjunto de valores e as operações que podem
ser realizadas sobre esses valores. Por exemplo, um TAD de pilha pode definir as
operações de empilhar, desempilhar e verificar se está vazia.
Outra diferença importante é que os TADs possuem uma interface bem definida, que
especifica as operações permitidas e suas semânticas, enquanto os tipos primitivos
geralmente possuem uma única operação básica (por exemplo, a adição de dois
inteiros).
Pilhas: são estruturas que permitem armazenar elementos em uma ordem LIFO
(Last In, First Out), ou seja, o último elemento a entrar é o primeiro a sair. As
operações permitidas são empilhar (adicionar um elemento no topo da pilha) e
desempilhar (remover o elemento do topo da pilha). As pilhas são úteis para
implementar operações como desfazer (undo) e refazer (redo).
Filas: são estruturas que permitem armazenar elementos em uma ordem FIFO
(First In, First Out), ou seja, o primeiro elemento a entrar é o primeiro a sair. As
operações permitidas são enfileirar (adicionar um elemento no final da fila) e
desenfileirar (remover o elemento do início da fila). As filas são úteis para
implementar operações como simulações de eventos discretos e processamento de
dados em ordem de chegada.
Vetores e matrizes, por exemplo, possuem tamanho fixo e são limitados pela
quantidade de memória disponível no computador. Se o número de elementos a
serem armazenados ultrapassar a capacidade da estrutura, será necessário alocar
mais memória ou utilizar outra estrutura.
Listas encadeadas, pilhas e filas, por outro lado, permitem a inserção e remoção de
elementos de forma dinâmica, mas podem apresentar baixo desempenho em
operações que requerem acesso aleatório aos elementos, pois a busca de um
elemento específico pode exigir uma varredura completa da estrutura.
Os TADs são estruturas de dados que permitem definir um novo tipo de dado a partir
da combinação de outros tipos. Eles são abstratos porque se preocupam apenas com
o que é feito com os dados, sem se preocupar com a sua representação interna.
Uma matriz é uma estrutura de dados semelhante ao vetor, mas com duas ou mais
dimensões. As matrizes são usadas para armazenar informações em uma tabela com
linhas e colunas, onde cada célula da tabela pode ser acessada através de um par de
índices. Assim como os vetores, as matrizes possuem tamanho fixo.
Esses são apenas alguns exemplos de TADs comuns em programação. Cada TAD
possui suas próprias operações e funcionalidades específicas, e a escolha do TAD
adequado dependerá das necessidades do problema em questão. Além desses,
existem muitos outros tipos abstratos de dados, como árvores, grafos e mapas, que
podem ser úteis em diferentes contextos.
1. Conjunto:
3. Árvore:
• Definição: uma pilha é uma estrutura de dados linear que permite acesso
apenas ao elemento adicionado por último (último a entrar, primeiro a sair).
• Operações básicas:
5. Fila:
• Definição: uma fila é uma estrutura de dados linear que permite acesso
apenas ao elemento adicionado primeiro (primeiro a entrar, primeiro a sair).
• Operações básicas:
1. O que é um TAD?
1. Pilha
2. Fila
3. Conjunto
4. O que é um Conjunto?
Resposta: Uma Lista é uma estrutura de dados que representa uma coleção de
elementos com ordem e com possibilidade de repetição.
Dinâmica:
"Explorando Estruturas de Dados Lineares"
Instruções:
Listas e Filas
As estruturas de dados são uma parte importante da ciência da computação, e são
usadas para organizar e armazenar informações em um computador. As estruturas
de dados lineares, como listas e filas, são particularmente úteis porque elas
armazenam informações em uma ordem específica. Nesta apostila, vamos
aprender sobre as estruturas de dados lineares chamadas de listas e filas, e como
elas funcionam.
Listas
Uma lista é uma estrutura de dados linear que armazena informações em uma
sequência ordenada. Cada elemento da lista tem um índice que indica sua posição
na sequência. Listas podem ser usadas para armazenar informações como nomes,
números, datas e muito mais. A principal vantagem de uma lista é que você pode
inserir ou excluir elementos de qualquer posição na sequência. Vamos ver como isso
funciona.
[2, 4, 6, 8, 10]
Podemos acessar qualquer elemento da lista usando seu índice. Por exemplo, para
acessar o terceiro elemento (o número 6), usamos o índice 2:
lista[2] = 6
lista.insert(3, 12)
Isso adicionará o número 12 na terceira posição da lista (a posição 3 é entre o 8 e o
10).
Filas
Uma fila é uma estrutura de dados linear que armazena informações em uma ordem
específica, mas onde a remoção dos elementos é feita de acordo com a ordem em
que foram adicionados. Ou seja, o primeiro elemento adicionado é o primeiro a ser
removido. Uma fila é semelhante a uma fila de pessoas esperando em um banco,
onde a pessoa que chega primeiro é a primeira a ser atendida.
Vamos supor que temos uma fila de pessoas esperando em um caixa eletrônico.
Quando alguém chega à fila, ela é adicionada ao final da fila. Quando chega sua vez,
a pessoa na frente da fila é atendida e removida da fila. O próximo da fila é então
atendido e removido, e assim por diante.
Podemos usar uma fila para armazenar informações como pedidos de uma loja
online, por exemplo. Quando um pedido é feito, ele é adicionado à fila. Quando o
pedido é atendido, ele é removido da fila e o próximo pedido é atendido.
Exemplos:
Resposta: 9
Resposta:
Métodos de pesquisa e classificação de
dados
Métodos de Pesquisa:
Métodos de Classificação:
1. Bubble Sort: Esse método compara cada elemento com o próximo e troca de
posição se estiverem fora de ordem. Esse processo é repetido várias vezes
até que todos os elementos estejam em ordem.
2. Selection Sort: Esse método encontra o menor elemento e o coloca na
primeira posição, depois encontra o segundo menor elemento e o coloca na
segunda posição, e assim por diante até que todos os elementos estejam em
ordem.
3. Quick Sort: Esse método divide o conjunto em dois subconjuntos, um com
elementos menores que um pivô e outro com elementos maiores que o pivô.
Esse processo é repetido recursivamente até que todos os elementos estejam
em ordem.
Exemplos:
1. Busca Sequencial:
2. Busca Binária
3. Hashing
Atividades sobre Métodos de pesquisa e
classificação de dados - Nível fácil
1. Qual é o objetivo dos métodos de pesquisa em estrutura de dados?
Resposta: Uma fila é uma estrutura de dados linear que armazena um conjunto
de elementos em sequência, onde o primeiro elemento inserido é o primeiro a
ser removido.
Respostas
1.
4. Uma pilha é uma estrutura de dados que segue o princípio LIFO (Last In, First
Out), ou seja, o último elemento adicionado é o primeiro a ser removido. Já
uma fila segue o princípio FIFO (First In, First Out), ou seja, o primeiro
elemento adicionado é o primeiro a ser removido.
5.
6.
8.
9.