====== Laboratório de Programação ====== Nesta disciplina estudaremos a linguagem C, porém este curso não é um curso de Linguagem C. Muitos alunos pensam isso, mas apenas vamos usar a linguagem C para aplicar conhecimentos adquiridos em outras disciplinas, como Estrutura de Dados, em exercícios práticos de laboratório.
Grupos do Google
Participe do grupo Laboratorio de Programacao-DESC-UERJ
E-mail:
Visitar este grupo
===== Referências ===== * KERNIGHAN,B.W. & RITCHIE,D.M. **A Linguagem de Programação C. Padrão ANSI**. Rio de Janeiro, Editora Campus, 1990. 289p. Livro Texto ([[Errata]]) * [[wp>C_language|Linguagem C]] (em inglês) * [[wpbr>Linguagem_C|Linguagem C]] (em português) [[http://prezi.com/6119qvt354ey/historia-do-unix/|História do Sistema Unix]] ~~NOCACHE~~ ===== Calendário 2011/2 ===== {{iCalEvents>http://www.google.com/calendar/ical/otm5dmpccapbue6e753l12duho%40group.calendar.google.com/public/basic.ics}} ===== Apresentações ===== ==== A história do Unix ====
===== Exercícios de aula ===== ==== lab1 ==== Fazer um programa em C que: - Crie um vetor de inteiros aleatórios com 100 elementos. - Ordene este vetor. - Faça uma busca binária neste vetor ordenado. ===== Trabalhos ===== * Turma 2012-1 : {{2006-1-sudoku.pdf}} * Turma 2011-2 - [[Trabalho 2007-1| A Pequena donzela encarcerada]] * Turma 2011-1 - [[Trabalho 2011-2|Kings' Birds ]] * Turma 2010-2 - [[Trabalho 2006-2|Criptografia Assimétrica ]] * Turma 2010-1 - [[Trabalho 2010-1| Aquém do 3D!]] * Turma 2009-2 - [[Trabalho 2009-2| Me Parece um Celacanto]] * Turma 2009-1 - [[Trabalho 2008-2| O Mundo de Darwin2]] * Turma 2008-2 - [[Trabalho 2008-2| O Mundo de Darwin]] * Turma 2008-1 - [[Trabalho 2008-1|Um gosto de Armagedon]] * Turma 2007-2 - [[Trabalho 2007-2|Dilema dos Prisioneiros]] * Turma 2007-1 - [[Trabalho 2007-1| A Pequena donzela encarcerada]] * Turma 2006-2 - [[Trabalho 2006-2|Criptografia Assimétrica]] * Turma 2006-1 : {{2006-1-sudoku.pdf}} ===== Provas ===== - [[c:Primeira Prova - 2010-2]] - [[c:Segunda Prova - 2010-1]] - [[c:Primeira Prova - 2010-1]] - [[c:Primeira Prova - 2009-1]] - [[c:Primeira Prova - 2008-2]] - [[c:Segunda Prova - 2008-1]] - [[c:Primeira Prova - 2008-1]] (com resolução) - [[c:Primeira Prova - 2007-2]] (com resolução) - [[c:Primeira Prova - 2007-1]] - [[c:Segunda Prova - 2006-2]]. - [[Primeira Prova - 2006-2]]. - [[c:Primeira Prova - 2005-2]]. - [[c:Primeira Prova - 2005-1]] (com resolução). {{:c:notas2008-2.png?498x368|Notas turma 2008-1 P1}} **Gráfico para turma de 2008-2, primeira prova.** ===== Avaliação ===== - Duas provas P1 e P2 (peso 7) - Um Trabalho T (peso 2) - Listas de Exercícios: L1,L2...,Ln (peso 1) ===== Cálculo da Nota ===== {Média=} {0.7*{1/2}sum{n=1}{2}{P_n}}+0.2*T+0.1*{1/N}sum{n=1}{N}{L_n} == Média com prova final == {Média Final=} {Média+PF}/2 ===== Critérios ===== * Média >= 7,0 Aprovado * Média <4,0 Reprovado * Média >=4,0 e <7,0 Prova Final * Média Final >=5,0 Aprovado * Média Final <5 Reprovado ===== Write in C ===== {{youtube>large:XHosLhPEN3k}} ===== Compilador e S.O. ===== Durante o curso será utilizado o compilador GCC, e todos os programas serão corrigidos com este compilador em ambiente Linux. ===== Dicas ===== Para usar a biblioteca **math.h** com o gcc, use o comando **gcc -lm **. Esta opção linka seu programa com a **math.h**. Para enviar caracteres de escape e controlar o console, podemos usar o **printf** e os caracteres de controle que são escritos dentro da string de formatação. Para isso, colocamos **\e[** antes do caracter de controle do console. Os caracteres de escape do console no linux podem ser consultados com o comando **//man console_codes//**. exemplo: escreve em vermelho: **''printf("\e[31m %d",3);''** escreve em preto: **''printf("\e[30m %d",3)''** limpa a tela: **''printf("\e[H\e[2J");''** melhor ainda, use um **#define** no início de seu programa e chame ele como uma função normal: ** #define clrscr() printf("\e[H\e[2J") ** Quando usamos um arquivo editado no Windows, pelo Notepad ou similares, o caractere de return é composto, na verdade, de dois caracteres. No Linux é composto apenas por um. Quando o arquivo é aberto, aparecem uns ^M no final de cada linha, que são os caracteres que sobraram. Para eliminá-los no Linux, basta fazer em um console: **''tr -d '\r' < arquivo_dos''** se quiser pode redirecionar para ter outro arquivo como saída: **''tr -d '\r' < arquivo_dos > arquivo_linux''** Se você entrou no KDE e ele está uma bagunça e não dá nem mesmo para ver a barra de programas, você pode seguir o seguinte procedimento: - Dê logout no sistema. - Abra o console, apertando **CTRL+ALT+F2**. - Faça seu login no modo texto. - entre o comando **"cd .kde"**. Este comando é essencial. Não faça nada enquanto não fizer isto e ver no seu prompt a indicação de que você está dentro do diretório **".kde"**. - Olhe de novo se você está dentro deste diretório. - Agora que você tem certeza absoluta que está em **".kde"** (não diga que eu não avisei para você garantir isso). Faça: **"rm -R -f *"**. Isto vai apagar todas as suas configurações do kde, que estavam defeituosas. - Faça logout do modo texto digitando **"exit"**. - Pressione **CTRL+ALT+F7**, para entrar no modo gráfico. - Faça login no modo gráfico e //voilà//! o kde deve estar normal agora. Para acessar o pendrive nos laboratórios pelo linux, pode ser de duas maneiras: - Em uma janela de console digitar "**mount /mnt/sda1**"; - Pelo konqueror acessar: midia de armazenamento e escolher o drive **sda1**. obs: no caso da montagem ser a opção nro 1, o acesso ao pendrive também pode ser feito pelo konqueror. //Definição das cores pelo console #define PRETO "\e[40m \e[49m" #define VERMELHO "\e[41m \e[49m" #define VERDE "\e[42m \e[49m" #define MARROM "\e[43m \e[49m" #define AZUL "\e[44m \e[49m" #define MAGENTA "\e[45m \e[49m" #define CIANO "\e[46m \e[49m" #define CINZA "\e[47m \e[49m" printf(VERMELHO); printf(VERDE); printf(CINZA); printf(MARROM); printf(AZUL); printf(PRETO); printf(MAGENTA); printf(CIANO); printf(CIANO);