Apresentação para o Hack Thursday (http://hackthursday.com/) sobre a linguagem C. Pode servir como uma introdução para a linguagem. O material é inspirado nesse curso aqui: http://www.cs.cf.ac.uk/Dave/C/ Para quem não participou da apresentação pode ser mais didático olhar o link.
Esta mensagem e quaisquer arquivos em anexo podem conter informações confidenciais e/ou privilegiadas. Se você não for o destinatário ou a pessoa autorizada a receber esta mensagem, por favor não leia, copie, repasse, imprima, guarde, nem tome qualquer ação baseada nestas informações. Por favor notifique o remetente imediatamente por e-mail e apague a mensagem permanentemente. Este ambiente está sendo monitorado para evitar o uso indevido de nossos sistemas.
História da computação - Parte 1 de 2 - Do princípio até 1936Vinícius Hax
Nessa apresentação eu falo sobre como a história da computação ocorreu dos primórdios da ciência até a proposição da Máquina de Turing pelo cientista inglês Alan Turing no ano de 1936
Eu gravei um vídeo com essa apresentação e o disponibilizei no meu canal do YouTube https://youtu.be/4G6VK5sX1Pk
Do Zero ao YouTube em menos de 10 softwares livresVinícius Hax
Nessa apresentação eu falo os bastidores da criação de um curso ead que eu criei "Administração de sistemas Linux"
O curso foi feito usando exclusivamente softwares livres
Apresento alguns paralelos entre a série de filmes Star Wars e o movimento Software Livre. É uma palestra para iniciantes e vai procurar incentivar as pessoas a usar Software Livre da mesma maneira que geralmente as pessoas imaginam participar da rebelião nos filmes. É uma versão atualizada de uma palestra anterior minha com o mesmo título.
Apresento alguns paralelos entre a série de filmes Star Wars e o movimento Software Livre. É uma palestra para iniciantes e vai procurar incentivar as pessoas a usar Software Livre da mesma maneira que geralmente as pessoas imaginam participar da rebelião nos filmes.
Introdução à Computação de Alto Desempenho - Parte IIVinícius Hax
Introdução à Computação de Alto Desempenho. Essa apresentação foi usada como base para uma aula de Sistemas Distribuídos ministrada na FURG. Pode servir como introdução ao tema. Para mais informações sobre o assunto consultar as referências ao final da apresentação. Nas minhas apresentações aqui no slideshare existe a parte I que aborda conceitos complementares. Embora não exista uma dependência rígida entre as duas apresentações é recomendável visualizar a parte 1 primeiro. O endereço da parte 1 é: http://www.slideshare.net/viniciushax/introduo-computao-de-alto-desempenho
Introdução à Computação de Alto Desempenho - Parte IVinícius Hax
Introdução à Computação de Alto Desempenho. Essa apresentação foi usada como base para uma aula de Sistemas Distribuídos ministrada na FURG. Pode servir como introdução ao tema. Para mais informações sobre o assunto consultar as referências ao final da apresentação. Nas minhas apresentações aqui no slideshare existe uma parte II que aborda conceitos complementares.
Como ficar milionário, só que ao contrário!Vinícius Hax
Apresentação feita no IV Fórum do Engenheiro Empreendedor. Apresenta alguns erros que cometi e desafios que enfrentei nos meus empreendimentos. Ao final deixo algumas dicas de como começar a empreender.
⇒ Filosofia dos sistemas Unix e como os utilitários se interligam
⇒ O que é shell? O que é bash?
⇒ Entrada e saída em bash
⇒ Estruturas de controle no bash (for, if, while)
⇒ Alguns utilitários interessantes: awk, head, tail, sort, etc
Instalação de softwares em sistemas baseados no DebianVinícius Hax
Nessa palestra são abordadas as principais maneiras de instalar um programa no Ubuntu e nas distribuições que usam pacotes .deb
⇒ O que é o Debian? E Ubuntu?
⇒ Instalação via binários
⇒ Compilação do código-fonte
⇒ O que é um pacote? O que é um arquivo .deb?
⇒ Instalação de software usando apt, aptitude e dpkg
⇒ Instalação de software usando a interface gráfica
Nessa palestra levantei alguns questionamentos e discussões a respeito do crescimento do Linux no Desktop.
Como seria possível aumentar a participação do Linux nos desktops? Apresentei um humilde plano que talvez possa se tornar uma contribuição à longo prazo.
Foi um momento para reflexão e discussão do que estamos fazendo e do que poderíamos fazer à respeito. Os participantes foram convidados à participar ativamente.
1. Conhecendo ou relembrando C
Vinícius Alves Hax
Baseado no material de Dave Marshall
Hack Thursday
Novembro de 2012
2. Engenheiro de Computação (FURG), Especialista em
Aplicações para Web (FURG)
Cursando Mestrado em Eng. de Computação
Analista de TI no C3/FURG
Empreendedor www.zetaops.com.br
5. BCPL (Basic Combined Programming Language) (66)
GET LIBHDR
LET START( ) = VALOF $ (
FOR I = 1 TO 5 DO
WRITEF(%N! = %I 4 ∗N , I , FACT( I ) )
RESULTIS 0
)$
AND FACT(N) = N = 0 − 1 , N ∗ FACT(N − 1 )
6. B: Ken Thompson e Dennis Ritchie (1969)
B = BCPL sem frescuras (precisava caber na memória)
9. O que levou a ser popular:
Pequena
Tipagem fraca
Linguagem estruturada
Operações bit-a-bit
Implementação de ponteiros
10. C se tornou uma linguagem prossional por diversas razões:
Construções de alto nível
Suporta operações de baixo nível
Produz programas ecientes
Pode ser compilada em muitos tipos de arquiteturas
11. https://gist.github.com/4171628
#i n c l u d e s t d i o . h
main ( t , _, a )
char ∗a ;
{return !0 t ? t 3?main ( − 79 , − 13 , a+main ( − 87,1 −_,
main ( − 86 , 0 , a+1 )+a ) ) : 1 , t_? main ( t +1, _, a ) : 3 , main ( − 94, −27+t , a
)t == 2 ?_13 ? main ( 2 , _+1, %s %d %dn ) : 9 : 1 6 : t 0?t −72?main (_,
t , @n '+ ,# '/ ∗ {}w+/w#c d n r /+ ,{} r / ∗ de }+ ,/ ∗ { ∗ + ,/w{%+,/w#q#n+,/#{ l ,+ ,/ n{n+
,/+#n+,/#;#q#n+,/+k #; ∗ + ,/ ' r : ' d ∗ ' 3 , } {w+K w 'K: '+} e # '; dq#' l q#'+d 'K#!/
+k#;q#' r }eKK#}w ' r }eKK{ n l ] '/#;# q#n '){)#}w ' ) { ) { n l ]'/+#n ' ; d} rw ' i ;# ) { n
l ] ! / n{n # '; r{#w ' r nc { n l ] '/#{ l ,+ 'K { rw ' iK { ; [ { n l ] ' / w#q#
n ' wk nw ' iwk {KK{ n l ] ! / w{%' l##w#' i ; : { n l ] ' / ∗ { q#' l d ; r ' } { nlwb ! / ∗ de } ' c
; ; { n l ' − {} rw ]'/+,}##' ∗ }# nc , ' , # nw] '/+ kd '+ e }+;
#' r d q#w ! n r ' / ' ) }+}{ r l #'{n ' ')# } '+}##(!!/ )
: t −50?_==∗a ? p u t c h a r ( a [ 3 1 ] ) : main ( − 65 ,_, a +1): main ( ( ∗ a == ' / ' )+t , _, a
+1 ):0 t ? main ( 2 , 2 , %s ) : ∗ a==' / ' | | main ( 0 , main ( − 61 , ∗ a , ! ek ; dc
i@bK ' ( q ) − [w]∗%n+r 3#l , { } : nuwloca −O;m . vpbks , f x n t d C e g h i r y ) , a +1);}
16. Saída formatada:
p r i n t f ( %c %f %d , ch , r e a l _ v a l , i n t _ v a l ) ;
17. Variáveis:
Globáis: Denidas fora de funções
Estáticas: Mantém seu valor entre múltiplas chamadas
void stat (); /∗ prototype fn ∗/
main ( )
{ int i;
f o r ( i =0; i 5;++ i )
stat ();
}
stat () {
int auto_var = 0 ;
static int static_var = 0;
p r i n t f ( a u t o = %d , s t a t i c = %d n , auto_var , s t a t i c _ v a r ) ;
++auto_var ;
++s t a t i c _ v a r ;
}
24. switch ( letter )
{
case'A ' :
case'E ' :
case'I ':
case'O ' :
case'U ' :
n u m b e r o f v o w e l s ++;
break ;
case ' ':
n u m b e r o f s p a c e s ++;
break ;
default :
n u m b e r o f c o n s t a n t s ++;
break ;
}
33. char firstname [ 5 0 ] , lastname [ 5 0 ] , fullname [ 1 0 0 ] ;
f i r s t n a m e= A r n o l d ; / ∗ I l l e g a l ∗ /
l a s t n a m e= S c h w a r z n e g g e r ; / ∗ I l l e g a l ∗ /
f u l l n a m e= Mr+f i r s t n a m e
+l a s t n a m e ; / ∗ I l l e g a l ∗ /
35. float findaverage ( float a, float b)
{ float average ;
a v e r a g e =(a+b ) / 2 ;
return ( average ) ;
}
main ( )
{
float a =5,b=15 , r e s u l t ;
r e s u l t=f i n d a v e r a g e ( a , b ) ;
p r i n t f ( a v e r a g e=%f n , r e s u l t ) ;
}
37. struct gun
{
char name [ 5 0 ] ;
int magazinesize ;
float calibre ;
};
struct gun a r n i e s ;
struct gun a r n i e s ={ U z i , 3 0 , 7 } ;
38. typedef s t r u c t gun
{
char name [ 5 0 ] ;
int magazinesize ;
float calibre ;
} agun ;
agun a r n i e s ={ U z i , 3 0 , 7 } ;
a r n i e s g u n s [ 5 0 ] . c a l i b r e =100;
39. Casting
i n t integernumber ;
f l o a t floatnumber =9.87;
i n t e g e r n u m b e r =( i n t ) f l o a t n u m b e r ;
40. Ponteiros são uma parte fundamental do C. Usar C sem
ponteiros é perder boa parte do poder e exibilidade que a
linguagem permite. O segredo de usar C é usar ponteiros.
41. Por que ponteiros são importantes?
É a única maneira de expressar certas computações
Produz código compacto e eciente
Provê uma ferramenta poderosa
C usa ponteiros com:
Arrays
Estruturas
Funções
42. - Retorna o endereço de uma variável
* - Retorna o conteúdo de um objeto apontado por um
ponteiro
int *pointer;
45. int ∗ip ;
int x;
i p = x ;
∗ ip = 100;
float ∗flp , ∗ flq ;
∗ f l p = ∗ f l p + 10;
++∗ f l p ;
( ∗ f l p )++;
flq = flp ;
46. int a [10] , x ;
int ∗ pa ;
pa = a [ 0 ] ; / ∗ pa pointer to address of a [0] ∗/
x = ∗ pa ;
/∗ x = c o n t e n t s of pa ( a [ 0 ] in this c a s e ) ∗/
47. int ∗ip ;
ip = ( int ∗ ) m a l l o c (100 ∗ sizeof ( int ));
48. Exercício 2: Denir o tipo de dados número complexo. Fazer
uma função que dado dois números complexos, retorne um
número complexo com a soma de ambos.