Apostila de Linguagem C

Apostila de Linguagem C

(Parte 1 de 4)

FIT - Faculdade de Informática de Taquara Curso de Sistemas de Informação

Apostila de Programação I - Linguagem de Programação C -

“Material até a Prova G1”

Profa. Flávia Pereira de Carvalho

Março de 2008

Apostila de Programação I – Linguagem C

Sumário

1 INTRODUÇÃO4
2 COMPILADORES E INTERPRETADORES5
2.1 COMPILADORES C5
2.1.1 Compilador GCC (GNU Compiler Collection)6
2.1.2 Compilador Dev-C++6
2.1.3 Compilador C++ Builder - Borland6
2.1.4 Compilador Turbo C Borland6
2.1.5 Compilador Visual C# - Microsoft7
3 CONSIDERAÇÕES INICIAIS E DICAS7
3.1 A LINGUAGEM C É “CASE SENSITIVE”7
3.2 VARIÁVEIS7
3.2.1 Declarações8
3.2.2 Notação Húngara8
3.2.3 Inicialização de Variáveis (Atribuição)9
3.3 CARTÃO DE REFERÊNCIA DA LINGUAGEM ANSI C10
3.4 TIPOS DE DADOS10
4 INÍCIO DO APRENDIZADO: DOIS PRIMEIROS PROGRAMAS12
4.1 PRIMEIRO EXEMPLO DE UM PROGRAMA EM C12
4.2 SEGUNDO EXEMPLO DE UM PROGRAMA EM C13
5 AUTO AVALIAÇÃO: 1ª. PARTE DA DISCIPLINA13
6 MATRIZES UNIDIMENSIONAIS - VETORES (OU ARRAY)14
7 FUNÇÕES: SCANF( ) E PRINTF( )15
8 CARACTERES: LENDO E ESCREVENDO17
9 INTRODUÇÃO A ALGUNS COMANDOS DE CONTROLE DE FLUXO18
9.1 COMANDO IF18
9.1.1 Ifs Aninhados19
10 OPERADORES20
10.1 OPERADORES ARITMÉTICOS20
10.2 OPERADORES RELACIONAIS21
10.3 OPERADORES LÓGICOS21
10.4 OPERADOR DE ENDEREÇO &2
10.5 PRIORIDADES DOS OPERADORES23
1 ESTRUTURAS DE REPETIÇÃO (LAÇOS)24
1.1 WHILE (ENQUANTO-FAÇA)24
1.2 DO-WHILE (FAÇA-ENQUANTO)25
1.3 FOR (PARA)25
1.4 EXERCÍCIOS DE FIXAÇÃO26
12 STRINGS27
12.1 LENDO STRINGS DO TECLADO: COM MAIS DE UMA PALAVRA (COM ESPAÇOS EM BRANCO)28
12.2 EXERCÍCIOS COM STRINGS (TÍPICOS DE PROVA)29
13 INTRODUÇÃO ÀS FUNÇÕES30
13.1 ARGUMENTOS (PARÂMETROS)30
13.2 RETORNANDO VALORES31
14 AUTO AVALIAÇÃO: 2ª. PARTE DA DISCIPLINA32

Apostila de Programação I – Linguagem C 3

Apostila de Programação I – Linguagem C

Profa. Flávia Pereira de Carvalho – fpereira@faccat.br – http://fit.faccat.br/~fpereira 4

1 Introdução

A Linguagem de Programação C foi primeiramente criada por Dennis Ritchie e Ken Thompson nos laboratórios da empresa Bell, em 1972. C foi baseada na Linguagem B de Thompson, que por sua vez era uma evolução da Linguagem BCPL (o que nos leva a concluir que uma próxima evolução desta linguagem gerasse a linguagem P ;-D ). Esta linguagem foi inicialmente concebida para ser utilizada no Sistema Operacional Unix.

A definição de C está contida em um livro escrito pelo próprio Dennis Ritchie, juntamente com Brian Kernighan cujo título é C - A Linguagem de Programação padrão ANSI1 (American National Standards Institute). É um livro quase obrigatório para quem estiver estudando a linguagem C. Uma fonte alternativa de aprendizado são os milhares de tutoriais, apostilas e livros disponíveis na Internet. É bom prestar muita atenção neste tipo de fonte, pois nem sempre o material é confiável. Mas aí vai uma dica: o livro C / C++ e Orientação a Objetos em Ambiente Multiplataforma foi escrito pelo Prof. Sergio Villas-Boas da UFRJ e é encontrado na Internet facilmente para download gratuito (no formato PDF).

C é uma linguagem de programação genérica que é utilizada para criação de programas diversos como processadores de texto, planilhas eletrônicas, sistemas operacionais, programas de comunicação, programas para automação industrial, gerenciadores de bancos de dados, programas para solução de problemas da Engenharia, Física, Química e outras Ciências etc. É bem provável que o Navegador Web que você usou para acessar este material tenha sido escrito em C ou C++.

C é freqüentemente chamada de linguagem de médio nível para computadores. Isso não significa que C seja menos poderosa, difícil de usar ou menos desenvolvida que uma linguagem de alto nível como Pascal, tampouco implica que C seja similar à linguagem assembly e seus problemas correlatos aos usuários. C é tratada como uma linguagem de médio nível porque combina elementos de linguagens de alto nível com a funcionalidade da linguagem assembly.

Como uma linguagem de médio nível, C permite a manipulação de bits, bytes e endereços – os elementos básicos com os quais o computador funciona. Um código escrito em C é muito portável. Portabilidade significa que é possível adaptar um software escrito para um tipo de computador a outro. Por exemplo, se você pode facilmente converter um programa escrito para DOS de tal forma a executar sob Windows, então esse programa é portável. Por haver compiladores C para quase todos os computadores, é possível pegar um código escrito para uma máquina, compilá-lo e rodá-lo em outra com pouca ou nenhuma modificação. Esta portabilidade economiza tempo e dinheiro. Os compiladores C também tendem a produzir um código-objeto muito compacto e rápido.

Embora o termo “linguagem estruturada em blocos” não seja rigorosamente aplicável a C, ela é normalmente referida simplesmente como linguagem estruturada. C tem muitas semelhanças com outras linguagens estruturadas, como Pascal, por exemplo. A razão pela qual C não é, tecnicamente, uma linguagem estruturada em blocos, é que as linguagens estruturadas em blocos permitem que procedimentos e funções sejam declarados dentro de procedimentos e funções. No entanto, como C não permite a criação de funções dentro de funções, não pode ser chamada formalmente de uma linguagem estruturada em blocos [SCH97].

1 Esse livro pode ser adquirido diretamente na Editora Campus. Na página da disciplina de Programação I, na seção Downloads, está disponível o link direcionado para a compra. E também tem a disposição dos alunos na nossa biblioteca.

Apostila de Programação I – Linguagem C

Profa. Flávia Pereira de Carvalho – fpereira@faccat.br – http://fit.faccat.br/~fpereira 5

2 Compiladores e Interpretadores

Os termos compiladores e interpretadores referem-se à maneira como um programa é executado. Existem dois métodos gerais pelos quais um programa pode ser executado. Em teoria, qualquer linguagem de programação pode ser compilada ou interpretada, mas algumas linguagens geralmente são executadas de uma maneira ou de outra. A maneira pela qual um programa é executado não é definida pela linguagem em que ele é escrito. Interpretadores e compiladores são simplesmente programas sofisticados que operam sobre o código-fonte do seu programa.

Um interpretador lê o código-fonte do seu programa uma linha por vez, executando a instrução específica contida nessa linha. Um compilador lê o programa inteiro e converte-o em um código-objeto, que é uma tradução do código-fonte do programa em uma forma que o computador possa executar diretamente.

Quando um interpretador é usado, deve estar presente toda vez que você executar o seu programa. O processo é lento e ocorre toda vez que o programa for executado. Um compilador, ao contrário, converte seu programa em um código-objeto que pode ser executado diretamente por seu computador. Como o compilador traduz seu programa de uma só vez, tudo o que você precisa fazer é executar se programa diretamente, geralmente apenas digitando seu nome. Assim, o tempo de compilação só é gasto uma vez, enquanto o código interpretado incorre neste trabalho adicional cada vez que o programa executa [SCH97].

2.1 Compiladores C

Existem diversos compiladores C / C++ disponíveis para os programadores. A decisão sobre qual compilador utilizar pode ser baseada em vários fatores, como por exemplo:

• Qualidade do compilador - é rápido

- está conforme com a padronização da linguagem

- a interface com o usuário é agradável - possui ou não um IDE (Integrated Development Enviroment)

- possui diversas opções de compilação; etc.

• Sistema(s) Operacional(is) que o compilador funciona (e gera códigos)

• Custo do compilador

• Documentação disponível e Suporte

Dentro deste cenário, temos também um fator determinante: quais são os compiladores mais utilizados atualmente? Esta informação é muito importante, pois é indicado que estejamos habituados e com experiência naquele compilador que provavelmente tenhamos que utilizar em algum futuro emprego ou projeto de pesquisa que venhamos a nos engajar.

Apostila de Programação I – Linguagem C

Profa. Flávia Pereira de Carvalho – fpereira@faccat.br – http://fit.faccat.br/~fpereira 6

2.1.1 Compilador GCC (GNU Compiler Collection)

O compilador GCC http://www.gnu.org/software/gcc/gcc.html é da GNU2 (Free Software Foundation). É sem dúvida um "líder" no mercado de compiladores C atualmente e é o que iremos utilizar na disciplina de Programação I. É o compilador padrão do sistema operacional GNU/Linux e também foi adotado por (ou portado para) vários outros sistemas operacionais (inclusive S.O. comerciais pagos), tais como HPUX, MS-Windows, MS-DOS, IBM OS2, IBM AIX, SUN OS, SUN Solaris etc, além é claro do próprio GNU/Linux, onde este compilador é utilizado no desenvolvimento do próprio sistema operacional e de todas as ferramentas nele disponíveis (ou seja, é o compilador 'nativo' do Linux).

Outro detalhe importante é que todas as distribuições Linux já vêm com um compilador GCC disponível, ou seja, se você tem um computador com Linux instalado, você tem um compilador GCC pronto para ser utilizado. Mas caso você precise instalar o GCC em outro S.O., tal como o Windows, vá em: http://gcc.gnu.org/install/binaries.html (embora em um primeiro momento, por motivos de facilidade na utilização, seja extremamente recomendado que você utilize o GCC no Linux, e só após estar familiarizado tente instalá-lo em algum outro S.O.).

Compilador Free Software (GPL3 - General Public License), para Windows, com um IDE 'respeitável'

(editor, compilador e debug integrados). Para efetuar o download gratuito, acesse:

http://fit.faccat.br/~fpereira/devcpp-4.9.9.2_setup.zip Este compilador é o mais recomendado para quem quiser trabalhar no Windows.

2.1.3 Compilador C++ Builder - Borland

Outro compilador C muito conhecido e utilizado é o da empresa Borland4 , certamente uma das empresas mais conhecidas na área de linguagens de programação (Delphi, Turbo Pascal, Turbo C, Kylix etc.).

O compilador C++ Builder pode ser baixado gratuitamente (versão de avaliação - 60 dias) no endereço: http://www.borland.com/bcppbuilder/tryitnow.html

2.1.4 Compilador Turbo C Borland

Este é um dos compiladores C mais conhecidos (e antigos) na micro-informática. A Borland disponibiliza o Turbo C gratuitamente no site da empresa (após um rápido cadastro). Você pode baixá-lo diretamente em: http://fit.faccat.br/~fpereira/tc201.zip Este compilador roda em "modo MS-DOS". É muito simples, mas funciona perfeitamente em muitas versões de Windows.

Dicas para instalação: ao descompactar o arquivo, serão criadas três pastas (disk1, disk2 e disk3). A forma de instalação correta solicita que cada uma destas pastas seja descompactada em um disquete de 3,5" e a instalação seria então iniciada a partir do Disk1. Mas também é possível realizar o procedimento de instalação da seguinte forma:

1. Descompactar todos os arquivos em uma única pasta 2. Iniciar o processo de instalação executando o arquivo 'install.exe'

2 Maiores informações sobre o projeto GNU em: http://www.gnu.org/ 3 Maiores informações em: http://www.gnu.org/copyleft/gpl.html 4 Maiores informações sobre a empresa Borland em: http://www.borland.com/br/

Apostila de Programação I – Linguagem C

Profa. Flávia Pereira de Carvalho – fpereira@faccat.br – http://fit.faccat.br/~fpereira 7

3. Tão logo inicia a instalação, o software instalador solicita a informação sobre o drive de origem da instalação: digite o drive onde a pasta foi criada (possivelmente C:) e confirme o caminho da pasta que o próprio instalador irá sugerir.

Tudo pronto: vá em File - New e digite seu primeiro programa. Para compilá-lo e rodá-lo vá em Run - Run.

2.1.5 Compilador Visual C# - Microsoft

O compilador C da Microsoft é outro com muitos usuários. Algumas informações em: http://www.microsoft.com/brasil/msdn/csharp/default.mspx http://www.microsoft.com/brasil/msdn/csharp/articles.mspx

3 Considerações Iniciais e Dicas

Neste capítulo serão apresentadas algumas dicas importantes sobre a linguagem C e alguns comentários iniciais para que possamos iniciar os primeiros programas.

Antes disso é necessário dizer algumas palavras sobre C++. Algumas vezes os novatos confundem o que é C++ e como difere de C. C++ é uma versão estendida e melhorada de C que é projetada para suportar programação orientada a objetos (OOP, do inglês Object Oriented Programming). C++ contém e suporta toda linguagem C e mais um conjunto de extensões orientadas a objetos. Ou seja, C++ é um superconjunto de C. Como C++ é construída sobre os fundamentos de C, você não pode programar em C++ se não entender C.

Hoje em dia, e por muitos anos ainda, a maioria dos programadores ainda escreverá, manterá e utilizará programas C, e não C++. Como mencionado, C suporta programação estruturada, que tem se mostrado eficaz ao longo de todos estes anos nos quais tem sido largamente usada. C++ é projetada principalmente para suportar OOP, que incorpora os princípios da programação estruturada, mas inclui objetos. Embora a OOP seja muito eficaz para uma certa classe de tarefas de programação, muitos programas não se beneficiam da sua aplicação.

Com relação aos compiladores: todos os compiladores que podem compilar programas C++ também podem compilar programas C.

3.1 A Linguagem C é “case sensitive”

Um ponto de suma importância: C é "case sensitive", ou seja, 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 (todas as palavras-chave) da linguagem 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.

3.2 Variáveis

Primeiramente com relação aos nomes das variáveis (e também das funções) -- em C os identificadores podem ter qualquer nome se duas condições forem satisfeitas:

• O nome deve começar com uma letra ou sublinhado ( _ )

• Os caracteres subseqüentes devem ser letras, números ou sublinhado ( _ ).

Apostila de Programação I – Linguagem C

Profa. Flávia Pereira de Carvalho – fpereira@faccat.br – http://fit.faccat.br/~fpereira 8

Além dessas duas condições acima, ainda há mais duas restrições:

• O nome de uma variável não pode ser igual a uma palavra reservada (palavra-chave), nem igual ao nome de uma função declarada pelo programador, ou pelas bibliotecas do C. Variáveis de até 32 caracteres são aceitas.

• É bom sempre lembrar que C é uma linguagem "case sensitive" e, portanto deve-se prestar atenção às maiúsculas e minúsculas.

3.2.1 Declarações

Todas as variáveis devem ser declaradas antes de serem usadas. Uma declaração especifica um tipo, e é seguida por uma lista de uma ou mais variáveis daquele tipo, tal como nos seguintes exemplos:

int inicio, fim, numero; float valor; short int codigo; char c, linha [100];

3.2.2 Notação Húngara

Programadores normalmente não escolhem os nomes de variáveis, funções e constantes ao mero acaso. Normalmente elegem nomes que signifiquem e indiquem o motivo da existência daquela variável ou função dentro do programa. O problema é que determinada palavra ou sigla pode significar muito para uma determinada pessoa e nada para outra. Por este motivo é muito interessante que exista uma convenção quanto a nomenclatura para esses identificadores.

Você já deve ter ouvido falar sobre algo chamado de “notação húngara”. Talvez nunca tenha ouvido, mas provavelmente já viu. É quando você tem variáveis parecidas com as seguintes:

intComputadores = 20 dtHoje = #07/01/05# strNomeComputador = "server1"

A nomeação de variáveis dessa forma é uma prática comum de programação. Tudo o que você está fazendo é criando um nome de variável, como intComputadores e, em seguida, prefixando-a com o tipo de informação que será armazenado nela. Portanto, se você estiver usando a variável intComputadores para manter o número de computadores, usará um inteiro para designar o número. Portanto, o prefixo int. Isso é tudo. Isso ajuda a evitar que você pense que talvez intComputadores mantenha os nomes dos computadores, o que seria uma seqüência de caracteres e não um inteiro.

Por que húngara? Porque a primeira pessoa a propor esse tipo de nomenclatura de variáveis foi o exengenheiro da Microsoft, Charles Simonyi, que era húngaro.

(Parte 1 de 4)

Comentários