MC102QR

Algoritmos e Programação de Computadores

Primeiro semestre de 2020

Professor: Lehilton Pedrosa
Monitores: Italos, Welverton, Andreis, Rafael, Rodrigo


Últimos avisos

  • 29/07/2020 A disciplina foi finalizada e foi adicionado um tutorial sobre linguagem C para vocês se prepararem para MC202. Bom descanso e bom trabalho. Até!

  • 16/04/2020 Listas de exercícios de fixação serão publicados nessa página.

  • 19/03/2020 As atividades retornarão a partir de segunda-feira de maneira não presencial. Por favor, leiam o programa da disciplina atualizado.

  • 05/03/2020 A Secretaria de Vivência fará uma apresentação. Depois algumas entidades estudantis serão introduzidas com a organização do centro acadêmico.

  • 04/03/2020 Página da disciplina no ar.

Unidades

Unidade 1 – Problemas e algoritmos

Vamos conversar um pouquinho sobre como os computadores modernos funcionam. Depois vamos discutir sobre o que se trata de fato em Computação, entender que tipo de problemas os computadores resolvem e o que são esses animais chamados algoritmos.

Unidade 2 – Escrevendo algoritmos

Agora que já sabemos o que é um algoritmo, temos que descobrir como escrever um algoritmo. Queremos descobrir quais são os blocos fundamentais que os compõem.

Unidade 3 – Linguagens de programação

Enquanto os algoritmos são úteis por si só, queremos executá-lo em um computador. Como um computador não entende português, vamos temos que escrever nossos algoritmos em uma linguagem de programação.

Unidade 4 – Estruturas elementares em Python

Agora que já conhecemos os principais conceitos de algoritmos e linguagem de programação, vamos materializá-los em Python. Veremos tipos básicos de variáveis e a sintaxe de expressões aritméticas. Depois, veremos como escrever um programa com entrada e saída. Finalmente, vamos criar programas com uma estrutura condicional.

Unidade 5 – Listas

Um dos motivos para se utilizar computadores é que queremos tratar grandes quantidades de dados. Além disso, queremos escrever algoritmos genéricos que atuem da mesma maneira em cada elemento desses conjuntos de dados. Para isso, utilizamos as chamadas listas em Python.

Unidade 6 – Funções

À medida em que os programas ficam mais complicados, mais difícil fica controlar e entender o conjunto das instruções. Por isso, é importante criar abstrações sobre um conjunto de instruções que tenham determinado significado; a essa abstração damos o nome de função.

Unidade 7 – Algoritmos iterativos

Vamos mergulhar um pouco mais fundo ao escrever algoritmos baseados em comandos iterativos.

Unidade 8 – Matrizes

Por enquanto, aprendemos apenas a manipular listas. Para muitas aplicações, essas listas contém apenas elementos escalares, como números ou strings, mas elas podem ter estruturas mais elaboradas. Vamos aprender a manipular matrizes e aproveitar para falar um pouco de arquivos.

Unidade 9 – Coleções de dados

Até agora guardamos dados como variáveis ou listas de variáveis simples. Vamos aprender novos tipos de coleção de dados e estudar como representar dados na memória.

Unidade 10 – Eficiência de algoritmos

Muitas vezes não é suficiente escrever e implementar um algoritmo. Para de fato resolver um problema, precisamos estimar a quantidade de recursos que nossos algoritmos gastam e garantir que eles executam em um tempo razoável.

Unidade 11 – Recursão

Até agora vimos algoritmos iterativos, isso é, tudo que os eles fazem é executar um conjunto de instruções até que uma condição seja satisfeita. Aprenderemos uma nova maneira de pensar e escrever algoritmos. Vamos descobrir que podemos escrever algoritmos ora muito mais simples, ora muito mais sofisticados.

Tarefas

Tarefa 1 - Primeiros passos

Você deve aprender a utilizar um terminal de comandos, realizar operações básicas no controle de versão Git e submeter uma tarefa na disciplina.

Tarefa 2 - Algoritmos

Você deve definir um problema computacional e descrever um algoritmo para resolver esse problema.

Tarefa 3 - Estruturas de controle

Você deve descrever um algoritmo para resolver um problema dado utilizando diferentes estruturas de controle.

Tarefa 4 - Entendendo algoritmos

Você deve ler uma sequência de instruções para um problema dado e analisá-la, à luz do seu conhecimento de algoritmos.

Tarefa 5 - Estruturas condicionais

Construa um primeiro programa em Python utilizando estruturas condicionais.

Tarefa 6 - Listas

Você deve utilizar instruções em Python para manipular listas.

Tarefa 7 - Percorrendo listas

Você deve utilizar instruções em Python para percorrer listas e acumular seus valores.

Tarefa 8 - Funções agregadoras

Você deve deve definir suas próprias funções agregadoras para listas.

Tarefa 9 - Conceito e frequência

Você deve deve determinar se umx estudante está apovadx na disciplina. Para isso, deverá criar um programa usando funções organizadamente.

Tarefa 10 - Imagens binárias

Você deve manipular matrizes para tratar imagens binárias e deverá manipular arquivos para armazená-las.

Tarefa 11 - Dicionários e tuplas

Você deve utilizar tuplas e dicionários para extrair medidas de um texto e implementar uma função de auto complemento.

Tarefa 12 - Coleções dinâmicas

Você deve criar um aplicativo de agenda em modo texto. Para isso, deverá determinar como representar uma coleção de dados dinâmica na memório usando listas e memória.

Tarefa 13 - Algoritmos eficientes

Para resolver os problemas dessa tarefa em tempo aceitável, você precisará pensar em algoritmos eficientes.

Tarefa 14 - Recursão

Não há como aprender recursão sem praticar bastante.

Tarefa 15 - Árvore

Para entender recursão você deve aprender recursão.

Links úteis

Links recomendados para a disciplina:

  • Introdução à linguagem de programação C

  • Sempre que tiver dúvida, não deixe de ler e buscar na documentação

  • Programas recomendados para a disciplina

  • Usando o controle de versões Git

    • Página oficial do Git
    • Um tutorial direto ao ponto
    • Grupo de MC102 no GitLab do IC
    • Escrevendo documentos de texto usando markdown

Alguns links úteis, mas cujo uso não é recomendado para a disciplina:

  • Material complementar
  • Ferramentas online