Baixe o app para aproveitar ainda mais
Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
aulas.html aulas-main.html Curso de Linguagem C - Engenharia Elétrica - UFMG Aulas: Aula 1: Introdução e Sumário Aula 2 - Primeiros Passos Aula 3 - Variáveis, Constantes, Operadores e Expressões Aula 4 - Estruturas de Controle de Fluxo Aula 5 - Matrizes e Strings Aula 6 - Ponteiros Aula 7 - Funções Aula 8 - Diretivas de Compilação Aula 9 - Entradas e Saídas Padronizadas Aula 10 - Tipos de Dados Avançados Aula 11 - Tipos de Dados Definidos pelo Usuário Considerações finais Formulário de Avaliação Bibliografia Curso de C da Engenharia Elétrica da UFMG - 1996-1999 bullet.gif c.html calendario.html Cronograma do Curso Primeiro semestre de 2002 No primeiro semestre de 2002 as aulas vão se iniciar em 24 de junho. O curso terá duração de oito semanas. Período Módulo Material didático utilizado Atividades 24/06 a 01/07 Módulo 1 Material inicial de apresentação do curso Bibliografia Aula 1 - Introdução e Sumário Aula 2 - Primeiros Passos Lista 1 01/07 a 08/07 Módulo 2 Aula 3 - Variáveis, Constantes, Operadores e Expressões Lista 2 08/07 a 15/07 Módulo 3 Aula 4 - Estruturas de Controle de Fluxo Lista 3 15/07 a 22/07 Módulo 4 Aula 5 - Matrizes e Strings Lista 4 22/07 a 29/07 Módulo 5 Aula 6 - Ponteiros Lista 5 29/07 a 05/08 Módulo 6 Aula 7 - Funções Aula 8 - Diretivas de Compilação Lista 6 05/08 a 12/08 Módulo 7 Aula 9 - Entradas e Saídas Padronizadas Lista 7 12/08 a 19/08 Módulo 8 Aula 10 - Tipos de Dados Avançados Aula 11 - Tipos de Dados Definidos pelo Usuário Considerações finais Formulário de Avaliação Lista 8 Curso de C da EE UFMG - 1996-2002 carta.gif cont-aul.html Curso de Linguagem C Cronograma de Atividades Listas de Exercícios Aula Assunto 1 Introdução e Sumário 2 Primeiros Passos 3 Variáveis, Constantes, Operadores e Expressões 4 Estruturas de Controle de Fluxo 5 Matrizes e Strings 6 Ponteiros 7 Funções 8 Diretivas de Compilação 9 Entradas e Saídas Padronizadas 10 Tipos de Dados Avançados 11 Tipos de Dados Definidos pelo Usuário Considerações finais Formulário de Avaliação Bibliografia Dúvidas? Consulte o FAQ Perguntas para a lista do Curso de C (a lista somente funciona durante o curso) . conteudo.html Curso de Linguagem C Informações Gerais Inscrições e Des. Aulas Área de Download Cronograma de Atividades Listas de Exercícios Monitores E-mails enviados às listas Lista de usuários de ICQ Dúvidas? Consulte o FAQ Perguntas para a lista do Curso de C (a lista somente funciona durante o curso...) . . cont-exerc.html Curso de Linguagem C Aulas Listas de Exercícios: Lista 1 Gabarito 1 Lista 2 Gabarito 2 Lista 3 Gabarito 3 Lista 4 Gabarito 4 Lista 5 Gabarito 5 Lista 6 Gabarito 6 Lista 7 Gabarito 7 Lista 8 Gabarito 8 Dúvidas? Consulte o FAQ . Perguntas para a lista do Curso de C (a lista somente funciona durante o curso) . cont-faq.html Curso de Linguagem C Aulas Perguntas Frequentes: Sobre a Inscrição e Desinscrição Sobre o uso de Compiladores Sobre a Linguagem C Sobre o Conteúdo e Duração Sobre a Organização Assuntos Diversos Perguntas para a lista do Curso de C (a lista somente funciona durante o curso) . download.html Área de Download 1- Download das aulas: Você pode acessar as aulas das seguintes maneiras: Ir diretamente às páginas do curso e percorrer o site, aula por aula; Baixar as aulas como um único arquivo zipado: http://www.ead.eee.ufmg.br/cursos/C/cursoc.zip. Grave este arquivo em seu disco e descompacte-o com o Winzip ou com o pkunzip, com a opção -d. Utilizar o arquivo pdf com todas as aulas (também disponível no formato .doc), preparado pelo William Paiva, (interessante para quem quer imprimir). É importante apenas frisar que este arquivo não é atualizado à medida que as páginas são atualizadas. Utilizar o arquivo para o Word com todas as aulas, preparado pelo Henrique José dos Santos, da cidade de Santos, SP, (interessante para quem quer imprimir). É importante apenas frisar que este arquivo não é atualizado à medida que as páginas são atualizadas. 2- Download do compilador: Para criar seus programas em C e executá-los você vai precisar de um compilador C padrão ANSI. Se não tiver um, pode usar o gcc (Linux), buscar o DevC++ (Windows), o DJGPP, o TClite ou o Turbo C (DOS), em versões gratuitas. Veja como, clicando aqui. Curso de C da Engenharia Elétrica da UFMG - 1996-2002 faq.html faq-fram.html faq-main.html Perguntas Frequentes Sobre a Inscrição e Desinscrição Sobre o uso de Compiladores Sobre a linguagem C Sobre o conteúdo e duração Sobre a organização do curso Assuntos diversos a) Sobre a Inscrição/Desinscrição 0- Como é que eu me inscrevo no curso de C? Quando vai ter outra turma? 1- Tentei me inscrever no curso Virtual de C e obtive a seguinte resposta: From listproc@ead.eee.ufmg.br Mon Feb 16 08:03 EST 1998 Subject: SUBSCRIBE ESPERACURSOC Nome Sobrenome Voce assinou a lista esperacursoc@ead.eee.ufmg.br ... etc Seu endereco e' xxx@zzz.com.br. O que isto significa? 2- O que seriam estas requisições administrativas? 3- Será que você poderia trocar o meu e-mail inscrito na lista de xxx@zzz.com.br para yyy@www.com.br? 4- HELP! Como me desinscrever deste curso? 5 - Eu pedi para trocar meu e-mail e fui desinscrito do curso? Estou participando ou não do curso? b) Sobre o uso de compiladores no curso 0- É necessário um editor de texto específico para escrever as rotinas em C? 1- Como conseguir uma cópia do compilador C? 2- Como instalar o DJGPP? 3- Como instalar o TClite? 4- Tenho o compilador xxx da empresa yyy. Posso usá-lo no curso? 5- O compilador gcc para DOS (DJGPP) possui algum ambiente integrado de desenvolvimento? 6- O compilador C do LINUX 2.0.x é padrao ANSI? 7- Existe o tal "RHIDE" que eu usava com o djgpp(DOS) numa versao para Linux? 8- Gostaria de saber se existe muita diferenca entre o C padrao e TurboC. 9- Alguns esclarecimentos sobre "C padrao ANSI" 10- Os compiladores dos unixes tem o header conio.h? 11- Mais alguem estah tendo problemas para usar o Rhide? A opcao de menu RUN estah desbilitada ... 12- Tô com o Borland C++Builder, da pra compilar em C com ele? 13- Como usar o Visual C++ da Microsoft para compilar programas em C? 14- Como usar o Borland C++ 5.0 para compilar programas em C? 15- Dá pra usar o DJGPP e o Rhide no Windows NT 4.0? 16- Quais os argumentos que devem ser utilizados na hora de compilar com o gcc, por exemplo: gcc O .... ?? 17- Como compilar programas usando o DevC++? 18- Como usar a biblioteca conio no DevC++? 19- Como debugar e executar programas passo a passo usando o DevC++? c) Sobre a linguagem C 1- Tenho uma dúvida sobre a linguagem C. Onde achar a resposta? 2- Quais as diferenças entre o C e o C++? d) Sobre o conteúdo e duração do curso 1- Gostaria de saber se o curso de C tem duracao estabelecida, ou se extendera o quanto for necessario. 2- Gostaria de saber o quanto o curso entra no Windows 95/NT e nas WIN32. O que mais vamos estudar além do C padrao? 3- Preciso saber alguma linguagem basica de programação para acompanhar o curso? 4- Qual a URL do conteúdo zipado do curso? 5-Se eu nao conseguir terminar o curso em 7 semanas. Se precisar de mais tempo pra ler todas as aulas o que farei ? 6- Neste curso estudaremos alguma coisa sobre programação de portas seriais ou paralelas? 7- Neste curso estudaremos alguma coisa sobre programação gráfica? e) Sobre a organização do curso 1- O curso de C em questão oferece certificado de conclusão e participação ao término do mesmo? 2- O curso vai ser dado na WWW ou via e-mail? 3- Quais as regras para uso da lista cursoc@ead.eee.ufmg.br? 4- Por que os e-mails tem que ser mandados para toda a lista e nao somente para os monitores? 5- Por que não acentuar o texto do seu e-mail? 6- Vale qualquer pergunta sobre a linguagem C na lista? 7- Onde estão as listas de Exercícios? Qual o endereço para enviar as respostas? 8- O que são estas mensagens sem texto que aparecem de vez em quando na lista? 9- Existe alguma maneira de eu conseguir todos os e-mails que foram enviados para a lista? 10- Posso mandar uma dúvida diretamente para o professor Renato? 11- Como configurar meu leitor de e-mails para filtrar as mensagens do curso de C, enviando-as para uma pasta específica? f) Diversos 1- Gostaria de saber porque voces não colocam um curso de Matlab( versão nova). Respostas: a) Sobre a Inscrição 0- Como é que eu me inscrevo no curso de C? Quando vai ter outra turma? Consulte nossa página de inscrições. 1 - Tentei me inscrever no curso Virtual de C e obtive a seguinte resposta: From listproc@ead.eee.ufmg.br Mon Feb 16 08:03 EST 1998 Subject: SUBSCRIBE ESPERACURSOC Nome Sobrenome Voce assinou a lista esperacursoc@ead.eee.ufmg.br ... etc Seu endereco e' xxx@zzz.com.br. O que isto significa? Isto significa que você esta' inscrito na nossa lista de espera para o proximo curso. Aguarde o início do curso. 2 - O que seriam estas requisições administrativas? Para me inscrever no curso virtual de C preciso fazer mais alguma coisa além do que já fiz ? Não, você não precisa fazer mais nada. O listproc é um programa de administracao de listas eletrônicas. O que ele quis dizer com estas "requisições administrativas" e' relativo aa administracao das proprias listas: por exemplo, para voce entrar numa lista, saber quem esta' inscrito numa lista, se desligar de uma lista, etc, deve enviar as suas requisicoes para listproc@ead.eee.ufmg.br e não para o endereco da lista. 3 - Será que você poderia trocar o meu e-mail inscrito na lista do curso de C de xxx@zzz.com.br para yyy@www.com.br? Consulte a página de inscrições, desinscrições e mudanças de endereços. 4- HELP! Como desinscrever deste curso? Veja na nossa página de inscrições e desinscrições. 5 - Eu pedi para trocar meu e-mail e fui desinscrito do curso? Estou participando ou não do curso? Quando você pede para trocar de e-mail, o e-mail antigo é retirado do curso e o novo é incluido. Você recebe duas correspondências: uma com a exclusão do antigo endereço e outra com a inclusão do novo endereço no curso. b) Sobre o uso de Compiladores no curso 0 - É necessário um editor de texto específico para escrever as rotinas em C? Você pode usar qualquer editor que gere arquivo ASCII. Exemplos: Edit (DOS), Notepad (Windows) ou o vi (Unix). Alguns compiladores possuem um ambiente integrado para desenvolvimento de programas em C (IDE, do inglês Integrated Development Environment). Neste caso, voce pode usar este ambiente para criar seus programas. E' o caso dos compiladores da Microsoft, da Borland, do LCC-Win32, do DevC++ e o caso do Rhide para o compilador gcc. 1 - Como conseguir uma cópia do compilador ? Para fazer o curso, você precisará de um compilador C, padrao ANSI, instalado em seu computador. No caso de máquinas Unix/Linux, este compilador normalmente já vem com o sistema operacional e se chama cc (C Compiler) ou gcc (GNU C Compiler). Estes compiladores geralmente seguem o padrão ANSI. Máquinas rodando o DOS ou Windows, necessitam da instalação um compilador C. Existem várias opções: a) No ambiente Windows você tem duas boas opções de compiladores gratuitos. A primeira opção é o compilador DevC++ , que é um compilador C/C++ (ANSI) e com uma boa interface com o usuário. Você pode baixa-lo diretamente em http://ftp1.sourceforge.net/dev-cpp/devcpp4.zip ou em http://www.simtel.net/pub/dl/17456.shtml ou na página oficial http://www.bloodshed.net/devcpp.html . Depois de baixar, basta descompactá-lo e rodar o programa Setup.exe . Instruções simplificadas para compilar e executar programas neste ambiente estão disponíveis abaixo. Se voce tiver problemas com o compilador por favor verifique o seu FAQ. Uma opção alternativa é o LCC-Win32, que é um compilador C que pode ser baixado a partir do endereço http://www.cs.virginia.edu/~lcc-win32/index.html . O compilador é padrão ANSI C (ele não compila programas em C++, apenas em C). A documentação de uso deste compilador pode ser buscada aqui. Dentre estas duas opções, recomendamos o DevC++, que, além de compilar programas em C, também compila em C++ e poderá ser utilizado em seus estudos futuros dessa linguagem. b) Para DOS, também existem vários compiladores gratuitos: Existe uma versão grátis do compilador gcc para DOS, sob o nome de DJGPP. Este compilador é disponível na Internet. Para saber quais arquivos são necessários, como baixá-los e instalá-los, leia as instruções abaixo. Para instruções mais completas sobre o DJGPP você pode consultar o DJGPP-FAQ List. Leia também o arquivo readme.1st. Somente recomendamos este compilador para quem tem um certo conhecimento de configuração utilizando o DOS. Se você quer algo mais simples, pegue um dos compiladores abaixo. Outra opção de compilador grátis para DOS é o TClite, da Borland. Este compilador é mais simples de instalar do que o DJGPP e pode ser obtido em http://www.cprogramming.com/tclite.html. Para facilitar sua vida, também estamos disponibilizando o arquivo aqui. As instruções de instalação podem ser consultadas abaixo. Uma desvantagem do TClite é que os programas que você gera somente podem ser executados dentro do ambiente do TClite. A Borland recentemente disponibilizou versões gratuitas (antigas) do Compilador Turbo C. Você pode baixar a versão 2.01 do Turbo C em http://community.borland.com/museum/borland/software/TC201.zip . A vantagem desta versão em relação ao TClite é que ela gera programas que podem ser executados fora do ambiente de compilação. A desvantagem é que o ambiente de compilação não trabalha com o mouse, com sua interface sendo toda baseada no teclado. A instalação é simples: você deve descompactar o arquivo tc201.zip (por exemplo, usando o winzip) e serão gerados 3 diretórios: disk1, disk2 e disk3 . A seguir, você deve copiar o conteúdo de cada um destes diretórios para um disquete e rodar o programa install, a partir do primeiro disquete. Depois é só seguir as instruções que aparecerão na tela, fornecendo, quando pedido, o segundo e depois o terceiro disquete. Finalmente você deve ir no diretório raiz ( C:\ )e editar o autoexec.bat. Nele escreva lá no final mesmo as seguintes linhas, exatamente como abaixo (não coloque nenhum espaço em branco a mais!) : SET PATH=C:\TC;%PATH% Onde consta C:\TC acima ponha o nome do diretório em que você instalou o Turbo C. Reinicie o computador, abra uma janela DOS, vá ao diretório em que você vai trabalhar e digite tc. O ambiente de edição e compilação é um pouco pior do que o do RHIDE, porém você pode adaptar as instruções para uso do Rhide para usar o tc. c) Existem vários compiladores comerciais (pagos) disponíveis e os mais comuns são os da Borland (Borland C/C++ e Borland C++ Builder) e da Microsoft. d) Se você não quiser usar estes compiladores, pode tentar o catálogo de compiladores grátis na Internet. 2- Como instalar o DJGPP? O DJGPP não é tão simples de se instalar quanto o DevC++ . Portanto, seguem algumas dicas: Pegue os seguintes arquivos no site do curso (caso nosso site esteja muito carregado, é melhor você tentar um site alternativo) : 1----djdev202.zip 2----gcc281b.zip 3----bnu281b.zip 4----rhide14b.zip 5----csdpmi4b.zip, caso você não vá rodar o DJGPP em uma janela DOS do Windows 95 ou 98, ou seja, caso você esteja trabalhando com o Windows 3.11, ou simplesmente com o DOS. Se voce quiser compilar programas em C++ (e não apenas em C), deve também pegar o arquivo: 6----gpp281b.zip Consulte o readme.1st para verificar o que são os outros arquivos e qual a utilidade deles. Se quiser maiores detalhes ainda, pegue o arquivo de FAQ do DJGPP, ou os arquivos do programa INFO e instale-os em seu computador também. Depois de pegar os 4 (ou 5, se você também precisar do csdpmi4b.zip, ou 6, se for trabalhar com o C++) arquivos acima, descompacte-os mantendo a estrutura de diretórios presente nos arquivos *.zip (isto é, se estiver usando o pkunzip, use o comando pkunzip -d *.zip. Se estiver usando o Winzip, marque a caixa "Use Folder Names" na hora de descompactar) em uma pasta (por exemplo crie a pasta C:\DJGPP ). OBS: Não descompacte em uma pasta com nome com mais de 8 caracteres, pois o DJGPP não reconhece as pastas com nomes longos do Windows (ou mesmo pastas com espacos no nome, como Meus Documentos ou Arquivos de Programas). Vá no C:\ e edite o autoexec.bat. Nele escreva lá no final mesmo as seguintes linhas, exatamente como abaixo: SET DJGPP=C:\DJGPP\DJGPP.ENV SET PATH=C:\DJGPP\BIN;%PATH% OBS: Onde consta C:\DJGPP acima ponha o nome do diretório em que você descompactou os seus arquivos. Não deixe nenhum espaço além dos constantes entre a palavra SET e DJGPP e SET e PATH. Se você estiver usando o Windows NT, siga as instruções adicionais para o Windows NT 4.0. Reinicie o computador (dê boot), abra uma janela DOS, vá ao diretório em que você vai trabalhar (isto é, o diretório onde você vai armazenar seus programas) e chame o programa Rhide. Siga as instruções de uso do Rhide. Se não funcionar, verifique passo a passo o que foi feito. Um problema que as vezes acontece é não se ter espaço de ambiente suficiente para as alterações que estão sendo feitas no Autoexec.bat. Para verificar se este problema está causando erros no seu caso e como solucioná-lo, clique aqui. Outra coisa que deve ser lembrada é que o DJGPP é um programa DOS e não reconhece os nomes de arquivos longos do Windows 95. Portanto, dê nomes de no máximo 8 caracteres para seus arquivos fonte. O ideal é instalar o DJGPP no diretório C:\DJGPP. FIM! Mais fácil que roubar o doce de uma criança, não? Porém, se você achou tudo isto muito complicado, pode tentar o compilador DevC++, de instalação e uso bem mais simples. 3- Como instalar o TClite? O TClite também precisa de algumas instruções de instalação, ao contrário do DevC++. Seguem ... Descompacte o arquivo tclite.zip mantendo a estrutura de diretórios presente no arquivo. Isto é, se estiver usando o pkunzip, use o comando pkunzip -d tclite.zip. Se estiver usando o Winzip, marque a caixa "Use Folder Names" na hora de descompactar. O TClite deve ser descompactado em um diretório (por exemplo o diretório C:\TCLITE ). Vá no C:\ e edite o autoexec.bat. Nele escreva lá no final mesmo a seguinte linha, exatamente como abaixo (OBS:substitua TCLITE abaixo pelo nome do diretório onde você o instalou): SET PATH=C:\TCLITE\BIN;%PATH% Não deixe nenhum espaço além dos constantes entre a palavra SET e PATH. Não instale o TClite em um diretório com um nome com mais de 8 caracteres, pois ele é um programa para DOS que não entende o sistema de nomes com mais de 8 caracteres do Windows 95. Reinicie o computador, abra uma janela DOS, vá ao diretório em que você vai trabalhar e digite tc. O ambiente de edição e compilação é semelhante ao do RHIDE e você pode usar as instruções para uso do Rhide para usar o tc. Se você baixou o TCLite, o instalou e está recebendo mensagens de erro com relação à falta de alguns arquivos .h (por exemplo, ele reclama da falta do <stdio.h>, então você deve fazer o seguinte: Digite tc Vá em Options -> Directories... Modifique: Include Directories C:\TCLITE\INCLUDE; (substitua o TCLITE pelo diretório onde você instalou o TCLITE) Modifique: Library Directories: C:\TCLITE\LIB; (substitua o TCLITE pelo diretório onde você instalou o TCLITE) 4- Tenho o compilador xxx da empresa yyy. Posso usá-lo no curso? Voce pode usar qualquer compilador C padrão ANSI, conforme visto na resposta 1. Verifique na documentação do seu compilador se ele é padrão ANSI. Nao ensinaremos a trabalhar com este compilador ou com qualquer outro, especificamente. Voce deve sempre se referir à documentação do seu compilador para verificar como produzir o seu programa executável a partir dos seus fontes. Mostramos, apenas como exemplo, como compilar usando o DevC++, o ambiente RHIDE do DJGPP (o que também é válido para o TClite), o Borland C++ 5.0, o Microsoft Visual C++ 5.0, e o Borland Builder. 5- O compilador gcc para DOS (DJGPP) possui algum ambiente integrado de desenvolvimento, onde eu consiga editar o programa, compilá-lo e debugá-lo? Sim! Existe um programa chamado RHIDE que pode ser usado junto com o DJGPP como ambiente integrado de desenvolvimento (IDE = Integrated Development Environment). Você pode consegui-lo no mesmo site da Internet onde você conseguiu o DJGPP, arquivo rhide14b.zip. As instruções de uso do Rhide podem ser consultadas clicando aqui. 6- O compilador C do LINUX é padrão ANSI? O compilador C do linux (chamado gcc) é ideal para o curso, já que ele segue o padrao ANSI. Com ele você não terá problema algum. 7- Existe algum ambiente de desenvolvimento semelhante ao RHIDE para Linux? 1- Se você usa o ambiente gráfico do Linux, procure executar o XWPE (X Window Programming Environment) - que é um ambiente de desenvolvimento, muito parecido com o do Turbo C do DOS. Para acionar o XWPE: 1 - Entre no ambiente grafico do linux (XFree86 ou outro); 2 - Acione o menu start na barra de tarefas; 3 - Acesse a opcao Xapplications; 4 - Acesse a opcao XWpe. Para quem não tem o XWPE, pode buscá-lo no ftp da UNICAMP: http://ftp.unicamp.br/ 1. Clique em Global Search (pesquisa ao repositorio); 2. digite o nome "xwpe" + enter; 3. depois que obtiver a lista dos arquivos disponiveis, você tem que escolher a versão que corresponde ao teu Linux (slackware, debian, redhat..). É muito fácil de instalar (soh tem q compilar, mas eh soh ler os arquivos que acompanham o programa) 2- Também existe o "RHIDE" para LINUX, mas diversos dos alunos do curso reportaram problemas utilizando-o. Voce pode encontrar maiores informacoes no endereco: http://www.tu-chemnitz.de/~sho/rho/rhide/rhide.html 8- Gostaria de saber se existe muita diferenca entre o C padrao e TurboC. Existem diferencas entre o TurboC e o C padrao sim, mas o TurboC tem as funcoes do C padrão, e algo a mais. 9- Alguns esclarecimentos sobre "C padrao ANSI" Um "padrao" e' um acordo documentado contendo especificacoes, tecnicas ou outro criterio preciso para ser usado consistentemente como regra, orientacao ou definicao de caracteristicas, para assegurar que o produtos, processos ou servicos sejam adequados para seus propositos. Um padrao e' periodicamente revisto e atualizado, de forma a incorporar novas necessidades e evolucoes. No nosso caso, "C padrao ANSI" significa que um grupo de especialistas em C pertencentes a ANSI (American National Standards Institute) se reuniu, discutiu muito, elaborou um documento "rascunho", submeteu a apreciacao da comunidade interessada e por fim aprovou um documento final extremamente detalhado que e' o padrao, devendo ser RIGOROSAMENTE cumprido por todos que dizem "seguir o padrao". Seguir um padrao para software e' muito importante, pois ele garante a compatibilidade e a portabilidade do software entre diversos compiladores e plataformas. Dai' a importancia deste assunto. O padrao ANSI apenas especifica uma biblioteca padrao minima, o que nao impede que compiladores que seguem o padrao nao possam incluir recursos adicionais. A maioria dos compiladores fornece bibliotecas que contem muito mais funcoes que as definidas pelo ANSI, visando facilitar a vida do programador e ser um diferencial para o produto. Assim sendo, compiladores que seguem o padrao, como o Turbo C, o gcc, etc, possuem tambem outros recursos (que podem ser - e sao - diferentes entre si), mas o que esta' definido no padrao e' seguido a risca. Mais uma observacao: algumas funcoes encontradas na versao original do C para UNIX nao sao definidas pelo padrao ANSI por serem consideradas redundantes. 10- Eu gostaria de saber se os compiladores dos unixes tem o header conio.h (acho que eh esse que tem o getche())? Como esta citado no texto, a biblioteca conio nao faz parte das bibliotecas do C ANSI. Na realidade esta biblioteca foi introduzida pela Borland em uma das versoes do Turbo C (3.0?). Logo, os compiladores UNIX nao deverao ter esta biblioteca. O conio.h significa console I/O, que e' diferente do stdio.h, que significa standard I/O. Para compiladores baseados em DOS, as funcoes de E/S direto pela console geralmente usam o arquivo de cabecalho CONIO.H (de toda forma, verifique no manual do seu compilador, pois o nome pode variar de um compilador para outro). Para quem usa C no linux... pegue esta lib: http://sunsite.unc.edu/pub/Linux/libs/ui/linux-conio-1.02.tgz e' uma conio.h feita com ncurses, de modo que a maioria das funcoes da conio do dos estao emuladas aqui nesta versao! A biblioteca "conio.h" eh device-dependent, geralmente com funcoes especificas para cada hardware. Nao convem utiliza-la em um programa que se pretende "portar" para outras plataformas de hardware/software. 11- Mais alguem estah tendo problemas para usar o Rhide? Consigo compilar, mas não executar os programas. A opcao de menu RUN estah desbilitada 8( 1- Veja se você seguiu rigorosamente as instruções de instalação do DJGPP. 2- Tive o mesmo problema, resolvendo-o da forma abaixo: -fechar o projeto existente (Project | Close); -abrir o arquivo novamente (File | Open); -informar o diretório onde os arquivos estão sendo gravados (Options | Directories | Sources). 12- Tô com o Borland C++Builder 5.0, dá pra compilar em C com ele? Sim, dá para compilar programas em C com o C++ Buider. Abra o programa e chame a opção File -> New ... -> Console Wizard. Escolha as opções: C e Console Application na caixa de diálogos que vai ser aberta e clique em OK. Digite seu código na janela de textos. Para compilar e rodar seu programa, basta apertar a seta verde (Run) ou a tecla F9.. 13- Como usar o Visual C++ da Microsoft para compilar programas em C? Para compilar, criar executaveis e executar programas C padrão ANSI no mesmo, deve-se proceder da seguinte forma: 1-Abrir o MSVC 2-Clicar em File, 3-Clicar em New, 4-Assim que abrir a janela, escolher na lista de tipos de projetos, Win32 Console Aplication, nao esquecer de colocar o nome "nome" para o projeto e modificar o caminho (se for o caso) nos campos ao lado, 5-Clicar OK (so esta disponivel se tiver colocado o nome do projeto), 6-Aparecendo a janela de tres paginas chamada Workspace nome, escolher a pagina file (na parte de baixo), 7-Clicar com o botao direito do mouse em nome files e escolher Add Files to Project 8-Ao aparecer a janela Insert Files into Project, colocar o nome: nome_do_arquivo.c (nao esquecer da terminacao .c), 9-Na janela de tres paginas que devera permanecer aberta na pagina file, clicar no "mais" que esta antes de nome files e clicar duas veses em nome.c, 10-Escrever seu codigo no editor ao lado, 11-Para compilar, criar executável e executar a partir do MSVC ir em Build na barra de menu e escolher a acao desejada. 12-Se o aplicativo for executado a partir do MSVC aparecera a mensagem Press any key to continue talvez ate mais de uma vez. Isto nao eh erro e basta apertar uma tecla para continuar. Esta mensagem nao mais aparecera se voce executar o aplicativo de fora do MSVC, como por exemplo, no explorer, indo no diretorio onde esta o seu projeto e clicando duas vezes em nome.exe. 14- Como usar o Borland C++ 5.0 para compilar programas em C? No Borland C++ 5.0, basta voce chamar a opcao File -> New -> Text Edit e então digitar o seu programa na janela que vai aparecer. Depois é so' chamar a opção Project -> Build all para compilar e linkar, gerando o executável. Chame então Debug -> Run, para rodar o seu executável. 15- Dá pra usar o DJGPP e o Rhide no Windows NT 4.0? Sim. Você pode usar as mesmas instruções de instalação acima. A única diferença é que o arquivo equivalente ao AUTOEXEC.BAT para o WINDOWS NT 4.0 é o AUTOEXEC.NT. O arquivo se encontra em C:\WINNT\SYSTEM32\ e deve ser editado da mesma forma que o AUTOEXEC.BAT. As alterações no arquivo AUTOEXEC.NT como em vários outros do sistema só podem ser efetuadas por um administrador de rede. Se você não é o administrador da máquina, deve criar um arquivo de lote (*.BAT) contendo as linhas onde são setadas as variáveis de ambiente e executá-lo antes de executar o RHIDE. 16- Quais os argumentos que devem ser utilizados na hora de compilar com o gcc, por exemplo: gcc O .... ?? Execute o comando: man gcc, se você estiver em ambiente Unix. Se estiver em ambiente DOS, pode instalar o FAQ e o help "info" (se ja nao tiver feito), que sao os arquivos faq211b.zip e txi312b.zip, respectivamente. Após instalado o txi390b.zip, digite info no prompt do DOS. Porém, se estiver apenas compilando um programa composto de um único arquivo, por exemplo, prog.c, execute gcc prog.c -o prog.exe . 17- Como compilar programas usando o DevC++? Uma vez instalado o programa, você pode criar um novo programa através da opção: File -> New Source File. Na janela que aparece, você digita o seu programa. Veja que o DevC++ oferece para você um programa inicial que você pode apagar, se quiser. Uma vez digitado o seu programa, você pode compila-lo e executá-lo através da opção: Execute -> Compile and Run, ou digitando diretamente Cntrl+F10, ou buscando a opção "Compile and Run" na barra de ferramentas. Note que se você fizer isto para um programa que não espera nenhuma entrada do usuário, o programa será executado, terminará sua execução, e a janela onde ele está executando será automaticamente fechada ao seu final. Com isto, você não conseguirá ver a saída do programa. Para evitar que isto aconteça, você pode modificar seus programas incluindo as linhas: #include <stdlib.h> no início do programa e system("pause"); antes do return (0); como feito no primeiro programa, abaixo: #include <stdlib.h> #include <stdio.h> /* Um Primeiro Programa */ int main () { printf ("Ola! Eu estou vivo!\n"); system("pause"); return(0); } 18- Como usar a biblioteca conio no DevC++? Para usar as funções da biblioteca conio no DevC++ voce vai ter que "montar um projeto", seguindo os seguintes passos: 1 - File -> New Project -> Console Application -> C Project (ou C++ Project, se voce preferir) -> OK; 2 - Entre com um nome para o projeto. Exemplo: prconio -> OK -> Escolha a pasta onde o projeto sera' gravado; 3 - Um arquivo inicial com um programa basico sera' criado. Voce pode digitar seu programa que utiliza a conio nesta janela; 4 - Grave seu programa, com um nome diferente do nome do projeto (o Dev nao aceita o mesmo nome); 5 - Antes de mandar compilar e executar, voce vai ter que modificar as opcoes de seu projeto, para poder utilizar a Conio. Vá em Project -> Project Options (ou clique no icone "Project Options" da barra de ferramentas). Na caixa "Further object files or linker options" escreva: C:\Dev-C++\Lib\conio.o , onde C:\Dev-C++\ deve ser substituido pela pasta onde voce instalou o Dev-C++. Clique em OK. 6 - Pode compilar e executar, agora, que vai funcionar. Para testar, use o programa abaixo. Deve compilar e executar sem problemas no Dev, se as instrucoes acima forem seguidas: #include <stdio.h> #include <conio.h> int main() { clrscr(); gotoxy(10,10); printf("Oi, estou vivo"); gotoxy(40,5); printf("Continuo vivo, em outra posicao"); getch(); return 0; } 19- Como debugar e executar programas passo a passo usando o DevC++? Você pode usar o programa gdb (GNU Debugger) que vem com o Dev. Porém, este programa não é de uso muito simples. Se você quiser uma interface mais intuitiva, pode buscar o Cygnus Insight Debugger. Ele tambem é gratuito e pode ser baixado a partir da pagina http://www.bloodshed.net/dev/ . Uma vez instalado o Debugger, voce vai poder executar seu programa passo a passo, fazendo o seguinte: Aperte a tecla F8: vai aparecer a janela do debug. Clique em Run (boneco azul) Na janela "Load new executable" que aparece, escolha o diretorio e o nome do seu programa .exe . Depois disto, e' so' ir apertando o botao Step (que esta do lado do boneco azul). Voce pode alternar entre a tela de saida (DOS) e a tela do debug com o ALT ->TAB do Windows. c) Sobre a linguagem C 1- Tenho uma dúvida sobre a linguagem C. Onde achar a resposta? Tente achar a resposta nas páginas do curso. Caso a resposta não esteja lá, tente a nossa bibliografia. Caso sua dúvida seja mais complexa, talvez seja o caso de tentar o FAQ sobre linguagem C. Se ainda não resolveu, mande a dúvida para a lista do curso. Lembre-se, apenas, que a lista do curso funciona somente durante os cursos, e você tem que estar inscrito no curso para poder participar. 2- Quais as diferenças entre o C e o C++? O C++ é um aperfeiçoamento da linguagem C. O C++, além dos melhoramentos incluidos na sintaxe da linguagem C, inclui suporte para a Programação Orientada a Objetos (POO). Você pode se referir ao FAQ da linguagem C++ para maiores informações. Um bom livro sobre C++ é o Thinking in C++, que está disponível para download na Internet. d) Sobre o conteúdo e duração do curso 1- Gostaria de saber se o curso de C tem duracao estabelecida, ou se extendera o quanto for necessario. A duração estabelecida para o curso e' de 8 semanas, conforme pode ser verificado no nosso cronograma. 2- Gostaria de saber o quanto o curso entra no Windows 95/NT e nas WIN32, que e o meu objetivo a medio prazo . O que mais vamos estudar além do C padrao? Nao entra em nada relativo a programacao do Windows. O C e' uma linguagem que pode ser usada para efetuar programacao em varios ambientes, incluindo o Windows. Porem nao e' nosso objetivo neste curso estudar a programacao para o Windows. Uma excelente referencia sobre o uso da linguagem C para a programacao Windows 95 e' o livro do Charles Petzold: "Programming Windows " , da Microsoft Press, com 1100 paginas de informação de excelente qualidade. O pré-requisito para entender este livro é conhecer bem a programação utilizando a linguagem C e isto você poderá obter no nosso curso! Não vamos estudar nada além do C padrão! Nao vamos estudar CGI's, programacao de portas seriais, de portas paralelas, programacao Windows 95, C++, Java, programação gráfica, o movimento das galaxias, ou qualquer coisa alem do C. Qualquer duvida sobre o que vai ser visto, consultem o programa do curso. 3- Preciso saber alguma linguagem basica de programação para acompanhar o curso? Nao precisa, porém seu aprendizado será facilitado se voce ja' souber programar. 4- Qual a URL com o conteúdo zipado do curso? Veja a noss página de download. 5-Se eu nao conseguir terminar o curso em 8 semanas. Se precisar de mais tempo pra ler todas as aulas o que farei ? Voce podera' continuar lendo as paginas do curso, que continuarao disponiveis, mesmo depois dele ter terminado. Apenas a lista devera' ser desativada algumas semanas depois de terminado o curso. 6- Neste curso vamos estudar alguma coisa sobre programação de portas seriais ou paralelas? Não, isto não faz parte do ANSI C. Porém, você pode encontrar alguma coisa nos sites abaixo: http://www.lvr.com/parport.htm http://www.lvr.com/spc.htm http://www.hut.fi/Misc/Electronics/circuits/parallel_output.html http://casa.dos.programadores.com.br/c_art0009.html http://www.beyondlogic.org/ http://www.cubic.org/source/archive/hardware/parallel/usingparallel.htm http://www.li.facens.br/~f98335/ http://sites.uol.com.br/rogercom/index.htm http://margo.student.utwente.nl/stefan/hwb/menu_Connector.html http://home.rmi.net/~hisys/parport.html http://www.linuxave.net/~artheos/ http://casa.dos.programadores.com.br/builder_art0002.html O The Hardware Book tambem é muito bom: http://www.fortunecity.com/skyscraper/photoshop/129/hwb/menu_Download.html 7- Neste curso vamos estudar alguma coisa sobre programação gráfica? Não. Isto não faz parte do ANSI C. e) Sobre a organização do curso 1- O curso de C em questão oferece certificado de conclusão e participação ao término do mesmo? Não são fornecidos certificados de participação no curso pois não desenvolvemos ainda nenhum esquema de avaliação confiável (apenas auto-avaliação). Nosso objetivo é estimular o auto-aprendizado e não que as pessoas fiquem atrás de um papel que burocraticamente certifique alguma coisa. 2- O curso vai ser dado na WWW ou via e-mail? Ambos. O curso vai ser dado usando ambas ferramentas. Vocês lerão "o livro" do curso nas páginas da WWW e interagirão com o professor, monitores e demais colegas usando o e-mail. As listas de exercício serão enviadas para vocês também por e-mail. Vocês poderão fazer perguntas, usando a lista do curso. As respostas para suas perguntas serão também enviadas para esta lista. 3- Quais as regras para uso da lista do curso de C? 1- Só envie mensagens que tenham algo a ver com o curso de C(lembre-se que tem mais de 5000 pessoas te ouvindo). Cuidado com respostas que deveriam ir para o sujeito que postou a mensagem e que acabam sendo enviadas para toda a lista! 2- Seja educado: use a Netiqueta. Se voce nao conhece a Netiqueta, de uma olhada em http://www.ifi.unicamp.br/ccjdr/netiqueta/dis.html 3- No inicio do curso, restringimos as mensagens que avançam na matéria, para nao "assustar" os iniciantes em C. Deixe estas perguntas para o final do curso. Mais para o final do curso, valem perguntas que nao estejam estritamente dentro do topico em discussao. 4- A lista somente funciona durante o curso. Ela é desativada após o seu final e as mensagens deixarão de ser enviadas aos alunos. 5- Não espere que os monitores ou os outros alunos do curso resolvam os exercícios da matéria de programação de computadores que você está fazendo em sua universidade. Alguém pode até te ajudar, desde que o problema esteja dentro dos tópicos estudados no momento no curso. Porém, lembre-se que a finalidade da lista não é esta! 6- Não envie arquivos "attachados" nos seus e-mails para a lista. O envio de "attachments" cria problemas pelo fato das mensagens ficarem enormes, sobrecarregando o nosso servidor de e-mails. 7 - Não envie mensagens diretamente para o professor, apenas para a lista. Mensagens para o professor não serão respondidas.. 8 - Não envie perguntas cujas respostas estejam no FAQ. Se sua pergunta estiver no FAQ e a resposta do FAQ não te satisfizer, explique isto em sua mensagem. Caso contrário, ela não será enviada à lista. 4- Por que os e-mails tem que ser mandados para toda a lista e nao somente para os monitores? Nosso objetivo nao e' que as perguntas sejam direcionadas apenas aos monitores. Segundo nossa concepcao, o aluno aprende muito com as duvidas dos outros. Alem disto, se tivessemos que responder individualmente a cada aluno, a equipe de monitores teria que crescer muito. 5- Por que não acentuar o texto do e-mail? Por favor nao acentuem seus e-mails pq com certeza muita gente estah lendo seus e-mails com o pine ou qualquer outro leitor unix e eles não têm suporte a acentos.. fica tudo confuso... uma droga mesmo... 6- Vale qualquer pergunta sobre a linguagem C na lista? No inicio do curso, restringimos as mensagens que avançam na matéria, para nao "assustar" os iniciantes em C. Deixe estas perguntas para o final do curso. Além disto, lembre-se que a finalidade da lista não é resolver os problemas que você está tendo na matéria de programação de computadores de sua universidade... Mais para o final do curso, valem perguntas que nao estejam estritamente dentro do topico em discussao. 7- Onde estão as listas de Exercícios? Qual o endereço para enviar as respostas? As listas de exercícios são enviadas semanalmente para a lista do Curso. Você não precisa enviar as respostas para nenhum lugar. Resolva as questões e aguarde porque na próxima semana será enviado um gabarito com as soluções. Se você perdeu alguma lista, clique aqui para acessar os arquivos das listas de exercícios: 8- O que são estas mensagens sem texto que aparecem de vez em quando na lista? Na realidade estas são mensagens que foram enviadas por alguem usando o programa Outlook Express da Microsoft. O Listproc não está reconhecendo o formato MIME gerado pelo programa que acompanha o Internet Explorer. Para evitar este erro, peco as pessoas que estao usando o Outlook Express que façam uma pequena modificação em sua configuração. Na versão em Portugues do programa, escolher: Menu Ferramentas -> Opcoes -> Enviar -> Formato de envio de Mensagens -> Escolha a opcao Texto sem formatacao, ao invés da opção anterior que era HTML. 9- Existe alguma maneira de eu conseguir todos os e-mails que foram enviados para a lista de discussões? Sim, basta acessar os arquivos das listas de discussão. Os arquivos são atualizados diariamente. 10- Posso mandar uma dúvida diretamente para o Professor Renato? Não. Suas dúvidas devem ser enviadas para a lista do curso. Mensagens enviadas diretamente para o endereço do professor não serão respondidas, pois o professor não tem tempo para atender os mais de 2000 alunos individualmente. 11- Como configurar meu leitor de e-mails para filtrar as mensagens do curso de C, enviando-as para uma pasta específica? 1 - Para configurar o Outlook: (Primeira forma): Clique em uma mensagem do curso de C Vá em Mensagem - Criar regra a partir de mensagem Quando a linha Assunto contiver palavras especificas -> CURSOC Move-la para a pasta especificada -> CursoC (Segunda forma): 1. crie uma pasta em sua caixa de entrada 2. vá em ferramentas/regras para menssagens/correio/click em nova 3 em 1 "sel. as cond p/ regra" escolha: qdo a linha assunto contiver .... 4 depois em 2 coloque mover p/ pasta esp. 5 em 3 click em "contiver pal. especificas" r digite CURSOC e click em adicionar 6 depois em 3 click em "especificada" 7 selecione a pasta que vc criou e click em ok!!!!!!!!1 8 pronto!!!!!!! 2 - Para configurar o Netscape Messenger: Edit -> Message Filters... -> New... Configure o filtro, colocando um nome e uma descricao para o mesmo. Selecione Subject Selecione Contains Adicione a palavra "CURSOC" ao lado do "contains" Selecione Move To Folder e selecione o folder a ser direcionada a mensagem. 3 - Para configurar o Eudora: Adicionar nova pasta no Eudora: 1) clique com o botao direito sobre o EUDORA, selecione New; 2) digite Curso_C e OK; Adicionar Filtro: 1) clique no menu Tools, e escolha o apcao Filters; 2) abrira´ uma caixa de dialogo; 3) nela clique no botao NEW; 4) em HEADER selecione o campo do e-mail que devera´ ser observado pelo Eudora no momento que forem recebidas novas mensagens, no nosso caso coloque "From:" 5) abaixo coloque "contains" e ao lado digite "CURSOC" (sem as aspas) para que o Eudora verifique no campo "Form:" do e-mail recebido o conteudo "CURSOC" ; 6) se quiser que o filtro verifique outros campos continue a preecher semelhantemente aos passos 4 e 5. 4 - Para configurar o Pine, com procmail ou fetchmail. (enviada pelo Paulo hypolito@uol.com.br ) [hypolito@neptune hypolito]$ more .procmailrc # Please check if all the paths in PATH are reachable, # remove the ones that are not. SHELL=/bin/sh PATH=$HOME/bin:/usr/bin:/usr/ucb:/bin:/usr/local/bin MAILDIR=$HOME/mail DEFAULT=/var/spool/mail/$LOGNAME LOGFILE=$HOME/.procmail/.procmail.log #recommended LOCKFILE=$HOME/.procmail/.lockmail :0 * ^Reply-To:.*cursoc@ead.eee.ufmg.br chegada/cursoc :0 * ^Reply-To:.*cursoc@ead1.eee.ufmg.br chegada/cursoc em .pinerc [..] # List of directories where saved-message folders may be. First one is # the default for Saves. Example: Main {host1}mail/[], Desktop mail\[] # Syntax: optnl-label {optnl-imap-hostname}optnl-directory-path[] folder-collections=UOL mail/uol/[], Chegada mail/chegada/[], Sent-Mail mail/uol/sent-mail/[], Listas mail/uol/listas/[], Netscape nsmail/[] [..] Se voce usa o fetchmail para puxar as mensagens do seu provedor: em .fethmailrc server pop3.sti.com.br \ protocol pop3 \ username hypolito \ password cUrIOsO \ no rewrite \ mda "procmail -d hypolito" f) Diversos 1- Gostaria de saber porque voces não colocam um curso de Matlab( versão nova). Porque nosso tempo e' finito! :-) Nao da' para colocar cursos de tudo quanto e' assunto ... Curso de C da Engenharia Elétrica da UFMG - 1996-2002 form-desinsc.html Formulário de Desinscrição do Curso de C Para se desinscrever do Curso de Programação em Linguagem C, basta preencher o formulário abaixo. Lembre-se que o curso possui duas listas: An_cursoC e CursoC. Se voce quiser continuar recebendo as mensagens do professor, desinscreva-se apenas da lista CursoC. Se você não quiser receber as mensagens do professor desinscreva-se da lista An_cursoC. Não se desinscreva de uma lista da qual você já tenha se desinscrito anteriormente, ou o sistema lhe enviará um e-mail com mensagem de erro e não efetuará a desinscrição: desinscreva-se somente das listas das quais você continua recebendo mensagens! Você receberá a confirmação de desinscrição no e-mail fornecido. E-mail: Quero me desinscrever das listas: CursoC2002 (não receber as mensagens dos alunos) An_CursoC (não receber as mensagens do professor) Curso de C da EE/UFMG - 1996 - 2002 form-inscri.html Formulário de Inscrição no Curso de C Para se inscrever no Curso de Programação em Linguagem C, basta preencher o formulário abaixo. Se você possuir mais de um endereço de e-mail, inscreva-se naquele em que você quer receber as mensagens do curso. Lembre-se que, como o curso é muito movimentado, pode "entupir" uma caixa postal que não seja lida freqüentemente. Só se inscreva se você puder ler uma boa quantidade de e-mails diariamente e ter tempo para estudar os módulos do curso. O curso é gratuito. Preencha todos os campos. Não deixe nenhum em branco. Atenção no preenchimento do campo e-mail!!! Nome Completo (não utilize acentos): E-mail: Idade: Cidade / Pais: Escolaridade: Primeiro Grau Completo Segundo Grau Completo Cursando Terceiro Grau Terceiro Grau Completo Pós-Graduação Não respondeu Ao me inscrever, estou concordando com os termos explicitados no cabeçalho deste formulário Curso de C da EE/UFMG - 1996 - 2002 form-troca-email.html Formulário de Troca de e-mail no Curso de C, depois do início do curso Para trocar seu e-mail no Curso de Programação em Linguagem C, basta preencher os campos do formulário abaixo. Este formulário só funciona depois que o curso começar. E-mail antigo: E-mail novo: Nome (não utilize acentos): Curso de C da EE/UFMG - 1996 - 2000 form-troca-email2.html Formulário de Troca de e-mail no Curso de C, antes do início do curso Para trocar seu e-mail no Curso de Programação em Linguagem C, basta preencher os campos do formulário abaixo. Este formulário só funciona antes do seu curso começar. E-mail antigo: E-mail novo: Nome (não utilize acentos): Curso de C da EE/UFMG - 1996 - 2000 lista.html Arquivos das listas de discussão do curso de C Procura nos arquivos do curso de C por conteúdo específico Turma do Primeiro Semestre de 2002 Anúncios do Professor (An_CursoC) E-mails ordenados por data. E-mails ordenados por assunto. Lista de discussão dos alunos e monitores (CursoC) E-mails ordenados por data. E-mails ordenados por assunto. Turma do Primeiro Semestre de 2001 Anúncios do Professor (An_CursoC) E-mails ordenados por data. E-mails ordenados por assunto. Lista de discussão dos alunos e monitores (CursoC) E-mails ordenados por data. E-mails ordenados por assunto. Turma do Segundo Semestre de 2000 Anúncios do Professor (An_CursoC) E-mails ordenados por data. E-mails ordenados por assunto. Lista de discussão dos alunos e monitores (CursoC) E-mails ordenados por data. E-mails ordenados por assunto. Turma do Primeiro Semestre de 2000 Anúncios do Professor (An_CursoC) E-mails ordenados por data. E-mails ordenados por assunto. Lista de discussão dos alunos e monitores (CursoC) E-mails ordenados por data. E-mails ordenados por assunto. Turma do Segundo Semestre de 1999 Anúncios do Professor (An_CursoC) E-mails ordenados por data. E-mails ordenados por assunto. Lista de discussão dos alunos e monitores (CursoC) E-mails ordenados por data. E-mails ordenados por assunto. Turma do Primeiro Semestre de 1999 Anúncios do Professor (An_CursoC) E-mails ordenados por data. E-mails ordenados por assunto. Lista de discussão dos alunos e monitores (CursoC) E-mails ordenados por data. E-mails ordenados por assunto. Lista de discussão do projeto final do curso (ProjCursoC) E-mails ordenados por data. E-mails ordenados por assunto. Turma do Segundo Semestre de 1998: Anúncios do Professor (An_CursoC) E-mails ordenados por data. E-mails ordenados por assunto. Lista de discussão dos alunos e monitores (CursoC) E-mails ordenados por data. E-mails ordenados por assunto. Turma do primeiro semestre de 1998: E-mails ordenados por data E-mails ordenados por assunto. Turma do segundo semestre de 1997: E-mails ordenados por data E-mails ordenados por assunto. Curso de C da Engenharia Elétrica da UFMG - 1996-2002 help.gif home.html Informações Gerais Aulas Inscrições e Desinscrições Área de Download Cronograma de atividades Listas de exercícios Monitores E-mails enviados às listas FAQ Lista de usuários de ICQ Visualização ideal: resolução 800x600 256 cores ou mais Curso de C da EE UFMG - 1996-2002 image29.gif index.html info.html Informações Gerais Sobre o curso Funcionamento do curso O que é necessário para acompanhar o curso Sobre o Curso Este curso foi implementado na UFMG - Universidade Federal de Minas Gerais pelo Núcleo de Ensino à Distância da Escola de Engenharia - fazendo parte de um projeto apoiado pela Pró-Reitoria de Graduação da UFMG, através do programa PROGRAD97/FUNDO-FUNDEP. O curso é oferecido regularmente, a cada semestre, desde 1997. Na nossa página de inscrições você pode verificar o número de participantes em cada edição. Desde sua primeira edição, o curso tem sido oferecido gratuitamente e não oferece certificados de conclusão. Ou seja, você deve fazer este curso se estiver interessado em seu aprimoramento pessoal. Quem originalmente escreveu o curso de C foi o aluno de graduação em Engenharia Elétrica, Daniel Balparda de Carvalho. Algumas modificações foram introduzidas pela aluna de doutorado Ana Liddy Cenni de Castro Magalhães e pelo aluno de graduação em Engenharia Elétrica, Ebenezer Silva Oliveira. Posteriormente, Guilherme Neves Cavalieri, também aluno de graduação em Engenharia Elétrica, modificou as páginas, de forma a facilitar a navegação e utilização do curso. Atualmente ele é mantido pelo professor Renato Cardoso Mesquita. Funcionamento do Curso O professor, seguindo o calendário do curso, envia à lista de discussão do curso uma série de tarefas (que constam de tópicos a serem estudados nas páginas do curso e exercicios a serem resolvidos) e uma data limite para a solução deles pelos alunos. Na data limite, um gabarito com as respostas dos exercícios é enviado à lista e novas tarefas são propostas. A lista de discussões também serve para que os alunos resolvam, assincronamente, suas dúvidas. Um FAQ com as dúvidas mais frequentes é criado com o seu desenrolar. Você pode trabalhar a qualquer hora, desde que complete suas tarefas no tempo especificado pelo professor. Você estuda nas páginas do Curso, tenta resolver os problemas propostos, envia suas dúvidas para a lista (ou responde as dúvidas de seus colegas) e, posteriormente, lê as respostas. Isto e' chamado "Comunicação Assíncrona". O curso foi pensado para tirar partido dos pontos fortes da comunicação assíncrona, ao invés de tentar copiar um modelo que funciona bem nas salas de aula tradicionais. Existem benefícios cognitivos significativos atribuídos à comunicação assíncrona. Como os estudantes tem tempo para rever o material (comentários, páginas do WWW, discussões) e também podem gastar o tempo que quiserem para compor suas respostas, o material e os conceitos são abordados em uma velocidade individualizada. Pode-se atingir um nível de profundidade na comunicação assíncrona superior àquele atingido com a comunicação síncrona. Apesar da falta de contato físico criar suas dificuldades, ela não necessariamente prejudica o processo educacional. Em um curso como este, todos os estudantes têm oportunidade de participação nas discussões igualadas - não somente os mais extrovertidos. Fatores potenciais de discriminação, como aparência, raça, sexo, etc, desaparecem e as idéias se tornam o foco principal da discussão. O que é necessário para acompanhar o Curso? Para acompanhar o curso você necessitará de acesso à WWW através de um navegador (Netscape ou Microsoft Internet Explorer) e também de um programa para envio e recebimento de e-mails. Além disto, é importante que você tenha disponível um compilador C, padrão ANSI. Um compilador lê o programa que você escreveu em linguagem C e o converte em um código objeto, que e' uma tradução do código fonte em uma forma que o computador pode executar diretamente. Se você não tem um compilador disponível, clique aqui para verificar como obter um. Curso de C da Engenharia Elétrica da UFMG - 1996-2000 insc.html Inscrições, Desinscrições e Mudanças de Endereço. Inscrições: Turmas do curso são oferecidas periodicamente (no mínimo uma vez por ano), geralmente no início de cada semestre letivo da UFMG. As inscrições para o curso de 2003 deverão ser abertas em março de 2003. Este e' um curso extremamente movimentado, com uma grande interação entre alunos, monitores e professores. Para se ter uma ideia do grau de interação, na versão do curso de 2002, foram gerados 1880 e-mails na lista de discussão dos alunos, mais 29 e-mails de anúncios do professor. Desta forma, é recomendável que você se inscreva somente se tiver a possibilidade de dedicar um certo tempo diário à leitura do material on-line, e-mails e à execução dos exercícios do curso. O número de alunos, por edição do curso foi: 2002, segundo semestre, 5334 alunos; Segundo semestre de 2001, não houve curso, devido a greve nas Universidades Federais; Primeiro semestre de 2001, 2870 alunos; Segundo semestre de 2000: 2793 alunos; Primeiro semestre 2000: 2400 alunos Segundo semestre de 1999, limitamos o número de alunos em 2000. Primeiro semestre de 1999, 2488 alunos. Segundo semestre de 1998, 1769 inscritos; Primeiro semestre de 1998, 865 inscritos; Segundo semestre de 1997, 284 alunos. O curso é gratuito. Desinscrições: Para se desinscrever do curso de C, depois de iniciado o curso, basta preencher o formulário de desinscrição. Se você quiser se desinscrever antes do curso se iniciar, envie e-mail para listproc@ead.eee.ufmg.br com o conteúdo: UNSUB ESPERACURSOC . Não é necessário colocar nada no subject. Mudança de Endereço para o Curso: Como trocar o meu e-mail inscrito no curso de C de xxx@zzz.com.br para yyy@www.com.br? Se o curso já tiver começado, basta preencher o formulário de troca de e-mail. Se estiver inscrito na lista de espera do curso, antes de começar o curso, preencha o formulário alternativo de troca de e-mail. Curso de C da Engenharia Elétrica UFMG - 1996-2002 left.gif l-exerc-fram.html line.gif lista_exercicio.html lista_main.html Listas de exercícios OBS: As listas e os gabaritos somente estarão disponíveis nas datas definidas no cronograma Lista 1 Gabarito 1 Lista 2 Gabarito 2 Lista 3 Gabarito 3 Lista 4 Gabarito 4 Lista 5 Gabarito 5 Lista 6 Gabarito 6 Lista 7 Gabarito 7 Lista 8 Gabarito 8 Curso de C da Engenharia Elétrica da /UFMG - 1996-2002 lixo.htm atençao monitores.html Monitores do Curso Neste curso, a equipe é composta pelo: Coordenador e Professor do Curso: Prof. Renato Cardoso Mesquita, professor do Depto. de Engenharia Elétrica da UFMG, no GOPAC, Grupo de Otimização e Projeto Assistido por Computador. E pelos seguintes monitores: 1 -Andrea Moreira - Aluna de graduação em Engenharia Elétrica na UFMG 2 -Hélio Barbosa Yamaki - Físico Unicamp, Analista de Sistemas Empresa1 3 -Hilton de O. Mota - Aluno do doutorado em Engenharia Elétrica da UFMG 4 -Jonathan Araujo - Aluno de graduação em Engenharia Elétrica da UFMG 5 -Leandro Pinheiro Cintra - Aluno do mestrado em Engenharia Elétrica da UFMG 6 -Luciano Ferreira Lopes - Engenheiro Eletricista (UFMG) com pós graduação em Engenharia de Software (UFMG) 7 -Matheus Castro Vargas - Aluno de graduação em Engenharia Elétrica da UFMG 8 -Thadeu Lima de Souza Cascardo - Aluno de graduação em Ciência de Computação da UFMG 9 -Renato Cardoso Mesquita - Professor do Departamento de Engenharia Elétrica da UFMG 0 -William Leite Araujo - Aluno de graduação em Ciência da Computação da UFMG Os números acima indicam o número final das questões que cada monitor ficará responsável por "monitorar". Curso de C da Engenharia Eletrica da UFMG - 1996-2002 o_curso_mudou.html O Curso de C mudou de servidor!!!!!!! Atenção: modifique seus bookmarks. O novo endereço do curso de Programação em linguagem C é http://ead1.eee.ufmg.br/cursos/C/ Curso de C da Engenharia Elétrica da UFMG - 1996-1999 ponta.gif pontagde.gif prog1.c #include <stdio.h> main () /* Um Primeiro Programa */ { printf ("Ola! Eu estou vivo!\n"); } rhide.html Uso do RHIDE Nesta página fornecemos algumas instruções básicas para uso do ambiente de programação RHIDE (estas instruções também são válidas para o TClite). O RHIDE facilita em muito a criação de programas em C. As instruções fornecidas são básicas, para que se consiga compilar e executar os primeiros programas em C. Com o uso do HELP do RHIDE você conseguirá maiores informações. Passos a serem seguidos para utilizar o RHIDE: 1- Instalar o DJGPP e o RHIDE em seu computador. Veja como, clicando aqui. 2- Abrir uma janela do DOS, ir para o diretório onde voce vai criar seus programas e digitar: rhide 3- Se você vai criar um novo arquivo de programa, chamar a opção File -> New (ver figura abaixo) 4- Uma vez criado um novo arquivo, digite o seu programa nele, como indicado abaixo: 5- Agora você pode salvar o seu programa, chamando File -> Save, e digitando o nome do arquivo .c que vai armazenar seu programa. Por exemplo, digite prog1.c e a seguir clique em Open (sim, é Open mesmo, esta caixa de diálogo está trocada), como no exemplo abaixo: OBS: 1) não use nomes com número de caracteres maior que 8. O Rhide é um programa para DOS e não entende os nomes longos do Windows 95 2) Sempre coloque a extensão do arquivo que você está criando. O Rhide não coloca o .c automáticamente! 6- O próximo passo a ser seguido é compilar o programa (gerando o arquivo .o) e linkar com as bibliotecas do C (gerando o arquivo executável, .exe). Chame a opção Compile -> Make. Caso não existam erros no seu programa, aparecerão as mensagens: Compiling: prog1.c No errors Creating: prog1.exe no errors na janela de mensagens, conforme a figura abaixo. Se houver erros, o Rhide indicará a linha onde este erro ocorreu e você deverá corrigir o seu programa. 7- Agora você pode executar o programa, chamando a opção Run -> Run, conforme a figura abaixo: 8- Um programa simples como este vai enviar a mensagem Ola! Eu estou vivo! para a tela do DOS e terminar a execução, apresentando uma caixa de dialógo com um botão de OK e a mensagem Program exit code -1 (0xffffff). Não se assuste, isto não é uma mensagem de erro! Se você quiser ver a tela do DOS, após o término da execução, poderá chamar FILE -> DOS Shell. Depois é só digitar exit <enter> para você voltar ao RHIDE. Você também pode apertar simultaneamente as teclas <ALT> e <F5>, para chavear entre a tela do DOS e a tela do RHIDE. Se você quiser ver a tela do DOS antes do término da execução, terá que momentaneamente parar a execução. Existem várias formas de fazer isto. Uma delas é modificar o seu programa para que ele tenha uma entrada "fictícia" de dados. Inclua a linha scanf("\n"); no programa, como indicado na figura abaixo. 9- Ao fazer isto, recompile o programa e execute-o novamente. Você vai ver uma tela semelhante à apresentada na figura abaixo. Repare a mensagem Ola! Estou vivo. , na parte inferior da tela. Para continuar a execução, você terá que digitar alguma coisa para o scanf e apertar a tecla <Enter> em seguida. O programa então terminará sua execução e você voltará ao ambiente do Rhide. 10- Outra forma de verificar o que um programa está fazendo é executá-lo passo a passo. O Rhide permite isto. Basta chamar a opção Run -> Step over, como indicado na figura abaixo, ou então apertar a tecla F8. A cada vez que você fizer isto, o programa executará uma instrução. A barra azul claro indica qual é a instrução corrente. Para ver a tela de saída, você pode apertar simultaneamente <ALT> e <F5>. Existem várias outras opções de execução disponíveis no menu Run. Você pode verificar o que elas fazem consultando o Help do Rhide, conforme item 11 abaixo. É também interessante você conhecer as opções que estão no menu Debug, que auxiliam bastante no processo de depuração de programas. 11- O Rhide possui um bom sistema de HELP, que você deve consultar para verificar todas as suas potencialidades. Para acessá-lo, basta chamar a opcao Help no menu principal. Veja que o Help tem opções não somente quanto ao uso do Rhide, mas também sobre funções da linguagem C. Veja a figura abaixo. Só apresentamos uma introdução ao uso do RHIDE. Com o seu uso, você aprenderá muito mais, especialmente se você não tiver medo de consultar o HELP! Você também pode consultar a documentação on-line no site original do RHIDE para maiores detalhes. Curso de C da Engenharia Elétrica da UFMG - 1996-1999 up.gif Programa_C.pdf 1 Curso de Programação em C INTRODUÇÃO Vamos, neste curso, aprender os conceitos básicos da linguagem de programação C a qual tem se tornado cada dia mais popular, devido à sua versatilidade e ao seu poder. Uma das grandes vantagens do C é que ele possui tanto características de "alto nível" quanto de "baixo nível". Apesar de ser bom, não é pré-requisito do curso um conhecimento anterior de linguagens de programação. É importante uma familiaridade com computadores. O que é importante é que você tenha vontade de aprender, dedicação ao curso e, caso esteja em uma das turmas do curso, acompanhe atentamente as discussões que ocorrem na lista de discussões do curso. O C nasceu na década de 70. Seu inventor, Dennis Ritchie, implementou-o pela primeira vez usando um DEC PDP-11 rodando o sistema operacional UNIX. O C é derivado de uma outra linguagem: o B, criado por Ken Thompson. O B, por sua vez, veio da linguagem BCPL, inventada por Martin Richards. O C é uma linguagem de programação genérica que é utilizada para a criação de programas diversos como processadores de texto, planilhas eletrônicas, sistemas operacionais, programas de comunicação, programas para a automação industrial, gerenciadores de bancos de dados, programas de projeto assistido por computador, programas para a solução de problemas da Engenharia, Física, Química e outras Ciências, etc ... É bem provável que o Navegador que você está usando para ler este texto tenha sido escrito em C ou C++. Estudaremos a estrutura do ANSI C, o C padronizado pela ANSI. Veremos ainda algumas funções comuns em compiladores para alguns sistemas operacionais. Quando não houver equivalentes para as funções em outros sistemas, apresentaremos formas alternativas de uso dos comandos. Sugerimos que o aluno realmente use o máximo possível dos exemplos, problemas e exercícios aqui apresentados, gerando os programas executáveis com o seu compilador. Quando utilizamos o compilador aprendemos a lidar com mensagens de aviso, mensagens de erro, bugs, etc. Apenas ler os exemplos não basta. O conhecimento de uma linguagem de programação transcende o conhecimento de estruturas e funções. O C exige, além do domínio da linguagem em si, uma familiaridade com o compilador e experiência em achar "bugs" nos programas. É importante então que o leitor digite, compile e execute os exemplos apresentados. Capítulo 1 (Primeiros Passos) O C é "Case Sensitive" Vamos começar o nosso curso ressaltando um ponto de suma importância: o C é "Case Sensitive", isto é, maiúsculas e minúsculas fazem diferença. Se declararmos uma variável com o nome soma ela será diferente de Soma, SOMA, SoMa ou sOmA. Da mesma maneira, os comandos do C if e for, por exemplo, só podem ser escritos em minúsculas pois senão o compilador não irá interpretá-los como sendo comandos, mas sim como variáveis. Dois Primeiros Programas Vejamos um primeiro programa em C: #include <stdio.h> /* Um Primeiro Programa */ int main () 2 { printf ("Ola! Eu estou vivo!\n"); return(0); } Compilando e executando este programa você verá que ele coloca a mensagem Ola! Eu estou vivo! na tela. Vamos analisar o programa por partes. A linha #include <stdio.h> diz ao compilador que ele deve incluir o arquivo-cabeçalho stdio.h. Neste arquivo existem declarações de funções úteis para entrada e saída de dados (std = standard, padrão em inglês; io = Input/Output, entrada e saída ==> stdio = Entrada e saída padronizadas). Toda vez que você quiser usar uma destas funções deve-se incluir este comando. O C possui diversos arquivos-cabeçalhos. Quando fazemos um programa, uma boa idéia é usar comentários que ajudem a elucidar o funcionamento do mesmo. No caso acima temos um comentário: /* Um Primeiro Programa */. O compilador C desconsidera qualquer coisa que esteja começando com /* e terminando com */. Um comentário pode, inclusive, ter mais de uma linha. A linha int main() indica que estamos definindo uma função de nome main. Todos os programas em C têm que ter uma função main, pois é esta função que será chamada quando o programa for executado. O conteúdo da função é delimitado por chaves { }. O código que estiver dentro das chaves será executado sequencialmente quando a função for chamada. A palavra int indica que esta função retorna um inteiro. O que significa este retorno será visto posteriormente, quando estudarmos um pouco mais detalhadamente as funções do C. A última linha do programa, return(0); , indica o número inteiro que está sendo retornado pela função, no caso o número 0. A única coisa que o programa realmente faz é chamar a função printf(), passando a string (uma string é uma seqüência de caracteres, como veremos brevemente) "Ola! Eu estou vivo!\n" como argumento. É por causa do uso da função printf() pelo programa que devemos incluir o arquivo- cabeçalho stdio.h . A função printf() neste caso irá apenas colocar a string na tela do computador. O \n é uma constante chamada de constante barra invertida. No caso, o \n é a constante barra invertida de "new line" e ele é interpretado como um comando de mudança de linha, isto é, após imprimir Ola! Eu estou vivo! o cursor passará para a próxima linha. É importante observar também que os comandos do C terminam com ; . Podemos agora tentar um programa mais complicado: #include <stdio.h> int main () { int Dias; /* Declaracao de Variaveis */ float Anos; printf ("Entre com o número de dias: "); /* Entrada de Dados */ scanf ("%d",&Dias); Anos=Dias/365.25; /* Conversao Dias->Anos */ printf ("\n\n%d dias equivalem a %f anos.\n",Dias,Anos); return(0); } Vamos entender como o programa acima funciona. São declaradas duas variáveis chamadas Dias e Anos. A primeira é um int (inteiro) e a segunda um float (ponto flutuante). As variáveis declaradas como ponto flutuante existem para armazenar números que possuem casas decimais, como 5,1497. É feita então uma chamada à função printf(), que coloca uma mensagem na tela. Queremos agora ler um dado que será fornecido pelo usuário e colocá-lo na variável inteira Dias. Para tanto usamos a função scanf(). A string "%d" diz à função que iremos ler um inteiro. O segundo parâmetro passado à função diz que o dado lido deverá ser armazenado 3 na variável Dias. É importante ressaltar a necessidade de se colocar um & antes do nome da variável a ser lida quando se usa a função scanf(). O motivo disto só ficará claro mais tarde. Observe que, no C, quando temos mais de um parâmetro para uma função, eles serão separados por vírgula. Temos então uma expressão matemática simples que atribui a Anos o valor de Dias dividido por 365.25 (365.25 é uma constante ponto flutuante 365,25). Como Anos é uma variável float o compilador fará uma conversão automática entre os tipos das variáveis (veremos isto com detalhes mais tarde). A segunda chamada à função printf() tem três argumentos. A string "\n\n%d dias equivalem a %f anos.\n" diz à função para pular duas linhas, colocar um inteiro na tela, colocar a mensagem " dias equivalem a ", colocar um valor float na tela, colocar a mensagem " anos." e pular outra linha. Os outros parâmetros são as variáveis, Dias e Anos, das quais devem ser lidos os valores do inteiro e do float, respectivamente. AUTO AVALIAÇÃO 1 - Veja como você está. O que faz o seguinte programa? #include <stdio.h> int main() { int x; scanf("%d",&x); printf("%d",x); return(0); } 2 - Compile e execute os programas desta seção. Introdução às Funções Uma função é um bloco de código de programa que pode ser usado diversas vezes em sua execução. O uso de funções permite que o programa fique mais legível, mais bem estruturado. Um programa em C consiste, no fundo, de várias funções colocadas juntas. Abaixo o tipo mais simples de função: #include <stdio.h> int mensagem () /* Funcao simples: so imprime Ola! */ { printf ("Ola! "); return(0); } int main () { mensagem(); printf ("Eu estou vivo!\n"); return(0); } Este programa terá o mesmo resultado que o primeiro exemplo da seção anterior. O que ele faz é definir uma função mensagem() que coloca uma string na tela e retorna 0. Esta função é chamada a partir de main() , que, como já vimos, também é uma função. A diferença fundamental entre main e as demais funções do problema é que main é uma função especial, cujo diferencial é o fato de ser a primeira função a ser executada em um programa. 4 Argumentos Argumentos são as entradas que a função recebe. É através dos argumentos que passamos parâmetros para a função. Já vimos funções com argumentos. As funções printf() e scanf() são funções que recebem argumentos. Vamos ver um outro exemplo simples de função com argumentos: #include <stdio.h> int square (int x) /* Calcula o quadrado de x */ { printf ("O quadrado e %d",(x*x)); return(0); } int main () { int num; printf ("Entre com um numero: "); scanf ("%d",&num); printf ("\n\n"); square(num); return(0); } Na definição de square() dizemos que a função receberá um argumento inteiro x. Quando fazemos a chamada à função, o inteiro num é passado como argumento. Há alguns pontos a observar. Em primeiro lugar temos de satisfazer aos requesitos da função quanto ao tipo e à quantidade de argumentos quando a chamamos. Apesar de existirem algumas conversões de tipo, que o C faz automaticamente, é importante ficar atento. Em segundo lugar, não é importante o nome da variável que se passa como argumento, ou seja, a variável num, ao ser passada como argumento para square() é copiada para a variável x. Dentro de square() trabalha-se apenas com x. Se mudarmos o valor de x dentro de square() o valor de num na função main() permanece inalterado. Vamos dar um exemplo de função de mais de uma variável. Repare que, neste caso, os argumentos são separados por vírgula e que deve-se explicitar o tipo de cada um dos argumentos, um a um. Note, também, que os argumentos passados para a função não necessitam ser todos variáveis porque mesmo sendo constantes serão copiados para a variável de entrada da função. #include <stdio.h> int mult (float a, float b,float c) /* Multiplica 3 numeros */ { printf ("%f",a*b*c); return(0);
Compartilhar