Mostrando postagens com marcador Lógica. Mostrar todas as postagens
Mostrando postagens com marcador Lógica. Mostrar todas as postagens

Exercícios de Estrutura de Dados.


Lista de exercícios sobre ordenação de vetores utilizando Método Bolha - Bubble Sort. Clique na imagem abaixo para acessar os exercícios.

Método de ordenação Bolha



Lista de exercícios sobre ordenação de vetores utilizando Método Seleção - Selection Sort. Clique na imagem abaixo para acessar os exercícios.




Exercícios utilizando métodos de ordenação de vetores e problemas estatísticos. Clique na imagem abaixo para acessar os exercícios.




Revisão de exercícios sobre ordenação de vetores utilizando Bubble, Select e Insertion Sort. Clique na imagem abaixo para acessar os exercícios.





Nesta postagem você encontrar 4 exercícios para treinar e compreender algoritmos de pesquisa sequencial e pesquisa binária. Clique na imagem abaixo para acessar os exercícios.



Acho os exercícios fáceis, quer aumentar o nível de complexidade e desenvolver uma solução para um problema real?
lique na imagem abaixo para acessar nosso desafio. O problema que tem relação com pesquisa e ordenação é o Desafio 3.






Ainda ta com duvida, curta nossa pagina no facebook e poste sua duvida lá....

Uso da instrução scanf - Entrada de dados

Pertencente a biblioteca stdio.h (Standard Input/Output- entradas e saídas padrões), comando scanf é usado para entrada de dados à partir do teclado.


Sintaxe:

scanf("expressão de controle",argumentos);

onde expressão de controle indica o tipo do dado que será lido pelo computador. A tabela 1 abaixo mostra as expressões de controle usadas no scanf e o tipo de dado que cada expressão representa.

Tabela 1. Expressão de controle e os dados que a expressão representa.
nos argumentos o programador deve indicar o identificador da variável que receberá o valor digitado pelo usuário. Na figura 1, temos um exemplo de entrada de dados para dois tipos de dados de dados diferentes.
Figura 1. Declaração de variáveis e seus respectivos comandos de entrada de dados.

Note que no argumento é usado o símbolo & antes do identificador da variável (Não lembra o que é o identificador da variável? clique aqui e relembre). O uso desse símbolo é obrigatório e serve para avisar o compilador o endereço de memória onde a informação lida no teclado será guardada. Na figura 2 temos uma seta que indica o simbolo referido no texto.
Figura 2. Simbolo usado no argumento do scanf indicando o endereço de memorial que receberá o valor digitado.
Normalmente quando temos uma entrada de dados, um comando de saída de dados (printf) é associado ao scanf e servirá para instruir o usuário sobre o que ele deve fazer. Para entender melhor essa história de associar um printf com o scanf,  observe o código apresentado na figura 3.
Figura 3. Exemplo de programa usando 2 entrada de dados do tipo inteiro.
Conhecendo o código fonte do exemplo apresentado na figura 3 é fácil saber que o programa que irá receber 2 números inteiros, somar esses dois números e exibir o resultado da soma para o usuário que digitou os números. No entanto, quando não temos acesso ao código fonte não é tão fácil deduzir o que o programa vai fazer. Na figura 4 temos a tela do programa exibido na figura 3 após a compilação e execução do código.
Figura 4. Execução do programa apresentado na figura 3.
Notem que ao executar o programa é difícil saber o que deve ser feito, pois o usuário irá se deparar com uma tela preta com um cursor piscando. Neste caso o que deve ser feito? Devemos digitar uma palavra, um numero, esse numero deve ser inteiro, real? É impossível saber ao certo o que devemos fazer. Para ajudar o usuário, o programador deve criar mecanismos para  instruir o usuário sobre o que deve ser feito em cada parte do programa. Na figura 5 temos o código da figura 3 reescrito.

Figura 5. Código associando printf com a entrada de dados.
No código apresentado na figura 5 acrescentamos 3 printf's. O primeiro printf apresenta uma mensagem explicando o que o programa irá fazer, no segundo e terceiro printf o programador irá instruir o usuário sobre como ele deve interagir com o programa. Na figura 6 temos uma tela da execução do programa após as modificações. 
Figura 6. Execução do programa associando printf e scanf orientando o usuário.

Na figura 6 vemos o resultado com as alterações realizadas no código conforme apresentado na figura 5. Na tela de maior destaque temos a primeira parte do programa onde uma mensagem explicando a função do programa será exibida assim como a primeira instrução para o usuário indicando que ele deve digitar o primeiro numero. No quadrado vermelho em destaque, temos o programa após a exibição da soma entre os números. 
Notem que nessa nova versão é muito mais simples para o usuário entender o que deve ser feito ao longo da execução do programa.

Variação do comando:

Conforme o código apresentado na figura 7, um único comando scanf pode ser usado para receber mais de uma variável, no entanto, a pratica não é aconselhada, pois o usuário terá que digitar os dois números na sequencia o que pode gerar duvidas no momento da execução. Na figura 8 temos a execução do programa exibido na figura 7.
Figura 7. Comando scanf recebendo duas variáveis. 
Figura 8.  Execução do código exibido na figura 7.

  
Ainda ta com duvida, curta nossa pagina no facebook e poste sua duvida lá....

Evolução da Informática - Dos primeiros computadores à internet

Apaixonado por todo tipo de história, eu não podia deixar de compartilhar um vídeo que mostra um pouco da historia do computador e da internet com reportagens aqui do Brasil. Tem gente que nem consegue imaginar um computador com somente 16 ou 256 cores.....O saudades do meu 1º computador, Deveria ter guardado de recordação. Vai aqui a configuração dele: 486 DLC 66 MHz com 8 Mb de RAM e HD de 100MB.

Formas de representar Algoritmos - Fluxograma

Falamos em nossa postagem Algoritmos e informática que algoritmo é o passo-a-passo ou sequencia lógica utilizada para realizar uma automação. Algumas ferramentas foram desenvolvidas para representar os algoritmos onde podemos destacar os Fluxogramas e pseudocódigos. 
O objetivo dos fluxogramas e pseudocódigos é representar de maneira simples a lógica utilizada em um "programa de computador". 

Fluxogramas

Um fluxograma, é um diagrama que tem como finalidade representar um algoritmo (processos ou fluxos). Geralmente confundido com o organograma, o fluxograma possui a diferença de representar algo essencialmente dinâmico, ou seja, segue um fluxo (lógico).
Para tornar os algoritmos mais próximos dos programas computacionais (programas desenvolvidos em qualquer linguagem de programação) algumas regras são exigidas na confecção dos fluxogramas. Usando o exemplo apresentado na postagem Algoritmos e informática iremos criar um algoritmo que receberá os valores de A e B via teclado do computador e exiba o resultado da soma entre os dois números digitados no monitor. Na figura 1 temos a solução desse problema em fluxograma.

Figura 1. Fluxograma mostrando programa que soma e exiba  dois números digitados via teclado

Analisando o fluxograma da figura 1 temos:

1º Instrução em fluxograma: Nesta primeira figura geométrica (retângulo com bordas arredondadas) com a palavra inicio, indicaremos o incio da solução lógica de nosso problema.
Figura 2. Figura geométrica representando inicio do programa

2ª Instrução em fluxograma: As próximas duas figuras geométricas (trapézio) representam a instrução de entrada de dados (leia em pseudocódigo). Quando usamos essa figura geométrica queremos que o computador verifique o que o usuário digitou e guarde esse valor em uma variável cujo nome da variável esta escrita dentro da figura geométrica (A e B neste caso) conforme indicado na figura 3.
Figura 3. Entrada de dados - Representado pelo trapézio com o nome da variável escrita no seu interior.

3º Instrução em fluxograma: O processamento de dados que no nosso caso será a soma entre dois valores (soma = A + B) será efetuado dentro do retângulo também conhecido como atribuição. Aqui o computador irá verificar os valores das variáveis A e B, somar esses dois valores e armazenar (atribuir) o resultado da operação na variável soma.
Figura 4. Processamento de dados - Representado pelo retângulo.

4º Instrução em fluxograma: Esta instrução é usada para que seja exibido no dispositivo padrão (monitor) o conteúdo da variável soma. Para isso é usado o simbolo mostrado na figura 5 com o identificador da variável que em nosso caso será a variável soma.

Figura 5. Diagrama que representa a saída de dados em dispositivo padrão.

Assim como em pseudocódigo, a saída de dados pode exibir o conteúdo de variáveis assim como texto. Para exibir caracteres alfanuméricos, basta colocar o texto entre aspas no interior do diagrama conforme mostrado na figura 6.
Figura 6. Diagrama que representa a saída um "texto" em dispositivo padrão.


5º Instrução em fluxograma: O inicio e o fim do fluxograma é representado pela mesma figura geométrica com a palavra fim.
Figura 7. Diagrama que indica o fim de nosso fluxograma.
Em resumo teremos:

Figura 8. Resumo das figura geométricas e suas funções dentro do fluxograma.


Ainda ta com duvida, curta nossa pagina no facebook e poste sua duvida lá....

Comandos de repetição

Exercício 1 - Fazer um programa que receba 10 numero via teclado e mostre quais desses valores são positivos e quais são negativos (Não será digitada zero). A figura 1 mostra o programa após sua execução.
- Os números devem ser recebidos dentro do loop;
- será necessário o uso do comando de decisão.
Figura 1. Mostrando se os números são positivos ou negativos.
Exercício 2- Fazer um programa que ficará pedindo para o usuário digitar um numero até que o usuário digite o numero 10 conforme mostra a figura 2.
- O segredo esta no condição do comando de decisão
Figura 2. O programa irá solicitar um numero até o usuário digitar 10.
Exercício 3- Fazer um programa que receba 10 numero e mostre o maior de todos os números digitados conforme apresenta a figura 3.
****Não serão digitados números negativos
- Os números devem ser recebidos dentro do loop;
- será necessário o uso do comando de decisão.
- o uso de uma variável auxiliar é recomendado.
Figura 3. Programa exibindo o maior entre 10 numeros
Exercício 4- Fazer um programa que receba 10 numero positivos, some e exiba o resultado da soma. O programa só aceitará valores positivos. Se algum valor negativo for digitado o programa deve exibir a mensagem "valor invalido, só digite números positivos" e não contar esse numero como um numero digitado conforme apresenta a figura 4.
- Os números devem ser recebidos dentro do loop;
- Devem ser digitados 10 números positivos independente dos números negativos digitados.
Figura 4. Execução do programa. Serão digitado 10 números positivos.
Exercício 5- Fazer um programa que faça exponenciação sem o uso da biblioteca Math.h. Para isso o programa deve receber o valor da base e o valor do expoente. O programa só irá calcular o a exponenciação se o expoente for maior que zero, caso seja negativo, o programa deve exibir a mensagem "expoente invalido" e finalizar o programa. A figura 5 mostra como deve ser a execução do programa.
Figura 5. Execução do programa de calculo de expoente.

Exercício 6- Fazer um programa que calcule o fatorial de um numero digitado via teclado. O fatorial que é representado por n! é o produto de todos os inteiros positivos menores ou iguais a n. A figura 6 mostra a execução do programa.
Figura 6. Execução do programa que calcula fatorial de um numero.
Ainda ta com duvida, curta nossa pagina no facebook e poste sua duvida lá....

Desafio - comando de decisão

Desafio 1

Fazer um programa que receba 3 números e mostre esses números em ordem crescente conforme a figura 1.
Figura 1. Programa exibindo a ordem crescente de números digitados.
Desafio 2

Fazer um programa que para um caixa de supermercado automático. Este caixa automático irá receber o valor total da compra e o valor recebido pelo caixa e calcular o troco da pessoa. Como o sistema é todo eletrônico, o programa deve informar quais e quantas notas e/ou moedas devem ser dadas ao cliente. A maquina só possui notas 100, 50, 10, 5, 1 real e moedas de 0,50 e 0,10 centavos. O programa deve ignorar valores menores que 0,10 centavos. A figura 2 apresenta a execução do programa quando o valor do dinheiro é superior ao da compra.
Figura 2. Execução do programa quando o dinheiro do cliente é superior ao total da compra.
Quando a comprar é maior que o dinheiro, o programa exibirá quanto esta faltando e encerrará o programa. Caso o valor do dinheiro é igual ao da comprar, exibir a mensagem "Não há troco, obrigado e volte sempre"

Desafio 3

Fazer um programa  que receba um numero inteiro e verifique se esse numero é primo ou não. A figura 3 temos um print da tela com a execução do programa.
Figura 3. Execução do programa que verificar se um numero é primo ou não

Ainda ta com duvida, curta nossa pagina no facebook e poste sua duvida lá....

Exercícios - Comandos de repetição

Exercício 1- Fazer um programa que receba o seu primeiro nome via teclado e exiba-o em 30 linhas diferentes.

Exercício 2- Fazer um programa que mostre no dispositivo padrão a sequencia numérica de 0 até 100, conforme indicado na figura 1.
- Não é necessário entrar com nenhum valor via teclado.
- Controle somente os parâmetros de condições iniciais e finais.
Figura 1. Exibição de todos números de 0 a 100.

Exercício 3- Fazer um programa que mostre todos os números de 53 a 100 conforme indicado na figura 2 abaixo.
- Não é necessário digitar nenhum numero para iniciar o programa.
- Controle somente os parâmetros de condições iniciais e finais.
Figura 2.  Exibição de todos os números de 53 a 100.
Após fazer o exercício e responda: O que foi alterado entre o primeiro e o segundo exercício e porque?

Exercício 3 - Fazer um programa que mostre todos os números de 0 até N onde N será digitado via teclado. A figura 3 mostra a execução do programa.
- Neste caso, será necessário digitar N via teclado.
- Analise o que foi alterado nos exercícios anteriores para solucionar este exercício.
Figura 3. Exibir todos números de 0 a N.
Exercício 4- Fazer um programa que mostre no dispositivo padrão todos os números pares entre 1 e 100, conforme indicado na figura 4.
- Não é necessário digitar nenhum numero para iniciar o programa.
- Controle somente os parâmetros de condições iniciais e finais.
Figura 4. Todos números pares de 0 a 100.
Após fazer o exercício e responda: O que foi alterado entre o primeiro e  este exercício e porque?

Exercício 5- Fazer um programa que mostre todos os números de 149 a 0 conforme indica a figura 5.
Figura 5. Execução de programa exibindo os números de 149 à 0.

Exercício 6- Fazer um programa que some todos os números os números  de 0 a 100 conforme indicado na figura 6.
- Não é necessário digitar nenhum numero para iniciar o programa.
Figura 6.  Soma de todos números de 0 a 100.

Exercício 7 - Fazer um programa que some todos os números impares de 0 até 100 conforme indicado na figura 7.
Figura 7. Soma de todos números impares no intervalo de 0 a 100.

Exercício 8 - Fazer um programa que receba 10 numero via teclado e some esses valores. A figura 8 mostra o programa após sua execução.

Figura 8. Programa que soma 10 números digitados via teclado.

Ainda ta com duvida, curta nossa pagina no facebook e poste sua duvida lá....

Desafios em c++

Desafio 1

Desejamos fazer um programa que irá ajudar alunos de engenharia a calcular as Raízes de uma equação 2º Grau. Para isso o usuário irá digitar a, b e c referentes a equação abaixo:

ax² + bx + c 

onde as raízes serão calculadas a partir da equação abaixo:


Como o programa também irá ajudar o futuro engenheiro a traçar o gráfico da equação, algumas informações devem ser mostradas ao usuário.

A primeira informação que será fornecida será baseada no valor do Delta onde serão exibidas as seguintes informações:

- Quando o delta for negativo, o programa exibirá o valor do delta e a mensagem "Delta negativo - não possui raízes" e finalizar o programa. Observe como deve ocorrer na figura 1.
Figura 1. Mensagem exibida quando o Delta negativo.
- Quando o delta for igual a zero, o programa exibirá o valor do delta e a mensagem "Delta = 0, teremos somente 1 raiz" e exibe o valor de X1 ou X2 já que eles são iguais.
Figura 2. Mensagem exibida quando o Delta=0.

- Quando o delta for positivo, o programa exibirá o valor do delta e as raízes  X1 e X2.
Figura 3. Mensagem que dese ser exibida quando delta positivo.
Assim como é possível notar nas figuras 2 e 3, o programa também fornecerá informações sobre como será o gráfico da equação. Neste caso devemos falar para o usuário se a concavidade da parábola é para cima ou para baixo alem de indicar para o usuário o valor do X do vértice (Xv) e Y do vertice (Yv). Precisa relembrar como fazer o calculo do Xv e Yv e informações sobre verificar se a concavidade, clique aqui.

Desafio 2

Problema retirado do desafio de programação de UFMA - 2008

Um fazendeiro resolveu lotear sua fazenda e vender os lotes de terra. Sabe­-se que sua fazenda é um retângulo/quadrado e que todos os lotes também são retângulos/quadrados. O nosso amigo fazendeiro, entretanto, está com um pequeno  problema. Depois de dividir a terra em N lotes ele acredita que irá desperdiçar uma grande quantidade de terra. (Leia-­se desperdício como “terra” que o fazendeiro não vai vender, ou seja, que não pertence a nenhum lote). O que você acha de ajudá-­lo?
Para isso o programa deve:
-  Receber o valor da largura (L) e comprimento (C) do terreno do fazendeiro.
- Receber o numero de lotes que o fazendeiro dividiu o terreno
- Receber o valor da largura (LL) e comprimento (LC) de cada lote.

Por exemplo:
Se o fazendeiro falar que seu terreno possui 10 m x 10 m e que vendeu 4 lotes de 4,5 m x 4,5 m, teremos uma distribuição de terras conforme apresentado na figura 4.
Figura 4. Exemplo para solução do problema.
Com base nas informações acima, o programa deve calcular a área vendida que neste caso foi de 81 m² e a área desperdiçada que foi de 19 m².

Desafio 3

Desejamos criar um programa que irá mostrar uma função de 1º grau extraída a partir de uma reta plotada em um plano cartesiano (figura 5).
Figura 5. Reta tipica de uma função do 1º grau.
Sabendo que a função de 1º grau é dado por :

f(x)= a x +b

onde a é o coeficiente angular e b o coeficiente linear.

Para realizar o programa o usuário deve digitar:

-  o valor de y quando x=0 que será o coeficiente linear.
-  dois pontos da reta onde será calculo o coeficiente angular.

A figura 6 mostra um resumo sobre como calcular o coeficiente angular, caso isso seja pouco para você entender, clique aqui e leia mais sobre o assunto.
Figura 6. Extração dos pontos da equação da reta e calculo do coeficiente angular.
A figura 7 mostra um print da tela com o programa acima funcionado.
Figura 7. Programa proposto executado.

Ainda ta com duvida, curta nossa pagina no facebook e poste sua duvida lá....

Uso da instrução printf e seus tags

Pertencente a biblioteca Stdio.h (Standard Input/Output- entradas e saídas padrões), comando printf é usado para escrever uma mensagem no monitor. Nesta mensagem podemos exibir tanto caracteres alfanuméricos assim como o conteúdo de variáveis. 

Sintaxe:

printf("expressão de controle",argumentos);

A expressão de controle pode conter caracteres que serão exibidos na tela e/ou códigos de formatação para os argumentos. Os argumentos são separados por vírgula. Simplificando a explicação entre aspas devemos escrever o texto que será exibido e nos argumentos indicaremos as variáveis que serão exibidas.

Exemplo 1. A instrução abaixo irá exibir a mensagem "Primeiro exemplo do uso de printf" no monitor. Neste caso, a instrução printf só utiliza a expressão de controle.

      printf("Primeiro exemplo do uso de printf");

Exatamente o texto digitado entre aspas será mostrado na tela. Se for colocado espaço(s) no inicio das aspas, o texto será exibido da mesma forma.

      printf("   Primeiro exemplo do uso de printf");

O printf sempre iniciará a exibição na ultima posição em que o curso se encontra. Se a instrução printf for usada duas vezes na sequencia o texto será exibido na mesma linha.

      printf("Nao adianta usar 2 vezes a instrucao printf");
      printf("o texto sempre sera escrito na sequencia");

Note que a ultima palavra do primeiro comando printf (palavras em vermelho) aparecerá junto da vogal "o" do inicio do segundo printf. Isso ocorre porque o texto sempre é iniciado na ultima posição do cursor que neste caso era logo após a palavra "printf". A figura 1 mostra como ficará o texto.
Figura 1. A palavra "printf" aparece junto da vogal "o".
Para solucionar isso basta acrescentar espaços no inicio do segundo printf conforme mostra o codigo abaixo e a figura 2. 
      printf("Nao adianta usar 2 vezes a instrucao printf");
      printf("   o texto sempre sera escrito na sequencia");

Figura 2. A seta vermelha indica onde os espaços foram foram inseridos.
A expressão do comando printf pode conter códigos de formatação que indicam como os textos devem ser impressos. Por exemplo, quando queremos escrever um texto em linhas diferentes devemos colocar o tag \n no local onde desejamos pular a linha.


      printf("Nao adianta usar 2 vezes a instrucao printf\n");

      printf("o texto sempre sera escrito na sequencia");




A figura 3 mostra o texto em duas linhas em consequência do uso do tag \n.
Figura 3. Indicação do uso do tag \n no printf

Podemos usar um único printf e usar quantos tags de pular linha forem necessários. Olhe a instrução abaixo e veja como o texto será exibido na tela na figura 4.

printf("Podemos usar somente 1 printf \ne pular linha sempre que necessario\n\npodemos pular quantas linhas forem necessarias\n\n\n\neste caso pulamos 4 linhas");

Figura 4. Todo o texto apresentado na imagem foi digitado em um único printf.
A figura 5 mostra uma tabela com tags que podem ser usados para formatar textos no printf.
Figura 5. Tags que podem ser usados no printf.

Mostrando variáveis no printf

Os conteúdos das variáveis também são exibidos na tela utilizando o comando pinrtf. Para isso devemos indicar na expressão de controle do comando que tipo de variável que será exibida e mostrar no argumento a variável que desejamos mostrar o conteúdo na tela. Abaixo temos como ficará a instrução printf quando desejamos exibir uma variável.

Figura 6. 

No caso da instrução acima o programa irá exibir o conteúdo de uma variável do tipo inteiro "chamada" numero. A informação que uma variável que será exibida é do tipo inteiro é dada pelo formatador %d mostrada na expressão de controle da instrução. Cada tipo de dado terá um formatador especifico como mostra a tabela abaixo.
Figura 7. Formatadores e suas funções
O printf pode exibir mais de uma variável assim como exibir variáveis e textos. Veja o exemplo de código na figura 8 e o programa sendo executado na figura 9.
Figura 8. Código mostrando o uso do printf onde são exibidas variáveis.
Figura 9. Execução do programa do código apresentado na figura 8.
É possível exibir mais de uma variável no mesmo printf. Para isso, é preciso colocar o numero de formatadores na expressão de controle equivalente ao numero de variáveis que iremos exibir e os respectivos identificados na sequencia que serão exibidos na expressão do comando. As instruções abaixo mostram um exemplo da exibição de mais de uma variável no printf.

printf("\n\n Vou exibir a variavel A,B,C e D na sequencia %d %d %d %d \n\n\n\n\n", a, b, c, d); 

printf("\n\n Tambem podemos ter texto intercalando a exibicao das varaiveis \n exemplo A= %d na sequencia temos B = %d\n\n", a, b); 

Durante a execução do programa, as formatações de inteiros %d mostradas nas instruções acima estão marcadas com setas na figura 10.
Figura 10. Execução de programa onde são exibidas mais de 1 variável por printf.
Ainda ta com duvida, curta nossa pagina no facebook e poste sua duvida lá....