Schema della sezione

    • Aqui você vai encontrar vários detalhes da disciplina, como datas de provas, cálculo de médias, material bibliográfico, entre outros.

    • Atendimentos

      Os atendimentos do estagiário PAE (Arthur) e dos monitores (Gabriel e Pedro) serão durante as aulas de laboratório de sextas-feiras, das 10h10min às 11h50min, e também nos seguintes dias e horários:

      • Arthur: sextas-feiras, das 13h às 14h;
      • Gabriel: sextas-feiras, das 14h às 15h;
      • Pedro: segundas-feiras, das 14h às 15h.

      Nos horários acima, quem precisar de atendimento deve entrar em contato com o respectivo monitor/estagiário PAE.

      Quem quiser atendimento da docente, basta entrar em contato por e-mail ou pelo e-disciplinas para marcar um horário.

    • O Run Codes é o sistema que será usado para você enviar seus exercícios semanais. Para isso, é necessário fazer um cadastro neste sistema, usando o código de matrícula M2J4.

    • Material com dicas para deixar os códigos mais claros e legíveis.

    • Os trabalhos podem ser feitos em grupos de até 3 pessoas. Quem quiser fazer o trabalho individualmente ou em dupla pode, desde que o total de grupos não passe de 30.

      Você tem até dia 28 de abril (segunda-feira), às 14h, para escolher aqui qual será seu grupo. Quem não fizer essa escolha até esta data, terá o grupo escolhido pela professora.

    • Aqui você tem todos os detalhes sobre o jogo a ser implementado no trabalho.

    • Aqui há uma lista de práticas de programação que foram encontradas em vários códigos entregues na primeira parte do trabalho, mas que devem ser evitadas na entrega da segunda etapa. Estas práticas tornam a compreensão do código mais difícil, inclusive para quem está programando, e por isso devem ser evitadas.
    • Seu grupo de trabalho tem até 26 de maio (segunda-feira), às 23h59min, para entregar a versão do trabalho que implementa o jogo para humano(a) x humano(a).
      Apenas o arquivo fonte (.c) deve ser enviado, por um(a) único(a) componente do grupo. Caso seu grupo tenha separado o código fonte em vários arquivo, entregue um arquivo compactado (.zip) contendo todos eles e um arquivo README explicando como deve ser feita a compilação.
      Lembre-se que o código deve ser feito em C (não C++) e deve funcionar no Linux.
    • Seu grupo de trabalho tem até 23 de junho (segunda-feira), às 23h59min, para entregar a versão do trabalho que implementa o jogo para humano(a) x computador.
      Apenas o arquivo fonte (.c) deve ser enviado, por um(a) único(a) componente do grupo. Caso seu grupo tenha separado o código fonte em vários arquivo, entregue um arquivo compactado (.zip) contendo todos eles e um arquivo README explicando como deve ser feita a compilação.
      Lembre-se que o código deve ser feito em C (não C++) e deve funcionar no Linux.
    • Este trabalho consiste em implementar computacionalmente uma forma de resolução para um problema que tenha a ver com Geometria Analítica (GA). Nas aulas de GA foram dados alguns exemplos de possibilidades de trabalhos, como o problema da agulha de Buffon e o problema de visibilidade dentro de uma floresta (ambos podem ser feitos na versão 2D, mas a versao 3D é mais interessante).

      Este trabalho pode ser feito em grupos de 3 a 4 pessoas. Ele será apresentado no dia 27/06 (sexta-feira), a partir das 10h10min, na sala 4-005. Cada grupo terá 5min para a apresentação, seguidos de mais 5min para perguntas.

      Estre trabalho é extra e poderá contribuir com 0 a 1 ponto a mais na média final, tanto em Introdução à Programação de Computadores (IPC) como em Geometria Analítica. Para cada uma dessas disciplinas, a pontuação a ser somada na média será distinta e dependerá, além da corretude e clareza da apresentação, da complexidade do que foi estudado e implementado. Por exemplo, um trabalho simples do ponto de vista de GA, mas complexo de ser implementado, poderá valer 1 em IPC e 0,2 ponto em GA. Já um trabalho complexo do ponto de vista de GA, mas de implementação simples (como os exercícios semanais de IPC), poderá valer 1 ponto em GA e 0,2 ponto em IPC.

      Um exemplo de trabalho que pode valer 1 ponto tanto em GA como em IPC é o "Lançamento de dardos" especificado abaixo.
    • As atividades de extensão podem ser feitas em grupos de até  8 pessoas. Quem quiser fazer a atividade de extensão em grupos menores, ou até individualmente, pode, desde que o total de grupos não passe de 15.

      Você tem até dia 26 de maio (segunda-feira), às 14h, para escolher aqui qual será seu grupo. Quem não fizer essa escolha até esta data, terá o grupo escolhido pela professora.

    • Cada grupo deverá desenvolver um vídeo, áudio, animação, história em quadrinhos ou o que achar mais interessante para explicar para um público de Ensino Médio, que nunca teve contato com programação, o que é programação, como ela é feita, quais as dificuldades, etc. É importante mencionar que o material produzido será disponibilizado em uma página para acesso do público geral. 

      Os vídeos e áudios devem ter até 10 minutos de duração. No caso de algo em formato de texto, ele deve ser tal que sua leitura leve no máximo 10 minutos. 

      Cada grupo deve enviar um arquivo com o material ou um colocar um link para ele na caixa de texto desta atividade. Deve ser informado também,  na caixa de texto, como foi feita a divisão de tarefas no grupo para realização da atividade de extensão.

      O prazo para entrega desta atividade é 25 de junho, às 23h59min.

  • Aqui estão os exercícios resolvidos durantes as aulas extras, de revisão, que o Arthur (estagiário PAE) ministrou nos dias 14/4 (Google Meet) e 22/4 (sala 1-004).

    • Semana de Recepção a Calouros(as) - não há aula!

    • Semana de Recepção a Calouros(as) - não há aula!

    • Semana de Recepção a Calouros(as) - não há aula!

    • Carnaval - não há aula!

    • Carnaval - não há aula!

    • Não há aula!

    • Material sobre tipos de dados, variáveis e comandos de atribuição, leitura e escrita. Na Aula 05 foram vistos tipos de dados, variáveis, comandos de atribuição e de leitura. Na Aula 07 foram vistos os comandos de escrita.

    • Programa em C que declara variáveis, faz escrita na tela e leitura do teclado. Exercício feito para treinar o uso dessas ferramentas.

    • Material sobre operações aritméticas, operadores relacionais, conectivos lógicos e expressões lógicas. Na Aula 07 foram vistas as operações aritméticas. Na Aula 08, foram vistos os operadores relacionais, conectivos e expressões lógicas.

    • Programa em C que lê um valor total T e um parcial P e calcula quanto P representa, em porcentagem, de T.

    • Programa em C que lê dois valores reais a e b e calcula o valor de a dividido por b.

    • Material sobre estruturas condicionais ("if" e "switch-case"). Na Aula 08 foi visto o comando "if". Na Aula 11 foi visto o comando "switch-case". 

    • Programa em C que lê dois valores reais a e b. Se o valor de b for 0, dá uma mensagem de erro. Caso contrário, calcula o valor de a dividido por b.

    • Programa em C que lê os coeficientes a, b e c de uma equação de segundo grau ax^2 + bx + c = 0. Primeiramente, verifica se a é 0. Em caso positivo, mostra uma mensagem de erro. Em caso negativo, calcula o valor de delta e calcula o número de raízes reais distintas baseado no valor de delta (negativo, nulo ou positivo).

    • Enunciado do Exercício 1, que deve ser entregue pelo Run Codes até dia 21/03 (sexta-feira), às 18h.

      Este exercício valerá até 4 pontos para a Lista 1.

    • Enunciado do Exercício 2, que deve ser entregue pelo Run Codes até dia 21/03 (sexta-feira), às 18h.

      Este exercício valerá até 6 pontos para a Lista 1.

    • Programa em C que lê os lados L1, L2 e L3 de um triângulo. Verifica se os lados de fato correspondem a um triângulo, calcula e mostra o perímetro e a área do triângulo e, por fim, o classifica em equilátero, isósceles, escaleno e triângulo retângulo.

    • Programa em C com o exemplo da estrutura condicional "switch-case" feito no slide da aula, tanto com o comando "break" como sem. Em ambos os casos, o programa tem um código correspondente que usa somente a estrutura "if".

    • Programa em C que lê o código de uma operação (soma, subtração, multiplicação, divisão, potenciação e raiz quadrada), lê os operandos, realiza a operação selecionada e mostra o resultado. Usa a estrutura condicional "switch-case".

    • Enunciado do Exercício 3, que deve ser entregue pelo Run Codes até dia 29/03 (sábado), às 23h59min.

      Este exercício valerá até 3 pontos para a Lista 2.

    • Enunciado do Exercício 4, que deve ser entregue pelo Run Codes até dia 29/03 (sábado), às 23h59min.

      Este exercício valerá até 7 pontos para a Lista 2.

    • Programa em C que lê um número inteiro n e calcula o valor do fatorial de n. Usa o comando "do-while" para garantir que o número digitado seja maior ou igual a 0 e o comando "for" para calcular o fatorial.

    • Exercício para fazer em casa (este exercício não deve ser entregue, ele será discutido na Aula 16):

      faça um programa, em linguagem C, que leia um número k e mostre os k primeiros termos da Sequência de Fibonacci.

      A Sequência de Fibonacci é dada por 1, 1, 2, 3, 5, 8, 13, 21, 34, ... Nesta sequência, os dois primeiros termos são 1. A partir do terceiro, cada termo é calculado como a soma dos dois anteriores.

    • Enunciado do Exercício 5, que deve ser entregue pelo Run Codes até dia 04/04 (sexta-feira), às 23h59min.

      Este exercício valerá até 4 pontos para a Lista 3.

    • Enunciado do Exercício 6, que deve ser entregue pelo Run Codes até dia 04/04 (sexta-feira), às 23h59min.

      Este exercício valerá até 6 pontos para a Lista 3.

    • Programa em C que lê uma quantidade n de números a serem digitados e os n números. Calcula e mostra a média desses números. Em seguida, mostra, para cada número digitado, se ele é maior ou igual à média ou se é menor que a média. Por fim, mostra quantos números digitados estavam acima da (ou com valor igual à) média e quantos estavam abaixo da média.

    • Programa em C que lê uma quantidade n de números a serem digitados e os n números. Calcula e mostra a média desses números. Em seguida, conta e mostra todos os números digitados que são maiores ou iguais à média, depois todos os que são menores que a média. Por fim, mostra quantos números digitados estavam acima da (ou com valor igual à) média e quantos estavam abaixo da média.

    • Enunciado do Exercício 7, que deve ser entregue pelo Run Codes até dia 13/04 (domingo), às 23h59min.

      Este exercício valerá até 5 pontos para a Lista 4.

    • Enunciado do Exercício 8, que deve ser entregue pelo Run Codes até dia 13/04 (domingo), às 23h59min.

      Este exercício valerá até 5 pontos para a Lista 4.

    • Semana Santa - não há aula!

    • Semana Santa - não há aula!

    • Semana Santa - não há aula!

    • Não há aula!

    • Enunciado do Exercício 9, que deve ser entregue pelo Run Codes até dia 25/04 (sexta-feira), às 23h59min.

      Este é o único exercício da Lista 5, que valerá até 10 pontos.

    • Primeira prova: individual, das 10h10min às 11h50min, na sala de aula (5-103).
    • Programa em C que lê um inteiro positivo n, calcula e mostra as n primeiras linhas do Triângulo de Pascal, dado por:

      1

      1 1

      1 2 1

      1 3 3 1

      1 4 6 4 1

      ...

    • Exercício para fazer em casa (este exercício não deve ser entregue):

      faça um programa, em linguagem C, que leia um número n e mostre as n primeiras linhas do Triângulo de Pascal (como no exercício feito em aula), mas faça isso sem usar nenhuma matriz, apenas 1 vetor de n posições.

    • Não há aula!

    • Material sobre registros (structs).

    • Programa em C que lê os 3 lados (inteiros) de dois triângulos e calcula suas áreas e seus perímetros. Usa struct para armazenar os dados de cada triângulo.

    • Programa em C que lê os 3 lados (inteiros) de dois triângulos e calcula suas áreas e seus perímetros. Usa struct para armazenar os dados de cada triângulo e um vetor de dois elementos dessas structs para armazenar os dados dos dois triângulos.

    • Programa em C que lê os 3 lados (inteiros) de dois triângulos e calcula suas áreas e seus perímetros. Usa struct para armazenar os dados de cada triângulo. Para armazenar os lados, usa um vetor (dentro da struct). Também usa um vetor de dois elementos dessas structs para armazenar os dados dos dois triângulos.

    • Programa em C que lê a parte real e imaginária de 2 números complexos, calcula a soma e o produto desses números e mostra os resultados. Usa struct para armazenar os dados de cada número complexo.

    • Programa em C que lê a parte real e imaginária de 2 números complexos, calcula a soma e o produto desses números e mostra os resultados. Usa struct para armazenar os dados de cada número complexo e um vetor para armazenar os números lidos.

    • Material sobre funções (sub-rotinas).

    • Enunciado do Exercício 10, que deve ser entregue pelo Run Codes até dia 10/05 (sábado), às 23h59min.

      Este é o único exercício da Lista 6, que valerá até 10 pontos.

    • Programa em C que lê um número inteiro n e verifica se n é perfeito. Um número é chamado de perfeito se ele é igual à soma de seus divisores próprios.

    • Programa em C que lê um número inteiro n e mostra todos os números perfeitos de 2 a n. Um número é chamado de perfeito se ele é igual à soma de seus divisores próprios.

    • Programa em C que mostra um exemplo de função que recebe um valor como parâmetro, mas não devolve nenhum valor. E outra que não recebe nenhum valor e não devolve nenhum valor.

    • Programa em C que lê dois números (n e k) e calcula a combinação de n, k a k (ou n escolhe k). Usa uma função para calcular o valor da combinação e outra para calcular o fatorial.

    • Programa em C que lê dois números (n e k) e calcula a combinação de n, k a k (ou n escolhe k). Usa uma função para calcular o valor da combinação e outra para calcular o fatorial. Coloca os cabeçalhos das funções no início do programa, para poder declarar as funções em qualquer ordem.

    • Enunciado do Exercício 11, que deve ser entregue pelo Run Codes até dia 16/05 (sexta-feira), às 23h59min.

      Este é o único exercício da Lista 7, que valerá até 10 pontos.

    • Exercício para fazer no horário da aula (este exercício não deve ser entregue):

      faça um programa, em linguagem C, que leia um número inteiro n >= 2 e mostre se ele é um número primo circular

      Um número inteiro n >= 2 é chamado de primo circular se toda vez que tiramos o último dígito de n e colomos em seu início, o novo número também é primo. Por exemplo, o número 13 é um primo circular, porque 13 é primo e quando colocamos o último dígito de 13 (ou seja, o dígito 3) e colocamos no início (ou seja, antes de 1), temos o número 31, que também é primo. O número 1193 também é um primo circular, já que 1193, 3119, 9311 e 1931 são todos primos.

      Para fazer esse programa, utilize pelo menos uma função para verificar se um dado número é primo e outra para, dado um inteiro k, montar um outro inteiro que é resultado de tirar o último inteiro de k e colocar em seu início.

    • Programa em C que cria um vetor de inteiros com 10 posições, chama uma função para preencher esse vetor com valores de 0 a 9 e depois mostra o vetor atualizado.

    • Exercício para fazer no horário da aula (este exercício não deve ser entregue):

      faça um programa, em linguagem C, que leia um número inteiro 2 <= n <= 100, preencha o vetor com valores digitados pelo(a) usuário(a), mostre todos os valores lidos e mostre o menor dos elementos do vetor.

      Para isso, faça:

      1. uma função para preencher o vetor com valores digitados pelo(a) usuário(a);
      2. uma função para mostrar todos os elementos do vetor;
      3. uma função que recebe um vetor e seu tamanho e devolva o menor elemento do vetor.

      Na função "main" você deve somente criar as variáveis necessárias, ler o tamanho do vetor, chamar as funções criadas e mostrar o valor do menor elemento do vetor. Você não deve usar variáveis globais.

    • Enunciado do Exercício 12, que deve ser entregue pelo Run Codes até dia 24/05 (sábado), às 23h59min.

      Este é o único exercício da Lista 8, que valerá até 10 pontos.

    • Entrega da versão humano(a) x humano(a) do trabalho. Mais detalhes no enunciado do trabalho.
    • Material sobre alocação dinâmica de vetores, elaborado pelo Prof. Mauro.

    • Programa em C que lê o tamanho n desejado para um vetor, aloca um vetor de inteiros com n elementos usando alocação dinâmica (em uma função), preenche o vetor com 0's (usando função), mostra os elementos do vetor (usando função) e desaloca o vetor da memória.

    • Programa em C que lê o tamanho n desejado para um vetor, aloca um vetor de inteiros com n elementos (usando alocação dinâmica), preenche o vetor com valores digitados (usando função), mostra os elementos do vetor (usando função), ordena os elementos do vetor (usando função) e mostra os elementos ordenados (usando função).

    • Enunciado do Exercício 13, que deve ser entregue pelo Run Codes até dia 30/05 (sexta-feira) às 23h59min.

      Este é o único exercício da Lista 9, que valerá até 10 pontos.

    • Material sobre alocação dinâmica de matrizes, elaborado pelo Prof. Mauro.

    • Programa em C implementa uma corrida de letras ("cavalos"). Usuário(a) escolhe quantas letras competindo, e o número de posições da pista. A matriz que armazena a pista é alocada dinamicamente (usando malloc).

    • Exercícios para fazer em casa (estes exercícios não devem ser entregues):

      1. Com base no programa para a corrida feito em aula, crie funções para alocar o vetor de posições do cavalo, para alocar a matriz da pista, para fazer os "cavalos" andarem, para desalocar os vetores e matrizes alocados, de forma que a função main tenha praticamente só chamadas a funções.
      2. Altere o programa da corrida para, em vez de manter uma matriz com os dados da pista, esses dados sejam apenas impressos na tela. Com isso, seu programa usa menos memória.

    • Enunciado do Exercício 14, que deve ser entregue pelo Run Codes até dia 06/06 (sexta-feira) às 23h59min.

      Este é o único exercício da Lista 10, que valerá até 10 pontos.

    • Programa em C que lê um polinômio P e um valor x. Depois calcula e mostra o valor de P(x), a derivada P' de P e o valor de P'(x).

    • Exercícios para fazer em casa (estes exercícios não devem ser entregues):

      Usando o programa sobre polinômios feito em sala,

      1. calcule e mostre todas as derivadas do polinômio, até chegar em um polinômio nulo (P^(k)(x) = 0);
      2. calcule e mostre a primitiva do polinômio.

    • Programa em C que lê um inteiro n e calcula o fatorial de n, usando uma função recursiva (ou seja, uma função que chama a ela mesma).

    • Programa em C que lê um inteiro k e calcula o k-ésimo termo da Sequência de Fibonacci, usando uma função recursiva.

    • Exercício para fazer em casa:

      Foi comentado na aula de hoje sobre os algoritmos de ordenação MergeSort e QuickSort (ambos usam funções recursivas e são mais eficientes do que os outros algoritmos de ordenação que havíamos visto). Sugiro que vocês leiam mais sobre esses algoritmos, tentem implementá-los e vejam implementações prontas.

    • Não haverá exercícios a serem entregues nesta aula. A docente, o estagiário PAE e os monitores ficarão disponíveis no laboratório, no horário da aula, para tirar dúvidas sobre o trabalho e o restante da disciplina. Isso inclui tirar dúvidas sobre notas de exercícios e da primeira parte do trabalho.

    • Programa em C que lê o numerador e denominador de 2 frações, armazena cada uma em uma struct e calcula a soma e produto dessas frações (usando uma função).

    • Programa em C que lê um inteiro n >= 2, o numerador e denominador de n frações, as armazena em um vetor de structs. Calcula a soma e produto dessas frações, usando uma função recursiva.

    • Exercícios para fazer em casa (estes exercícios não devem ser entregues):

      Usando como base o exercício feito em aula que calcula a soma e produto de várias frações, faça essas operações de maneiras diferentes:

      1. usando laço de repetição em vez de recursão;
      2. usando MDC para calcular o denominador da soma;
      3. mostrando o resultado como uma fração irredutível.
    • Nesta aula não foi feito nenhum exercício. Foi feita uma revisão, com exemplos, de assuntos que as pessoas presentes tinham dúvidas.

    • Não há aula!

    • Entrega da versão humano(a) x computador do trabalho. Mais detalhes no enunciado do trabalho.
    • Segunda prova: individual, das 10h10min às 11h50min, na sala de aula (5-103).
    • Entrega da atividade de extensão. Mais detalhes acima, no e-disciplinas.
    • Campeonato: das 10h10min às 11h50min, na sala de aula (5-103).

    • Apresentação do trabalho conjunto com Geometria Analítica: a partir 10h10min, na sala 4-005. Mais detalhes acima, no e-disciplinas.

    • Prova substitutiva: individual, das 10h10min às 11h50min, na sala de aula (5-103).

      Qualquer um(a) pode fazê-la, mas quem pedir para que a prova seja considerada, terá a prova corrigida e a nota obtida necessariamente substituirá a menor nota de prova (primeira ou segunda prova).
    • Prova de recuperação: individual, das 10h às 13h, na sala 3-009.