Baixe o app para aproveitar ainda mais
Prévia do material em texto
1 Pontifícia Universidade Católica de Minas Gerais Curso de Sistemas de Informação Algoritmos e Estruturas de Dados Revisão Geral Revisão Geral • Introdução – Objetivos • Definição de Algoritmo • Estruturas Básicas em Algoritmos – Implementação em C# .NET • Sequencial • Condicional • Repetição/Iteração • Vetores e Matrizes • Funções e Procedimentos Pontifícia Universidade Católica de Minas Gerais Curso de Sistemas de Informação Algoritmos e Estruturas de Dados Revisão Geral Bibliografia • MANZANO, José Augusto N. G.; OLIVEIRA, Jayr F. – Algoritmos: Lógica para Desenvolvimento de Programação • CORMEN, Thomas H. et al. – Algoritmos: Teoria e Prática • DEITEL & DEITEL – C# - Como Programar – 2003 • PREISS, Bruno – Estruturas de dados e algoritmos. Rio de Janeiro: Campus, 2001. 584p. • SZWARCFITER, Jayme Luiz; MARKENZON, Lilian – Estruturas de dados e seus Algoritmos • VILLAS, Marcos Vianna; VILLASBOAS, Luiz Felipe P. – Programação – Conceitos, Técnicas e Linguagens. Rio de Janeiro: Campus, 1988. 196p. • MCDONALD, Matthew – Begining ASP.NET 4 in C# 2010 – Apress – 2010 • MCMILLAN, Michael – Data Structures and Algorithms Using C# – Cambridge University Press – 2007 • Stellman & Greene – C# - Use a Cabeça – 2ª Edição – 2011 • Material de Aula – Algoritmos e Técnicas de Programação – Aluísio Eustáquio da Silva – 2012 2 Pontifícia Universidade Católica de Minas Gerais Curso de Sistemas de Informação Algoritmos e Estruturas de Dados Revisão Geral Introdução Objetivo • Revisão rápida e objetiva dos conceitos sobre algoritmos trabalhados em ATP • Revisão das estruturas básicas de programação da Linguagem C# .NET • Identificação de falhas de aprendizagem e discussão de mecanismos para resgate de conteúdos Pontifícia Universidade Católica de Minas Gerais Curso de Sistemas de Informação Algoritmos e Estruturas de Dados Revisão Geral Introdução Algoritmo? Definição de Algoritmo “Algoritmo é uma sequência de passos que visa atingir um objetivo bem definido” (FORBELONE, 1999). “(...) é a descrição de uma sequência de passos que deve ser seguida para a realização de uma tarefa.” (ASCENCIO, 1999). “Algoritmo é a sequência finita de instruções ou operações cuja execução, em tempo finito, resolve um problema computacional, qualquer que seja sua instância” (SALVETTI, 1999) 3 Pontifícia Universidade Católica de Minas Gerais Curso de Sistemas de Informação Algoritmos e Estruturas de Dados Revisão Geral Introdução Algoritmo? Definição de Algoritmo Algoritmos não são necessariamente computacionais. Eles representam passos necessários para a realização de uma atividade. Diferentes algoritmos podem realizar a mesma tarefa utilizando um conjunto diferente de instruções e isso pode demandar mais ou menos tempo e esforço. A complexidade do algoritmo depende de estruturas de dados e do uso de instruções adequadas a uma aplicação. Por exemplo, vestir meias e sapatos antes da calça é diferente de vestir a calça e depois as meias e os sapatos, embora no final um mesmo objetivo tenha sido alcançado. Pontifícia Universidade Católica de Minas Gerais Curso de Sistemas de Informação Algoritmos e Estruturas de Dados Revisão Geral Estruturas de Algoritmos – Implementação em C# .NET • Estrutura Sequencial • Estrutura Condicional • Estruturas de Repetição (Iteração) • Funções e Procedimentos • Matrizes e Vetores 4 Pontifícia Universidade Católica de Minas Gerais Curso de Sistemas de Informação Algoritmos e Estruturas de Dados Revisão Geral Estrutura Sequencial ... Console.Write("Salário do Funcionário: "); Salário = float.Parse(Console.ReadLine()); Console.Write("Aumento Percentual....: "); Percentual = float.Parse(Console.ReadLine()); NovoSalário = Salário + Salário * Percentual/100; Console.WriteLine("\nSalário Atual: {0:F2}", NovoSalário); Console.ReadKey(); ... Pontifícia Universidade Católica de Minas Gerais Curso de Sistemas de Informação Algoritmos e Estruturas de Dados Revisão Geral Estrutura Condicional IF - ELSE ... Delta = Math.Pow(b, 2)-4*a*c; if (Delta < 0) Console.WriteLine("\nNão existem Raízes Reais!\n"); else { Raiz1 = (-b + Math.Sqrt(Delta)) / (2 * a); Raiz2 = (-b - Math.Sqrt(Delta)) / (2 * a); Console.WriteLine("\nRaiz 1 = {0:F2}", Raiz1); Console.WriteLine("Raiz 2 = {0:F2}\n", Raiz2); } ... 5 Pontifícia Universidade Católica de Minas Gerais Curso de Sistemas de Informação Algoritmos e Estruturas de Dados Revisão Geral Estrutura Condicional Estrutura SWITCH ... switch (Op) { case 1: if (Console.CapsLock) Console.WriteLine("O NumLock está Ligado"); break; case 2: Console.BackgroundColor = ConsoleColor.Blue; Console.ForegroundColor = ConsoleColor.Black; break; default: Console.WriteLine("Opção Inválida !!!"); break; ... Pontifícia Universidade Católica de Minas Gerais Curso de Sistemas de Informação Algoritmos e Estruturas de Dados Revisão Geral Estruturas de Repetição Estrutura FOR ... Random x = new Random(); Console.WriteLine("Exemplo com FOR\n"); for (i = 1; i <= 10; i++) { Console.WriteLine(“Sorteio {0:00}: {1,10}",i,x.Next()); } Console.ReadKey(); ... 6 Pontifícia Universidade Católica de Minas Gerais Curso de Sistemas de Informação Algoritmos e Estruturas de Dados Revisão Geral Estruturas de Repetição Estrutura FOREACH ... string[] Frase = new string[] {"SI","ST","EM","AS"," D","E ","IN","FO","RM","AÇ","ÃO"}; foreach(string Letras in Frase) { Console.Write(Letras); } ... {COLEÇÃO} Pontifícia Universidade Católica de Minas Gerais Curso de Sistemas de Informação Algoritmos e Estruturas de Dados Revisão Geral Estruturas de Repetição Estrutura WHILE ... i=1; while(i<=10) { Console.WriteLine(“Sorteio {0:00}: {1,10}",i,x.Next()); i++; } Console.ReadKey(); ... Teste 7 Pontifícia Universidade Católica de Minas Gerais Curso de Sistemas de Informação Algoritmos e Estruturas de Dados Revisão Geral Estruturas de Repetição Estrutura DO - WHILE ... i = 1; do { Console.Write("\nSorteio {0:00}: {1,10}", i, x.Next()); i++; Console.Write("\t\tDeseja um outro Número? (S/N) "); Resp = Console.ReadKey(); } while (Resp.KeyChar == 'S' || Resp.KeyChar=='s'); ... Teste Pontifícia Universidade Católica de Minas Gerais Curso de Sistemas de Informação Algoritmos e Estruturas de Dados Revisão Geral Exercício Alguns números de quatro algarismos possuem uma característica particular. Se separamos esse número em dois grupos e os somarmos encontramos um outro número cujo quadrado é exatamente igual ao número fornecido anteriormente. Veja o exemplo: Número = 3025 Separando o número em dois grupos de dois algarismos temos o 30 e o 25 . A soma de 30 com 25 é igual a 55 O Quadrado de 55 é igual a 3025. Faça um programa que mostre os números de 1000 a 9999 que possuem essa característica. 8 Pontifícia Universidade Católica de Minas Gerais Curso de Sistemas de Informação Algoritmos e Estruturas de Dados Revisão Geral Vetores e Matrizes Um vetor é uma variável composta, homogênea e unidimensional, formada por um conjunto de variáveis do mesmo tipo, com o mesmo identificador, e alocadas sequencialmente na memória. Como elas possuem o mesmo nome, o que as distingue é um índice que referencia sua localização dentro da estrutura. int[] Idades = new int[100]; idades[0] = 24; idades[1] = 12; idades[2] = 19; ... idades[99] = 23; Vetor 24 12 19 23 1 2 3 4 ... 98 99 100 Pontifícia Universidade Católica de Minas Gerais Curso de Sistemas de Informação Algoritmos e Estruturas de Dados Revisão Geral Vetores e Matrizes O trabalho com Matrizes segue o mesmo princípio. float[,] Notas = new float[4,5]; Notas[0, 0] = 13.6F; Notas[0, 1] = 17.2F; Notas[2, 2] = 23.1F; Notas[3, 4] = 37.7F; 1 13,6 17,2 2 3 23,1 4 37,7 1 2 3 4 5 9 Pontifícia Universidade Católica de Minas Gerais Curso de Sistemas de Informação Algoritmos e Estruturas de Dados Revisão Geral Vetores e Matrizes Exemplo de Código (Vetor) ... int i; int[] Vetor = new int[5]; //Entrada de Dados Console.WriteLine("Entrada de Elementos dos Vetores\n");for (i = 0; i < 5; i++) { Console.Write("Digite o Elemento {0} do Vetor: ", i + 1); Vetor[i] = int.Parse(Console.ReadLine()); } ... Pontifícia Universidade Católica de Minas Gerais Curso de Sistemas de Informação Algoritmos e Estruturas de Dados Revisão Geral Vetores e Matrizes Exemplo de Código (Matriz) ... int i, j; int[,] Matriz=new int[3,3]; //Entrada dos Dados da Matriz for (i = 0; i < 3; i++) { for (j = 0; j < 3; j++) { Console.Write("Elemento ({0},{1}) da Matriz: ", i + 1, j + 1); Matriz[i, j] = int.Parse(Console.ReadLine()); } } ... 10 Pontifícia Universidade Católica de Minas Gerais Curso de Sistemas de Informação Algoritmos e Estruturas de Dados Revisão Geral Exercício Faça um programa que receba os elementos de dois vetores, A e B, cada um com 5 posições. Considere que nenhum dos vetores possui elementos repetidos. Crie um vetor resultante C que possua os elementos comuns entre A e B. Crie um vetor resultante D que contenha os elementos de A que não existam em B. Pontifícia Universidade Católica de Minas Gerais Curso de Sistemas de Informação Algoritmos e Estruturas de Dados Revisão Geral Exercício Faça um programa que receba os elementos de uma matriz de 5 linhas por 3 colunas. Mostre a soma dos elementos de cada uma das linhas e das colunas da matriz. 11 Pontifícia Universidade Católica de Minas Gerais Curso de Sistemas de Informação Algoritmos e Estruturas de Dados Revisão Geral Funções e Procedimentos Uma Função ou um Procedimento compreende um agrupamento de código que serve a uma atividade específica dentro de uma estrutura de programa. Modularizar um programa através do uso de Funções e de Procedimentos é uma maneira fácil e ao mesmo tempo sofisticada de organizar seu código. Funções e Procedimentos possuem um único nome pelo qual são chamados. A execução do programa principal é desviada para a rotina e somente ao término dela é que o controle retorna ao programa que a chamou. Programa Principal Rotina Pontifícia Universidade Católica de Minas Gerais Curso de Sistemas de Informação Algoritmos e Estruturas de Dados Revisão Geral Funções e Procedimentos static void Main(string[] args) { ... ... Func_A(); ... ... ... Resultado = Func_B(); ... ... } void Func_A() { ... ... ... } int Func_B() { ... ... return x; } Função – Retorno de Valor (explícito) Procedimento – Não há retorno de valor através da rotina (void) 12 Pontifícia Universidade Católica de Minas Gerais Curso de Sistemas de Informação Algoritmos e Estruturas de Dados Revisão Geral Funções e Procedimentos Uma Função ou Procedimento pode precisar ter acesso a dados do programa principal para a computação de alguma coisa. Isso é feito através do uso de parâmetros. static void Main(string[] args) { ... ... Resultado = Func_A(a, b, c); ... } int Func_A(int x, int y, float z) { ... ... return R; }É possível termos em um programamais de uma função com mesmo nome? Pontifícia Universidade Católica de Minas Gerais Curso de Sistemas de Informação Algoritmos e Estruturas de Dados Revisão Geral Exercício Faça um programa que chame uma função capaz de calcular o Fatorial de um número inteiro. 13 Pontifícia Universidade Católica de Minas Gerais Curso de Sistemas de Informação Algoritmos e Estruturas de Dados Revisão Geral Funções e Procedimentos – O que é Passagem de Parâmetros por Referência?? Em uma passagem de parâmetros por referência não existe a cópia do valor do parâmetro real para o parâmetro formal dentro da rotina. Apenas uma referência a esse valor é passada para a função e uma alteração nesse parâmetro afeta o valor real referenciado por ele. static void Main(string[] args) { ... ... Func_A(x, ref y); ... } void Func_A(int a, ref int b) { ... ... b = 99; } y = 99 Pontifícia Universidade Católica de Minas Gerais Curso de Sistemas de Informação Algoritmos e Estruturas de Dados Revisão Geral Exercício Faça um programa que chame uma função capaz de calcular , sendo e inteiros. Utilize passagem de parâmetros por referência.
Compartilhar