Programação

  • Álgebra booleana e aplicações (MAC0329) -- Edição 2023


    Aulas:

    • Horário: terças 8h / quintas 10h
    • Local: Sala B3


    Monitoria:

    • Monitor: Renan Ribeiro Marcelino
    • Plantão: terças, 14h~16h, sala de reuniões do bloco C

    O fórum de AVISOS abaixo será usado para postagem de avisos/notícias
    (todos irão receber a mensagem postada no email cadastrado aqui no e-disciplinas)

    O fórum de DÚVIDAS/COMENTÁRIOS/DISCUSSÕES é aberto para vocês postarem/responderem mensagens.
    Recomendo que postem dúvidas aqui também, e não somente no grupo do telegram ou discord
    ou outros que vocês utilizam "por fora".

  • Referências bibliográficas



    Notas de aula:  booleana2023.pdf  (atualizado em 27/06)


    Livro para conhecimentos gerais e diversão: O livro abaixo é bem divertido. Cobre desde a história da computação (começando na idade da pedra) e vai até a descrição da organização de computadores. É uma forma light de vocês se familiarizarem com vários dos termos citados na primeira aula!

    "Introdução ilustrada à computação" de Larry Gonick


  • Critério de avaliação

    A avaliação será uma composição das notas de prova, notas de Listas e notas dos EPs (Projeto de circuitos)

    MP = (P1 + P2) / 2 ---> média das provas
    
    ML = [(total de pontos obtidos) / (total possível)]*10 ----> média de listas
    
    MEP = (EP1+EP2+2*EP3) / 4 ----> média dos EPs  (! pesos foram alterados !)
    
    
    
      if MP >= 5.0 :
      
          MF = ML(10%) + MEP (20%) + MP(70%)
          
      elif  3.0 <= MP < 5.0 :
      
          REC
    novoMF = min {(MF + 2*PREC)/3, MF+3} + (eventual bônus derivado de ML e MEP) else : MF = MP (reprovado)
  • Tarefas (Listas, EPs, Provas)


    Para projetar e simular os circuitos, usaremos o LOGISIM-EVOLUTION

    • Lista 1: lista1.pdf, entregar em papel até 14/04
    • Lista 2: lista2.pdf, entregar em papel até 02/05
    • Lista 3: lista3.pdf, entregar em papel até 22/06
    • EP1: ep1.pdf, entrega até 18/04
    • EP2: ep2.pdf, entrega até 14/06
    • EP3: ep3.pdf, entrega até 24/07
    • P1 -- 04/05
    • P2 -- 29/06


  • Log das aulas

    Aula 01 (21/03): Introdução sobre o que será coberto nessa disciplina. Basicamente, queremos entender como um programa, escrito em uma linguagem qualquer de programação, é executada pelo processador de um computador. Hoje falamos um pouco sobre números binários e, de forma geral, uso de diferentes bases (binária, decimal, hexadecimal, octal) para a representação de números.

    Aula 02 (23/03): Mais números na base 2. Como representar números inteiros (sem e com sinal, i.e., positivos e negativos) no computador, considerando-se N bits para armazená-los. Representação de números inteiros com sinal: notações sinal-magnitude, complemento de 1 e complemento de 2. Adição e números de N bits em notação complemento de 2. Detecção de overflow. Mais detalhes nas notas de aula, cap.2

    Aula 03 (28/03): Breve revisão de como interpretar os códigos binários como números inteiros. Adição de binários interpretados como inteiros sem sinal. Subtração de números de N bits em notação complemento de 2 por meio da adição. Detecção de overflow em todos os casos (adição, subtração, com sinal e sem sinal).

    ------- Após essas três aulas, vocês devem ter entendido a representação de números em diferentes bases (e especialmente na base 2), conversão de números da base 2 para a base 10 e vice-versa, operação de adição de números em binário, representação de números inteiros no computador em N bits (interpretação como inteiro sem sinal, sinal-magnitude, complemento de 1 e complemento de 2), operações de adição e subtração de números binários de N bits (interpretação inteiro sem sinal e interpretação complemento de 2) e deteção de overflow nesses casos.

    Aula 04 (30/03): Somador de bits escrita como uma função binária. Operadores lógicos E, OU e NÃO. Escrita de funções binárias por meio dos operadores lógicos. Noções de portas lógicas AND, OR e NOT e de circuitos construídos usando-se essas portas. (capítulo 3 das notas de aula)

    ------ Semana de break

    Aula 05 (11/04): Processamento de dados binários visto como uma função binária; expressão booleana define uma função binária (ou booleana); podem existir múltiplas expressões booleanas que definem uma mesma função; dada uma função binária qualquer, sempre existe alguma expressão booleana que a define? Circuitos lógicos podem ser vistos como uma implementação literal de uma expressão booleana (usando portas lógicas E, OU e inversor NÃO) -- capítulo 3 das notas de aula. Álgebra booleana: definição e alguns exemplos.

    Aula 06 (13/04): Mais exemplos de álgebra booleana; princípio da dualidade em álgebras booleanas; algumas propriedades de álgebras booleanas (capítulo 4 das notas de aula)

    Aula 07 (18/04)Propriedades (involução, associativa e Teorema de DeMorgan). Exercícios. Diagrama de Hasse e noção de ordem parcial.

    Aula 08 (20/04): Relações de ordem parcial. Relação de ordem parcial associada a álgebras booleanas, Diagrama de Hasse de álgebras booleanas. Átomos e exemplos. (ainda estamos no capítulo 4 das notas de aula)

    Aula 09 (25/04): Decomposição de qualquer elemento de uma álgebra booleana como união de átomos de forma única

    Aula 10 (27/04): Decomposição de qualquer elemento de uma álgebra booleana como união de átomos de forma única, isomorfismo entre álgebras booleanas

    Aula 11 (02/05): Exemplo de isomorfismo, existência de isomorfismo entre duas álgebras booleanas finitas com o mesmo número de átomos, qualquer álgebra booleana com n átomos é isomorfa à álgebra das partes de um conjunto S com n elementos

    Aula 12 (04/05): P1  (conteúdo visto até agora, capítulos 1 a 4 das notas de aula)  -- a P1 será na sala B5

    Aula 13 (09/05): Noções sobre expressões booleanas, funções booleanas, álgebra booleana das funções booleanas -- os produtos canônicos correspondem aos átomos nessa álgebra booleana e, por conseguinte, qualquer função booleana  pode ser expressa de forma única como soma de um subconjunto de produtos canônicos!  (capítulo 5 das notas de aula)

    Aula 14 (11/05) : Noções sobre expressões boolenas na forma SOP e POS, canônica ou não, e minimização delas

    Aula 15 (16/05): Não haverá aula presencial. Estudem pelas notas de aula, o conteúdo das seções 6.1 a 6.5

    Aula 16 (18/05): Não haverá aula presencial. Estudem pelas notas de aula, o conteúdo das seções 6.1 a 6.5

    Aula 17 (23/05): Mapas de Karnaugh

    Aula 18 (25/05): Minimização na forma SOP x minimização na forma POS; minimização quando há don't cares, minimização conjunta de múltiplas funções (exemplo para esses dois casos é o circuito para o display de dígitos com 7 segmentos); PLA (programmable Logic arrays). Com isso encerramos o tópico minimização de funções booleanas (capítulo 6 das notas de aula).

    Aula 19 (30/05) : Circuitos combinacionais especiais (somadores, comparadores, decodificadores, codificadores, multiplexadores, demultiplexadores)

    Aula 20 (01/06): Exemplo de uso de decodificadores e codificadores (memória ROM, teclado simplificado). Construção de MUX usando MUXes menores. Implementação de uma função booleana qualquer usando MUX.

    Semana de 05/05 a 09/05: Break 2 😌

    Aula 21 (13/06):  Circuito combinacional x Circuito sequencial. Sinais digitais (breve noção). Flip-flop SR

    Aula 22 (15/06) : Flip-flop JK, flip-flops ativados por borda (de subida ou de descida), flip-flops D e T

    Semana de 19 a 23/06  -- Não teremos aula presencial. Os próximos conteúdos a serem cobertos são "Capı́tulo 9  Circuitos sequenciais – contadores,
    registradores e outros exemplos" e "Capı́tulo 11 Organização de computadores" (vamos pular o 10 por enquanto)

    Aula 25 (27/06):  Revisão/discussão/esclarecimento de dúvidas sobre circuitos sequenciais (contadores, registradores, memória RAM)

    Aula 26 (29/06) P2   -- conteúdo das aulas 13 a 25, sendo que das aulas 21 a 25 é esperado interpretação (não será cobrada a construção de circuitos sequenciais). A P2 será na sala B-09

    Aula 27 (04/07): Noções sobre organização de computadores e execução de instruções pelo processador (slides aula 27)

    Aula 28 (06/07): Mais detalhes sobre o ciclo de instrução. Como gerar o código assembly de programas em C; entender as instruções de máquina e execução de programs a partir do exame do código assembly ( slides aula 27 +  anotações )

    Aula 29 (11/07):  às 10hs -- Tópico extra: processamento de imagens usando funções booleanas

  • Tópico 5

  • Tópico 6

  • Tópico 7

  • Tópico 8

  • Tópico 9

  • Tópico 10