Sei sulla pagina 1di 9

UFSC / CTC / INE Disciplina: Computa c ao Cient ca I

Curso de Engenharia Eletr onica: INE5231 Prof. Dr. Jo ao Dovicchi

Aula Pr atica 1a - Unix

Nesta aula vamos compreender alguns conceitos do ambiente a ser utilizado nas aulas de Computa c ao Cient ca. Em primeiro lugar, vamos compreender alguns princ pios b asicos do sistema Unix e, posteriormente, alguns aplicativos para compilar programas em C. Embora existam diversas interfaces de programa c ao ou Integrated Development Environment (IDE), e fundamental que o aluno use um editor simples, uma vez que ele deve compreender aspectos fundamentais da estrutura da linguagem.

1.1

O sistema Unix

O sistema Unix, diferentemente do que muitos acreditam, tem todas as ferramentas de desenvolvimento e interface gr aca (anterior ao sistema de janelas do DOS, hoje conhecido como Microsoft Windows). Muito embora existam diversos GUI (Graphical User Interface), o conceito do Unix e bem diferente de outros sistemas operacionais. Enquanto o MS Windows e um sistema operado por disco (DOS), os sistemas Unix (FreeBSD, Sun OS, AIX, HPUX etc.) e os Unices-like (Linux, BeOS, Hurd, Inferno etc.) s ao baseados no paradigma preemptivo de pagina c ao de mem oria. O aluno deve saber como utilizar um terminal para se conectar a um sistema Unix dispon vel. Para as aulas pr aticas o aluno deve familiarizar-se com o ambiente do terminal do Unix (Shell), bem como com os comandos b asicos

http://www.inf.ufsc.br/~dovicchi --- dovicchi@inf.ufsc.br

para criar e editar arquivos de programa, manipular arquivos e diret orios, compilar programas em C e execut a-los. 1.1.1 A linha de comandos (bash)

O Bourne Again Shell (bash) e um dos mais poderosos interpretadores de comandos do terminal Unix. Geralmente, sistemas como Linux, FreeBSD, SunOS e outros implementam este tipo de interpretador por default. Normalmente, o sinal de pronto (prompt) do bash e algo semelhante a: bash-2.05b$ ele indica que o sistema est a pronto, esperando a entrada de uma linha de comando. Nestes roteiros, o sinal de pronto ser a representado pelo sinal $. No caso da m aquina haskell, o prompt tem o nome do usu ario e da m aquina seguido do diret orio corrente: [jcd@haskell ~]$ onde o sinal de til representa o diret orio $HOME (digite pwd para ver o diret orio corrente). Uma das melhores facilidades do bash e o fato de ele completar a linha de comandos quando usamos a tecla <tab>. Por exemplo, ao digitarmos: $ a<tab><tab> o sistema retornar a todos os comandos dispon veis no $PATH do usu ario que comecem com a letra a. Para as atividades pr aticas o aluno deve conhecer alguns comandos b asicos para lidar com arquivos e executar algumas tarefas. a tabela 1 apresenta alguns comandos b asicos. Um fato importante e que o Unix sempre considera que o comando deve ser executado. Raramente, o sistema pede a conrma c ao. Alguns comandos t em uma op c ao para pedir conrma c ao (p. ex. rm -i sempre pedir a conrma c ao antes de remover o arquivo).

Comando cd cp ls man mkdir mv pwd rm

Descri c ao (use man <comando> para mais informa c oes) Muda diret orio. Copia arquivo. Lista os arquivos do diret orio corrente. exibe a p agina de manual. cria um diret orio. Move (ou renomeia) arquivo. exibe o path do diret orio corrente. remove arquivo. Tabela 1: Comandos b asicos do Unix

1.1.2

Edi c ao arquivos

Existem v arios editores de texto no Unix. O mais usado, certamente e o Vi. Outros editores como o pico, nano, mcedit, joe e emacs podem ser usados. O aluno deve escolher o que melhor lhe servir e utiliz a-lo na edi c ao de seus textos de programas. Embora o Vi seja um tanto diferente de outros editores, ele e um dos mais poderosos e, al em disso, e universalmente encontrado nas m aquinas Unix. No entanto, os outros s ao mais amig aveis. O pico e o editor de textos do pine e o mcedit e o editor do midnight commander. O joe e um tipo de wordstar. Entretanto, nada impede que os arquivos sejam editados no seu editor de prefer encia (inclusive em outro sistema) e depois copiado para a m aquina onde ser ao feitas as pr aticas, desde que estes estejam no formato de texto puro. No entanto, e importante lembrar que os sistemas Unix n ao usam dois caracteres de m de linha, mas apenas o caractere ASCII 10 (\x0A ou LF). Assim, ao tentarem abrir um arquivo texto editado no Unix em um sistema DOS, o arquivo poder a n ao estar corretamente formatado. O DOS utiliza dois caracteres ASCII como nal de linha 10 13 (\x0A\x0D ou LF CR).

Roteiro 1
O aluno deve acessar e aplicar, na pr atica, o que foi aprendido sobre o sistema operacional Unix. Uso do comando ls para listar arquivos; Criar, renomear e apagar diret orios; e 3

Aplicar os comandos cat, echo, tail, head e more. Usar um editor de texto (vi, nano, mcedit etc.) para editar um texto e selecionar um de sua prefer encia.

Roteiro 2

1. Crie um diret orio codeem seu $HOME e entre nele. No shell do Unix fa ca: $ mkdir code $ cd code 2. Crie um arquivo pratica1.c, usando seu editor de prefer encia 1 , com o c odigo: Listagem 1: Programa pratica1.c
/* Programa em C - Aula pr a tica 1 */ # include < stdlib .h > # include < stdio .h > int main (){ printf ( " hello world !\ n " ); exit (0); }

3. Para entender a compila c ao vamos usar o gcc que e um compilador da linguagem C.


$ gcc -O2 -Wall -ansi -pedantic -o pratica1 pratica1.c

1 Voc e pode criar este arquivo no seu computador e envi a-lo para o seu diret orio $HOME/code/ ou edit a-lo no pr oprio diret orio usando o vi ou seu editor de prefer encia.

O comando gcc invoca o Gnu C Compiler e os par ametros iniciados com o sinal de menos s ao op c oes de compila c ao. Por exemplo: -O: n vel de otimiza c ao do c odigo -W: n vel de warning -ansi: o c odigo fonte e padr ao ANSI C -pedantic: para compila c ao restritiva ` as op c oes -o: arquivo de output Existem muitas op c oes de compila c ao que podem ser encontradas no manual do GCC (man gcc). 4. O aluno deve aprender a usar o comando man para vericar os comandos e fun c oes da linguagem C. Por exemplo:
$ man 3 printf

Aula Pr atica 1b - Introdu c ao ao C

A linguagem C tem uma estrutura relativamente simples, conforme vimos na teoria. Nesta pr atica vamos compreender os pragmas e declara c oes; vari aveis e constantes; Declara c oes de cabe calho. Para isto criar os arquivos de programa-fonte, compil a-los e execut a-los. Dicas: 1. Crie um diret orio de trabalho (por ex. prat-02). 2. Entre no diret orio e use-o para a aula. 3. Use um editor para digitar o programa. Observe que a c opia de um arquivo pdf pode n ao estar correta. 4. Salve o arquivo e compile o programa no diret orio de trabalho. Ser a mais f acil para manter tudo organizado.

4.1

Roteiro 1

1. Digite o programa em C, conforme o c odigo da listagem 2 Listagem 2: Programa sol-triang.c


/* sol - triang . c */ # include < stdlib .h > # include < stdio .h > # include < math .h > float soluc ( float , float ); int main (){ float a , b =5.0 , c =8.0; a = soluc (b , c ) printf ( " % f \ n " , a ); exit (0); } float soluc ( float x , float y ){ float r ; r = sqrt ( x * x + y * y ); return r ; }

2. Compile o programa: $ gcc -O2 -Wall -ansi sol-triang.c -lm Nota: como o programa usa uma fun c ao matem atica, e necess ario usar a biblioteca matem atica (/usr/share/lib/libm.a) onde se encontram os s mbolos para as fun c oes como sqrt, sin, cos, atan etc. para o C/C++. 3. Rode o programa: $ ./a.out

4. Altere o programa, dividindo-o em partes (como nas listagens 3, 4, 5). Listagem 3: Programa sol-triang.c
/* sol - triang . c */ # include " local . h " int main (){ float a , b =5.0 , c =8.0; a = soluc (b , c ) printf ( " % f \ n " , a ); exit (0); }

Listagem 4: Programa local.h


/* local . h */ # include < stdlib .h > # include < stdio .h > # include < math .h > float soluc ( float , float );

Listagem 5: Programa soluc.c


/* soluc . c */ # include " local . h " float soluc ( float x , float y ){ float r ; r = sqrt ( x * x + y * y ); return r ; }

5. Compile o programa: $ gcc -O2 -Wall -ansi -o stret sol-triang.c soluc.c -lm

6. Rode o programa:

$ ./stret

4.2

Roteiro 2

1. Digite o programa tipos.c da listagem 6. Listagem 6: Programa tipos.c


# include < stdio .h > # include < stdlib .h > int main (){ printf ( " ( short int ): % i \ n " , sizeof ( short int )); printf ( " ( int ): % i \ n " , sizeof ( int )); printf ( " ( unsigned int ): % i \ n " , sizeof ( unsigned int )); printf ( " ( long int ): % i \ n " , sizeof ( long int )); printf ( " ( unsigned long int ): % i \ n " , \ sizeof ( unsigned long int )); printf ( " ( float ): % i \ n " , sizeof ( float )); printf ( " ( double ): % i \ n " , sizeof ( double )); printf ( " ( long double ): % i \ n " , sizeof ( long double )); printf ( " ( char ): % i \ n " , sizeof ( char )); return 0; }

2. Compile e rode o programa.

3. Fa ca o mesmo com o programa da listagem 7. Listagem 7: Programa endianess.c


# include < stdlib .h > # include < stdio .h > int main (){ short int x =1372; char a ; a =*(& x ); printf ( " a = % c \ n " , a ); printf ( " cont a : % x \ n " , a ); printf ( " cont end x : % X \ n " , *(& x )); exit (0); }

4. Compile, rode, anote e explique o resultado.

Potrebbero piacerti anche