- Se variáveis são declaradas dentro de uma função, então a visibilidade (ESCOPO) destas variáveis é LOCAL. Nenhuma outra função tem acesso a estas variáveis. Uma variável pode ser GLOBAL, ou seja, declarada FORA das funções. Neste caso a variável é VISTA por todas as funções.
- Neste exemplo, a variável media é declarada como GLOBAL. Ela é MODIFICADA diretamente pela função media_nums() e impressa pela função main()
- NOTE que como a função media_nums() não retorna valor então declaramos seu tipo de retorno como void que significa aqui NADA ou VAZIO.
- NOTE também que MESMO que a função retorne um valor, não é obrigatório colocá-la no lado direito do sinal de atribuição.
#include <stdio.h>
float media; /* Variável GLOBAL */
void media_nums(float num1, float num2)
{
media = (num1 + num2)/2;
return;
}
main()
{
float aux1, aux2; /* Variáveis LOCAIS */
printf("\nEntre com numero 1: ");
scanf ("%f",&aux1);
printf("\nEntre com numero 2: ");
scanf ("%f",&aux2);
media_nums(aux1, aux2);
printf ("\nmedia dos 2 numeros é %f\n", media);
}
- Uma função pode ser chamada dentro de qualquer expressão. Por exemplo, para o caso em que a função media_nums() retorna um valor, ela poderia ser usada como:
- NOTE agora que a função media_nums() retorna um float, podemos utilizar este retorno no contexto em que a função foi chamada que é o que ocorre dentro do printf abaixo
- NOTE também que MESMO que a função retorne um valor, não é obrigatório que este valor este sendo recebido por alguma variável, uma função que possui retorno e este retorno não está sendo recebido se comportará como um procedimento (sem retorno).
- OBS.: Variáveis LOCAIS e GLOBAIS podem ter o mesmo nome. A variável LOCAL terá preferência no uso.
#include <stdio.h>
float media_nums(float num1, float num2)
{
float media_local;
media_local = (num1 + num2)/2;
return media_local;
}
main()
{
float media, aux1, aux2, aux3;
printf("\nEntre com numero 1: ");
scanf ("%f",&aux1);).
printf("\nEntre com numero 2: ");
scanf ("%f",&aux2);
media = media_nums(aux1, aux2);
printf ("\nmedia dos 2 numeros multiplicada por 10 é %f\n", 10*media_nums(aux1, aux2));
}
- Computadores executam instruções, portanto, não são realmente capazes de criar números aleatoriamente. Porém existem artifícios de se criar números que variam conforme determinadas condições como sequencias variáveis associadas a data e hora atual por exemplo, a isso chamamos de números pseudo aleatórios. Para conseguir este recurso em C podemos utilizar a função rand() da stblib associada a função srand que configura uma semente de aleatoriedade a função rand, o resultado pode ser conferido no código a seguir:
#include <stdlib.h>
#include <time.h>
#include <stdio.h>
int main(void) {
srand( (unsigned)time(NULL) );
printf("Numero gerado: %d\n", rand() % 10); //Gera números que variam de 0 a 9
return 0;
}
Referências importantes
Ferramentas úteis
- VisualG3: Uma IDE para desenvolvimento de programas em pseudocódigo (freeware), permite editar e compilar programas utilizando uma sintaxe própria de pseudocódigo muito parecida com a que trabalhamos em sala. Muito útil para verificar o funcionamento real dos algoritmos.
- LibreOffice: O LibreOffice é um programa gratuito (freeware) e de código aberto (opensource). Além de editor de textos, planilhas e apresentações tem a ferramenta Draw que permite a criação de fluxogramas.
- VirtualBox: O Oracle VirtualBox é um programa gratuito (freeware) que permite criar e instanciar máquinas virtuais. O uso de máquinas virtuais é bastante interessante quando desejamos ter diferentes sistemas operacionais em um computador bem como quando se está realizando ensaios e deseja-se isolar estes experimentos do sistema principal.
- Ubuntu: O Ubuntu é uma distribuição linux (freeware e opensource) bastante estável e com uma comunidade bastante ativa que está sempre atualizando o sistema e presente nos foruns e redes sociais para dirimir dúvidas.
- LinuxMint: O LinuxMint é uma distribuição linux (freeware e opensource) bastante estável e confortável aos usuários windows, pois traz um gerenciador de janelas configurado de uma forma mais natural para estes usuários e vem com um conjunto de programas pré-instalados que consegue atender a maior parte das demandas inicias.
Orientações para entrega dos trabalhos
- As listas podem ser entregues por email (para cleber.amaral@ifsc.edu.br) até a meia noite do prazo (ou manuscrito em sala caso especificado).
- Assunto do e-mail: "PRG29002 - xxx" onde xxx é "lista de exercicios 1", "desafio 1", etc.
- Nome do arquivo anexo: "seu nome completo/ demais colegas do grupo" - "lista de exercícios 1", "desafio 1", etc.
- Formato do arquivo em anexo: PDF (cada lista num único arquivo feito em editor de texto, exportado para PDF).
- Regra válida a partir de 14/04 (isento apenas trabalhos "lista 1")
- Para os trabalhos não entregues no prazo (não justificados) temos a penalidade de 1 ponto por dia de atraso
- Excepcionalmente para a lista1, entregas até 19/04 (até 6 dias de atraso) terá desconto de 1 ponto apenas, seguindo a regra acima para entregas deste trabalho após 19/04
- Desafios não tem extensão de prazo, não adianta enviar se o prazo se esgotou
- Para o desafio1 o sistema de desconto por dia de atraso foi utilizado, este ficou como exceção
Eventos da área de desenvolvimento
Horário de Monitoria
Sites úteis
- cplusplus.com: Traz tutoriais, artigos e descrições de funções C e C++
- codechef.com: Permite a edição, compilação e testes online de códigos em várias linguagens inclusive ANSI C
- codecademy.com: Tem cursos gratuitos de programação, bastante didáticos em inclusive em português. Porém não tem curso de C, uma alternativa interessante para quem quiser aprender uma outra linguagem que tem boa aceitação inclusive para desenvolvimento de sistemas embarcados é o Python
- kaggle.com: Site tem publicado centenas de algoritmos em diversas linguagens para resolver os mais variados problemas. Tem também competições de algoritmos
Turma Conceitos Numéricos
Conceitos Individuais - Avaliações principais
Conceitos
Matrícula |
A1
|
151002039-0 |
6
|
152000674-8 |
0
|
151001400-4 |
0
|
152000542-3 |
8
|
152001576-3 |
9
|
151006902-0 |
3
|
151005163-5 |
10
|
151005591-6 |
4
|
151003419-6 |
0
|
152000616-0 |
0
|
152000226-2 |
8
|
152000502-4 |
4
|
152001502-0 |
5
|
151001656-2 |
4
|
152000293-9 |
7
|
152000120-7 |
6
|
152006025-4 |
8
|
152000331-5 |
5
|
Consolidação - Avaliações principais
Consolidação
Conceito |
A1
|
10 |
5%
|
9 |
5%
|
8 |
16%
|
7 |
5%
|
6 |
11%
|
<=5 / Ausentes |
55%
|
Conceitos Individuais - Avaliações secundárias
Conceitos
Matrícula |
L1 |
D1 |
L2 |
L3 |
L4 |
L5 |
T7 |
T8
|
151002039-0 |
10 |
0 |
0 |
0 |
8 |
0 |
|
|
152000674-8 |
0 |
0 |
0 |
0 |
0 |
0 |
|
|
151001400-4 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0
|
152000542-3 |
10 |
0 |
8 |
10 |
10 |
9 |
|
|
152001576-3 |
6 |
0 |
3 |
0 |
9 |
10 |
|
|
151006902-0 |
0 |
10 |
0 |
0 |
0 |
0 |
|
|
151005163-5 |
0 |
0 |
0 |
0 |
0 |
0 |
|
|
151005591-6 |
10 |
0 |
9 |
9 |
0 |
0 |
|
|
151003419-6 |
8 |
0 |
3 |
10 |
6 |
0 |
|
|
152000616-0 |
10 |
0 |
0 |
0 |
8 |
0 |
|
|
152000226-2 |
6 |
10 |
0 |
0 |
0 |
0 |
|
|
152000502-4 |
10 |
10 |
7 |
4 |
9 |
5 |
|
|
152001502-0 |
10 |
0 |
10 |
10 |
8 |
8 |
|
|
151001656-2 |
10 |
10 |
6 |
9 |
9 |
9 |
|
|
152000293-9 |
10 |
0 |
4 |
0 |
9 |
10 |
|
|
152000120-7 |
10 |
0 |
7 |
10 |
9 |
4 |
|
|
152006025-4 |
10 |
0 |
5 |
10 |
7 |
0 |
|
|
152000331-5 |
8 |
0 |
3 |
9 |
10 |
10 |
|
|
Turma Conceitos por Letras
Conceitos Individuais - Avaliações principais
Conceitos
Matrícula |
A1
|
142003344-1 |
D
|
141005012-2 |
0
|
142001814-0 |
D
|
142001213-4 |
D
|
142002143-5 |
B
|
142001834-5 |
0
|
142003393-0 |
0
|
142001425-0 |
0
|
132005743-8 |
D
|
121003322-4 |
X
|
Consolidação - Avaliações principais
Consolidação
Conceito |
A1
|
A |
0%
|
B |
10%
|
C |
0%
|
D |
40%
|
Ausentes |
50%
|
Conceitos Individuais - Avaliações secundárias
Conceitos
Matrícula |
L1 |
D1 |
L2 |
L3 |
L4 |
L5 |
T7 |
T8
|
142003344-1 |
C |
A |
X |
X |
X |
X |
|
|
141005012-2 |
X |
X |
X |
X |
X |
X |
|
|
142001814-0 |
A |
X |
C |
C |
C |
X |
|
|
142001213-4 |
C |
A |
X |
X |
X |
B |
|
|
142002143-5 |
C |
X |
X |
X |
B |
C |
|
|
142001834-5 |
X |
X |
X |
X |
X |
X |
|
|
142003393-0 |
X |
X |
X |
X |
X |
X |
|
|
142001425-0 |
X |
X |
X |
X |
X |
X |
|
|
132005743-8 |
X |
X |
X |
X |
X |
X |
|
|
121003322-4 |
X |
C |
X |
X |
X |
X |
|
|
Critério de conversão Numérico x Letra
- A: 9,0 a 10,0
- B: 7,5 a 8,9
- C: 6,0 a 7,4
- D: 0,0 a 5,9
|